当前位置:编程学习 > C#/ASP.NET >>

C#读取二代身份证(精伦机)ReadBaseInfos返回-4 是什么原因造成的

C#读取二代身份证(精伦机)ReadBaseInfos返回-4 是什么原因造成的
private static extern int ReadBaseInfos(StringBuilder Name, StringBuilder Gender, StringBuilder Folk, StringBuilder BirthDay,
        StringBuilder Code,StringBuilder Address, StringBuilder Agency, StringBuilder ExpireStart, StringBuilder ExpireEnd);
 StringBuilder Name = new StringBuilder(31);
            StringBuilder Gender = new StringBuilder(3);
            StringBuilder Folk = new StringBuilder(10);
            StringBuilder BirthDay = new StringBuilder(9);
            StringBuilder Code = new StringBuilder(19);
            StringBuilder Address = new StringBuilder(71);
            StringBuilder Agency = new StringBuilder(31);
            StringBuilder ExpireStart = new StringBuilder(9);
            StringBuilder ExpireEnd = new StringBuilder(9);

int intReadBaseInfosRet = ReadBaseInfos(Name, Gender, Folk, BirthDay, Code, Address, Agency, ExpireStart, ExpireEnd);
--------------------编程问答-------------------- 你自己声明了一个函数,并不是dll中导入的,调个P呀
用string就行了,无需StringBuilder --------------------编程问答-------------------- [DllImport("Sdtapi.dll")]
private static extern int ReadBaseInfos(StringBuilder Name, StringBuilder Gender, StringBuilder Folk, StringBuilder BirthDay,
  StringBuilder Code,StringBuilder Address, StringBuilder Agency, StringBuilder ExpireStart, StringBuilder ExpireEnd);
 StringBuilder Name = new StringBuilder(31);
  StringBuilder Gender = new StringBuilder(3);
  StringBuilder Folk = new StringBuilder(10);
  StringBuilder BirthDay = new StringBuilder(9);
  StringBuilder Code = new StringBuilder(19);
  StringBuilder Address = new StringBuilder(71);
  StringBuilder Agency = new StringBuilder(31);
  StringBuilder ExpireStart = new StringBuilder(9);
  StringBuilder ExpireEnd = new StringBuilder(9);

int intReadBaseInfosRet = ReadBaseInfos(Name, Gender, Folk, BirthDay, Code, Address, Agency, ExpireStart, ExpireEnd);
--------------------编程问答-------------------- dll导入了  就是intReadBaseInfosRet 返回4 其它返回的参数都是空的 --------------------编程问答-------------------- 用新中新的吧。以前用这个好象不太稳定后来就换新中新的了。
不知道后来改了没有。
一般买设备我自己很少写代码。直接找他们技术要。
支持c# 的代码是最基础的。问他们要。不给投诉他。 --------------------编程问答-------------------- 接口原型是怎么样的?
或C++ Demo是怎么调用的?

贴出来大家好帮你解决问题; --------------------编程问答-------------------- [DllImport("name",........................)] --------------------编程问答-------------------- 没C++ Demo只有Sdtapi.dll文件 --------------------编程问答-------------------- 原    型3:int ReadBaseInfos( char * Name, char * Gender, char * Folk,
char *BirthDay, char * Code, char * Address,char *Agency, char * ExpireStart,char* ExpireEnd) 
说    明:本函数用于读取卡中基本信息,包括文字信息与图像信息。文字信息以字符串格式输出。照片信息被解码后存为文件photo.bmp,身份证正面图片1.jpg,身份证反面图片2.jpg(在当前工作目录下)。
参    数: 
Name [out] 字符型指针,指向姓名信息。需要在调用时分配内存,字节数不小31。
Gender [out] 字符型指针,指向性别信息(男或者女)。需要在调用时分配内存,字节数不小3。
Folk [out] 字符型指针,指向民族信息。需要在调用时分配内存,字节数不小10。
BirthDay [out] 字符型指针,指向出生日期信息。需要在调用时分配内存,字节数不小9,前四位为出生年,第5位到第6位是出生月,后两位是出生日,格式为:CCYYMMDD。
Code [out] 字符型指针,指向身份证号码信息。需要在调用时分配内存,字节数不小19。
Address [out] 字符型指针,指向地址信息。需要在调用时分配内存,字节数不小71。
Agency [out] 字符型指针,指向签证机关信息。需要在调用时分配内存,字节数不小31。
ExpireStart [out] 字符型指针,指向有效期起始日期信息。需要在调用时分配内存,字节数不小9, 格式为:CCYYMMDD。
ExpireEnd [out] 字符型指针,指向有效期截至日期信息。需要在调用时分配内存,字节数不小9,格式为:CCYYMMDD,有效期为长期的表示为汉字“长期”。
--------------------编程问答-------------------- 这是精伦身份证二次开发接口说明V3.2说明文档写的 我是按它的方法但返回4 参数返回的都是null --------------------编程问答-------------------- 跟你说了:用string --------------------编程问答-------------------- 还是返回的都是4 参数返回的都是null --------------------编程问答-------------------- 调用Authenticate了? --------------------编程问答-------------------- 问题解决了吗,我也急哟,同样的问题 --------------------编程问答-------------------- 同问,这个问题有没有最终解决?我也是一样的问题,怎么刷都是返回4,重点是这些方法在文档里面写的都只返回0或1的。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,