Unity之身份证读取dll调用

发布时间:2019-07-09 10:32:15  访问次数:

公司最近接了一个考试训练平台的项目。其中一个需求是要身份证读取进行考试。我们在淘宝一家选择了一个硬件设备,很不幸,这家确实有点坑。跟硬件产品一起过来的dll文件竟然是过期版本。厂家也没有及时更新。我们主动联系的客服,客服才给我们他们的技术人员让我们自己去沟通。技术人员也是非常的屌,爱答不理,随口放下一句自己去官网下载。太多的抱怨也不想说了,只是觉得这个公司的管理层有问题。望各位未来的老板引以为戒。记住客户的体验永远是第一位的。

在他们官网下载的dll文件以及开发文档中,我选择打开的是c#开发文档。在vs直接打开源码项目运行身份读取完全没有问题。可是在导入unity中就不出现读不出中文,每次在unity中读取都是空或者说什么都不显示。但是对于数字还是可以读出。众所周知,unity对中文支持不是很好。所以我猜测这一定是跟读取的字体格式不是正确的姿势。又去查看dll开发文档,Unity之身份证读取dll调用而在demo

程序里这个函数的声明方式是static extern int GetPeopleName(StringBuilder lpBuffer, uint strLen);所以我猜测着一定是跟字符编码方式有关系。unity难道不支持ANSI编码方式?这个需要以后去验证下。于是我改变数据存储方式,将数据存储到byte数组中,函数声明方式改为static extern int GetPeopleName([Out]byte[] strTmp, uint strLen);然后在程序中将获取的数据转换成字符串类型。通常我们都是用UTF8编码格式进行转换获取。可是在本项目中用这种方式转换的字符串并不能在unity中很好的显示。于是我尝试性的把c#提供的几个编码方式全部试了一遍。果然,在最不起眼的defalut模式下,文字在unity中显示出来了。好神奇的unity。

其实本篇博客遇到的技术难点并不大。但是我觉得这个解决问题的思路值得去学习。想要去调用活用dll或者相关函数,必须深入解读开发文档,了解内部原理。然后一步一步进行测试寻找问题的来源。我觉得对以后解决问题会有一个很大的帮助。毕竟,在这个社会,会编程的程序员很多,也很容易。能解决问题的程序员还是很少,很值钱。做一个不推卸,不逃避,能解决问题的工程师。这是我工作的座右铭。

最近比较烦。感觉被我喜欢的女生抛弃了。呵呵,永远叫不醒一个假装睡觉的人。就这样吧。世界那么大,美女那么多,况且自己也并不差。