函数名 int CVR_Scan (int ScanType,int ScanMode, int iDirect,IDCARD_ALL *PIDCARD);出口参数 PIDCARD IDCARD_ALL 扫描结果 见结构定义例子:CVR_Scan (0,1, 0, PIDCARD);
[System.Runtime.InteropServices.DllImport("CVR100Z562SDK.dll", EntryPoint = "CVR_Scan", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = false)]
public static extern int CVR_Scan(int ScanType, int ScanMode, int iDirect, "");typedef struct
{
char name [40]; //姓名
char SurnameCH[100]; //中文姓
char nameCH[100]; //中文名
char sex[10]; //性别
char Gender[10]; //性别(英文)
char birthday[50]; //出生日期
char people[20]; //民族
char signdate[50]; //发证日期
char validterm[50]; //有效期限
char address[200]; //地址
char number[40]; //身份证号码
char organs[50]; //发证机关
char SurnameEN[100]; //英文姓(汉语拼音)
char nameEN[100]; //英文名(汉语拼音)
char ENfullname[40]; //英文姓名
char Nationality[200]; //国籍
char id[100]; //证件号码
char Leavetime[50]; //离开时间
char placeCH[100]; //签发地点中文
char placeEN[100]; //签发地点英文
char BirthplaceCH[100]; //出生地中文
char BirthplaceEN[100]; //出生地英文
char szCodeOne[256]; //第一行代码识别结果
char szCodeTwo[256]; //第二行代码识别结果
char szCodeThree[256]; //第三行代码识别结果
char Permitnumber_number[40]; //港澳证件号码
char Vocational[200]; //职业
char DocumentsCategory[100]; //证件类别
char Other[200];
}IDCARD_ALL;
这是一个调用C++的开发文档 由于刚搞窗体程序 不懂怎么掉用 也没给个开发案例 求解上面红色的引号里我要怎么弄 才能直接
返回的时候我可以这样调用 CVR_Scan (0,1, 0, PIDCARD);
[System.Runtime.InteropServices.DllImport("CVR100Z562SDK.dll", EntryPoint = "CVR_Scan", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = false)]
public static extern int CVR_Scan(int ScanType, int ScanMode, int iDirect, "");typedef struct
{
char name [40]; //姓名
char SurnameCH[100]; //中文姓
char nameCH[100]; //中文名
char sex[10]; //性别
char Gender[10]; //性别(英文)
char birthday[50]; //出生日期
char people[20]; //民族
char signdate[50]; //发证日期
char validterm[50]; //有效期限
char address[200]; //地址
char number[40]; //身份证号码
char organs[50]; //发证机关
char SurnameEN[100]; //英文姓(汉语拼音)
char nameEN[100]; //英文名(汉语拼音)
char ENfullname[40]; //英文姓名
char Nationality[200]; //国籍
char id[100]; //证件号码
char Leavetime[50]; //离开时间
char placeCH[100]; //签发地点中文
char placeEN[100]; //签发地点英文
char BirthplaceCH[100]; //出生地中文
char BirthplaceEN[100]; //出生地英文
char szCodeOne[256]; //第一行代码识别结果
char szCodeTwo[256]; //第二行代码识别结果
char szCodeThree[256]; //第三行代码识别结果
char Permitnumber_number[40]; //港澳证件号码
char Vocational[200]; //职业
char DocumentsCategory[100]; //证件类别
char Other[200];
}IDCARD_ALL;
这是一个调用C++的开发文档 由于刚搞窗体程序 不懂怎么掉用 也没给个开发案例 求解上面红色的引号里我要怎么弄 才能直接
返回的时候我可以这样调用 CVR_Scan (0,1, 0, PIDCARD);
int CVR_Scan (int ScanType,int ScanMode, int iDirect,ref IDCARD_ALL PIDCARD);
另外你的结构很简单,虽然看起来大,统统用byte数组代替,并为每一个结构变量设置大小在传递public struct IDCARD_ALL
{
public byte[] name; //姓名
public byte[] SurnameCH; //中文姓
public byte[] nameCH; //中文名
.....
.....
.....
}先分配大小,在传递
试试
我怎么调用呢 CVR_Scan (0,1, 0, PIDCARD); 这个写提示有错误的 PIDCARD 调用的时候还要定义什么不?
调用的时候,你先new一个IDCARD_ALL结构对象
然后是对该结构中所有变量的初始化。。IDCARD_ALL ia = new IDCARD_ALL();
ia Init调用:CVR_Scan (1,2,3,ref ia);
例子:CVR_Scan (0,1, 0, PIDCARD); 例子里好像没有ref 这个
1、先把C++的结构体在C#中进行映射:[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct IDCARD_ALL
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
public String name;//姓名
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String SurnameCH;//中文姓
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String nameCH;//中文名
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
public String sex;//性别
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
public String Gender;//性别(英文)
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public String birthday;//出生日期
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public String people;//民族
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public String signdate;//发证日期
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public String validterm;//有效期限
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
public String address;//地址
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
public String number;//身份证号码
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public String organs;//发证机关
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String SurnameEN;//英文姓(汉语拼音)
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String nameEN;//英文名(汉语拼音)
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
public String ENfullname;//英文姓名
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
public String Nationality;//国籍
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String id;//证件号码
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public String Leavetime;//离开时间
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String placeCH;//签发地点中文
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String placeEN;//签发地点英文
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String BirthplaceCH;//出生地中文
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String BirthplaceEN;//出生地英文
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public String szCodeOne;//第一行代码识别结果
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public String szCodeTwo;//第二行代码识别结果
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public String szCodeThree;//第三行代码识别结果
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
public String Permitnumber_number;//港澳证件号码
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
public String Vocational;//职业
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public String DocumentsCategory;//证件类别
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
public String Other;
}
public static extern int CVR_Scan(int ScanType, int ScanMode, int iDirect, ref IDCARD_ALL pIDCARD);剩下的就是你在C#中的调用了。