新中新身份证读卡器接口API使用手册
- 格式:docx
- 大小:23.97 KB
- 文档页数:6
新中新身份证读卡器接口API使用手册12020年4月19日居民身份证验证读卡器接口API使用手册哈尔滨新中新电子股份有限公司12月2 2020年4月19日1.端口类APIint Syn_OpenPort(int iPortID);说明: 打开串口/USB口参数:iPortID [in] 整数,表示端口号。
1-16(十进制)为串口,1001-1016(十进制)为USB口,缺省的一个USB设备端口号是1001。
返回值:成功返回0,错误返回见6。
int Syn_ClosePort(int iPortID);说明: 关闭串口/USB口参数:iPortID [in] 整数,表示端口号。
返回值:成功返回0,错误返回见6。
int Syn_GetCOMBaud(int iComID,unsigned int *puiBaudRate);说明: 查看串口的波特率参数:iPort [in] 整数,表示端口号。
此处端口号必须为1-16,表示串口,参见7.1。
puiBaudRate [out] 无符号整数指针,指向32020年4月19日普通串口当前波特率, 默认情况下为 115200。
返回值:成功返回0,错误返回见6。
int Syn_SetCOMBaud(int iComID,unsigned int uiCurrBaud,unsigned int uiSetBaud);说明: 设置串口的波特率参数:iPort [in] 整数,表示端口号。
此处端口号必须为1-16,表示串口。
uiCurrBaud [in] 无符号整数,调用该API前已设置的业务终端与SAM_V通信的波特率(SAM_V出厂时默认,业务终端与SAM_V通信的波特率为115200)。
业务终端以该波特率与SAM_V通信,发出设置SAM_V新波特率的命令。
uiCurrBaud只能为下列数值之一:115200,57600,38400,19200,9600.如果uiCurrBaud数值不是这些值之一,函数返回0x21;如果已设置的波特率与uiCurrBaud不一致, 则函数返回非零,表示不能设置,调用API不成功。
使用说明市博纳思信息技术二零一四年二月一简介1.1 产品简介感您选择新中新二代阅读器关于识别器,随着全国婚姻登记系统的渐渐普及,为了方便我们各地政府在登记业务中更方便,更节省时间,紫光公司为用户开发了新中新二代识别器,帮助用户更快速更便捷的办理业务。
二功能2.1 主要功能二代识别器的主要作用是,代替人工录入婚姻登记中得各种信息,比如:,等信息,安装好驱动程序,插入硬件即可使用,操作非常的简单。
三安装与使用3.1 安装说明3.1.1 安装驱动程序将产品配件中的光盘插入电脑的光驱中然后打开“我的电脑”找到“可移动存储的设备”下的已识别出来的光盘名称像“110921_***(G:)”双击名称打开盘符如下图:Setup.exe的一个安装文件,双击图标后,如下图:直接点击“下一步”需要修改安装目录时,点击“浏览”选择安装程序的安装目录位置即可系统默认为C盘,点击“下一步”如下图:需要修改安装目录文件夹,点击“浏览”修改即可系统默认为婚姻录入辅助系统,点击“下一步”如下图:为了方便应用,可以选中“创建桌面快捷方式”前方的系统将在桌面创建快捷方式,点击“下一步”如下图:如需要修改图中显示的信息,点击“上一步”进行修改直接点击“安装”程序自动进行安装,安装结束,显示如下图:安装完成系统提示“请确保读卡器连接到正确的USB接口”,并进行程序注册系统默认为选中状态,点击“完成”就完成了驱动程序的安装(注意:如果安装完驱动程序,不想立刻注册,请把复选框中的绿色小勾去掉,点击完成即可。
)安装完成后,桌面上会出现一个“紫光软件全国婚姻登记系统录入辅助系统”的图标如下图:3.1.2 硬件注册完成驱动程序安装后,系统会提示,如下图:看到提示框中的提示,我们需要把二代识别器,插入到电脑的USB接口,确定连接成功后,点击“确定”如下图:输入购买产品时的注册码,点击“注册”即可完成产品注册。
注册成功后,系统提示,如下图:注册成功后,我们即可使用二代读卡器。
这个文件(在开始一程序一 身份证阅读器与电脑连接配置说明
首先把阅读器的配置线和PC 机接好(串口连接PC 机,键盘转接)
身份证 S e tSMC abl e
5. 0 Setw. r :=ii - WinRAR 压能交件
接到解压缩文件,解压缩后安装带有
的文件,
然后双击打开
setSMCable.ex 找 到) 会 看 到
这样的界面,点最下面的蟹堂,找到你接受到的以dat 后缀的文件 打开,把身份证阅读器连接到电脑上(键盘,COM 端口,电源)连
接正确会有两声提示音,最后点配置看右下方 数字0 会逐渐向上加到100的时候,弹出一个配置成功的对话框而且有两声
提示音。
配置完以后还需在终端上做一下修改:输入法右键设置
(注:配置界面中不要打钩)
还原语言栏(R) 任舞栏中
的其他图标购调整语言
选项带位置(A) 设置
(E)...
添加内码输入法
内码键设置
文字服务和帖人语言
设置高级
默认输入语言(D
选择计算机启动时要使用的一个已安装的输入语言。
中文(中国)-简体中文-美式键盘
己安装的服务(X)
为列表中显示的每个输入语言选择服务。
使用“添加”和“删除“按钮来修改这个列表。
首选项
语言栏但)・・•
确定取消
应用(A)
文字服务和督人语言回国
确定取消
找到内码双击
把内码输入法德快捷键改为“切换至中文冲国)-中文简体)-内码Ctrl+Shi£t+O ”然后确定
保存,有个别终端需输入命令保存该设置。
竭诚为您提供优质文档/双击可除二代身份证读卡器接口规范篇一:二代身份证读卡器安装及使用说明二代身份证读卡器安装及使用说明一.说明为方便各旅馆单位更快捷的录入人员信息,现本系统提供第二代居民身份证验证(阅读)设备。
将第二代居民身份证置于机具感应区,与之相连的计算机可即时显示该证件持有人的彩色照片及文字信息,既有利于方便、快捷的录入人员信息,又保证了录入信息的准确性和安全性。
二.安装1.机具连接本系统当前所使用的机具使用usb通讯方式,连接时请必须按照如下顺序连接:1.首先将usb插头插入计算机的usb插口。
2.将mini-b接口插入二代身份证阅读机具插口。
当机具连接后,如果机具上的电源指示灯变为红色,工作指示灯变为绿色,故障灯不亮,表示机具连接成功;如果机具上的电源指示灯变为红色,故障指示灯红灯闪烁或长亮,请确认是否为电源问题,如计算机电源供电不足等。
2.设备驱动安装当机具初次连接至计算机时,需要按照机具的驱动程序。
请按如下顺序操作:1.从旅馆业系统的“从业人员信息登记”或“国内旅客入住登记”页面下载驱动程序usbdriver.exe。
bdriver.exe为自解压格式文件,打开后请指定一个目标文件夹,而后点击“安装”。
3.当机具初次连接至计算机时,将弹出如下页面:4.点击“下一步”,选择第一项“搜索适于我的设备的驱动程序”5.点击“下一步”,选择“指定一个位置”6.点击“下一步”,在弹出的对话框中点击“浏览”按钮,而后在查找文件对话框中选择驱动程序解压后所在目录,并根据当前计算机的系统选择对应目录下的usbdiv.inf文件。
7.选中驱动文件后,点击查找文件框中的“打开”按钮,点击“找到新的硬件设备向导”中的“确定”按钮,点击“下一步”。
8.点击“下一步”,此时即完成驱动程序的安装。
三.使用当安装完驱动程序后,连接好机具,进入旅馆业系统的从业人员信息登记、修改,国内旅客入住登记、修改,此时可以看到程序页面右上角的提示“2代身份证机具连接成功”,同时机具为绿色工作指示灯闪烁,进入寻卡工作状态。
新中新二代身份证读卡器安装调试和使用方法1.二代身份证读卡器的连接和驱动安装①安装身份证读卡器的USB驱动②安装新中新二代身份证验证软件,验证软件装好后会自动在桌面生成一个新中新二代身份证验证系统的快捷方式二代身份证读卡器的连接和驱动安装方法详见随机附送的安装使用说明书,驱动程序和新中新二代身份证验证软件的安装程序在随机附送的光盘里面。
2.二代身份证读卡器的调试方法:①打开两癌筛查系统的两癌筛查健康档案页面;②通过桌面上的快捷方式打开已经安装好的“新中新二代身份证验证系统”如图所示打开新中新二代身份证验证系统后,点击上图中的“录入配置(I)”按钮,弹出如下对话框在该界面进行二代证信息的录入配置:录入方式选择“自动录入”录入窗体选择时先点击“变更”按钮,点击之后会弹出一个提示,点击“确定”,然后将光标放在录入窗体文本框内,再在下面的任务栏中点击①打开的两癌筛查系统,那么录入窗体的文本框中会自动填充进去“两癌筛查系统 - [健康检查档案]”录入信息位置的数据就按照图片的内容去设置,项目名称先选择“姓名”,项目位置选择“1”,点击“增加”按钮,姓名就会填充到录入信息中去,项目名称再选择“身份证号”,项目位置选择“8”,点击“增加”按钮,身份证号就会填充到录入信息中去。
最后点击结束设置;二代身份证读卡器的调试完成。
3.二代身份证读卡器的使用方法使用二代身份证读卡器之前要先打开桌面上的“新中新二代身份证验证系统”并且使用读卡器读取身份证信息时,这个验证系统的软件需一直开启,可以将之最小化①打开两癌筛查系统的两癌筛查健康档案页面,将光标放在“姓名“文本框内②将身份证放在读卡器上,“嘀”的一声响后,读卡器会将姓名和身份证号码读入到相应的文本框中,然后点击一下年龄的文本框,年龄也会自动计算出来。
注意:读卡器读取身份证信息时,当将身份证号信息填充进去后,请迅速将身份证从读卡器上移开,否则读卡器会连续重复的读取身份证的信息,导致信息的错误。
二代身份证读卡器二次开发说明编写目的为了在自行开发的项目中使用“新中新二代身份证读卡器”(以下简称读卡器)获得的二代身份证信息,需要对现有读卡器程序进行二次开发。
准备SDK: 新中新二代证SDK开发包.rar示例代码: “新中新二代证SDK开发包.rar\DLL\测试程序\C#”读卡器型号: DKQ-116D版本号:DU使用方法由于开发包中已提供了相对完整的示例代码,因此本文直接以示例代码中的例子进行讲解。
一、开发前先运行开发包中”\DLL\DLLTestSDK.exe”或者“新中新二代身份证验证系统”以保证读卡器硬件连接及驱动都已正确安装. 或者单独安装驱动程序(一)、“新中新二代身份证验证系统”1. 运行程序2. 在读卡器上扫描二代身份证,在界面上查看是否显示身份证信息(二)、“DLLTestSDK.exe”1. 运行程序2. 点击“自动寻找读卡器”,查看列表框提示信息及”端口号”内容是否被改变3. 点击”使用结构体返回信息”,查看列表框中是否已输出身份证信息.二、将” sdtapi.dll”、” SynIDCardAPI.dll”、” WltRS.dll” 3个文件复制到与程序运行相同目录三、参考示例代码,在自己开发的类中定义结构体”IDCardData”,并声明"SynIDCardAPI.dll"的方法.[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]public string Nation; //名族[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]public string Born; //出生日期[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 72)]public string Address; //住址[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)]public string IDCardNo; //身份证号[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]public string GrantDept; //发证机关[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]public string UserLifeBegin; // 有效开始日期[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]public string UserLifeEnd; // 有效截止日期[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)]public string reserved; // 保留[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]public string PhotoFileName; // 照片路径}/************************端口类API *************************/[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetMaxRFByte", CharSet =CharSet.Ansi)]public static extern int Syn_SetMaxRFByte(int iPort, byte ucByte, int iIfOpen);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetCOMBaud", CharSet = CharSet.Ansi)] public static extern int Syn_GetCOMBaud(int iPort, ref uint puiBaudRate);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetCOMBaud", CharSet = CharSet.Ansi)] public static extern int Syn_SetCOMBaud(int iPort, uint uiCurrBaud, uint uiSetBaud); [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_OpenPort", CharSet = CharSet.Ansi)] public static extern int Syn_OpenPort(int iPort);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ClosePort", CharSet = CharSet.Ansi)] public static extern int Syn_ClosePort(int iPort);/**************************SAM类函数 **************************/[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ResetSAM", CharSet = CharSet.Ansi)] public static extern int Syn_ResetSAM(int iPort, int iIfOpen);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetSAMStatus", CharSet =CharSet.Ansi)]public static extern int Syn_GetSAMStatus(int iPort, int iIfOpen);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetSAMID", CharSet = CharSet.Ansi)] public static extern int Syn_GetSAMID(int iPort, ref byte pucSAMID, int iIfOpen);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetSAMIDToStr", CharSet = CharSet.Ansi)]public static extern int Syn_GetSAMIDToStr(int iPort, ref byte pcSAMID, int iIfOpen);/*************************身份证卡类函数 ***************************/[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_StartFindIDCard", CharSet = CharSet.Ansi)]public static extern int Syn_StartFindIDCard(int iPort, ref byte pucIIN, int iIfOpen); [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SelectIDCard", CharSet =CharSet.Ansi)]public static extern int Syn_SelectIDCard(int iPort, ref byte pucSN, int iIfOpen); [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadBaseMsg", CharSet = CharSet.Ansi)] public static extern int Syn_ReadBaseMsg(int iPort, ref byte pucCHMsg, ref uint puiCHMsgLen, ref byte pucPHMsg, ref uint puiPHMsgLen, int iIfOpen);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadIINSNDN", CharSet = CharSet.Ansi)] public static extern int Syn_ReadIINSNDN(int iPort, ref byte pucIINSNDN, int iIfOpen); [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadBaseMsgToFile", CharSet = CharSet.Ansi)]public static extern int Syn_ReadBaseMsgToFile(int iPort, ref byte pcCHMsgFileName, ref uint puiCHMsgFileLen, ref byte pcPHMsgFileName, ref uint puiPHMsgFileLen, int iIfOpen);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadIINSNDNToASCII", CharSet = CharSet.Ansi)]public static extern int Syn_ReadIINSNDNToASCII(int iPort, ref byte pucIINSNDN, int iIfOpen);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadNewAppMsg", CharSet = CharSet.Ansi)]public static extern int Syn_ReadNewAppMsg(int iPort, ref byte pucAppMsg ,ref uint puiAppMsgLen , int iIfOpen);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetBmp", CharSet = CharSet.Ansi)] public static extern int Syn_GetBmp(int iPort, ref byte Wlt_File);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadMsg", CharSet = CharSet.Ansi)] public static extern int Syn_ReadMsg(int iPortID, int iIfOpen, ref IDCardData pIDCardData);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_FindReader", CharSet = CharSet.Ansi)] public static extern int Syn_FindReader();/***********************设置附加功能函数 ************************/[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetPhotoPath", CharSet =CharSet.Ansi)]public static extern int Syn_SetPhotoPath(int iOption, ref byte cPhotoPath);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetPhotoType", CharSet =CharSet.Ansi)]public static extern int Syn_SetPhotoType(int iType);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetPhotoName", CharSet =CharSet.Ansi)]public static extern int Syn_SetPhotoName(int iType);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetSexType", CharSet = CharSet.Ansi)] public static extern int Syn_SetSexType(int iType);[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetNationType", CharSet =四、调用” Syn_FindReader()”获得读卡器端口号五、如需保存照片调用”Syn_SetPhotoPath”设置照片保存位置,调用”Syn_SetPhotoType()”设置保存格式,调用” Syn_SetPhotoName()”设置文件名规范.六、读取信息:步骤: 打开端口->设置通讯字节数->读取卡信息->指向读到的第一张卡信息->将卡信息填入结构体-> 读取结构体信息参考示例代码:private void button17_Click(object sender, EventArgs e){IDCardData CardMsg = new IDCardData();int nRet,nPort;string stmp;byte[] pucIIN = new byte[4];byte[] pucSN = new byte[8];nPort = Convert.ToInt32(textBox1.Text);if (Syn_OpenPort(nPort) == 0){if (Syn_SetMaxRFByte(nPort,80,0)==0){nRet = Syn_StartFindIDCard(nPort, ref pucIIN[0], 0);nRet = Syn_SelectIDCard(nPort,ref pucSN[0], 0);nRet = Syn_ReadMsg(nPort, 0, ref CardMsg);if (nRet == 0){stmp = Convert.ToString(System.DateTime.Now) + " 姓名:" +;listBox1.Items.Add(stmp);stmp = Convert.ToString(System.DateTime.Now) + " 性别:" +CardMsg.Sex;listBox1.Items.Add(stmp);stmp = Convert.ToString(System.DateTime.Now) + " 民族:" +CardMsg.Nation;listBox1.Items.Add(stmp);stmp = Convert.ToString(System.DateTime.Now) + " 出生日期:" + CardMsg.Born;listBox1.Items.Add(stmp);stmp = Convert.ToString(System.DateTime.Now) + " 地址:" + CardMsg.Address;listBox1.Items.Add(stmp);stmp = Convert.ToString(System.DateTime.Now) + " 身份证号:" + CardMsg.IDCardNo;listBox1.Items.Add(stmp);stmp = Convert.ToString(System.DateTime.Now) + " 发证机关:" + CardMsg.GrantDept;listBox1.Items.Add(stmp);stmp = Convert.ToString(System.DateTime.Now) + " 有效期开始:" + erLifeBegin;listBox1.Items.Add(stmp);stmp = Convert.ToString(System.DateTime.Now) + " 有效期结束:" + erLifeEnd;listBox1.Items.Add(stmp);stmp = Convert.ToString(System.DateTime.Now) + " 照片文件名:" + CardMsg.PhotoFileName;listBox1.Items.Add(stmp);}else{stmp = Convert.ToString(System.DateTime.Now) + " 读取身份证信息错误";listBox1.Items.Add(stmp);}}}else{stmp = Convert.ToString(System.DateTime.Now) + " 打开端口失败";listBox1.Items.Add(stmp);}}。
读卡器介绍读卡器到几个重要函数及参数到用法。
1.st=rd.dc_init(100,115200)第一个参数为串口号第二参数为通讯波特率。
使用的时候要注意串口号是否被占用。
2.st = rd.dc_config_card(&H31) 判断卡的类型参数为卡的类型,默认为I-CodeII3.st = rd.dc_inventory(&H36, 0, 0, rlen) 清点卡的信息,并把长度存入rlen。
第一个参数为读卡器默认的类型不需要更改。
第二个于第三个参数都是默认为0。
第四个参数为卡的数据的长度4.UID = Mid(rd.get_bstrRBuffer_asc, 3, (rlen - 1) * 2)获取UID,从rd.get_bstrRBuffer_asc这个字符串的第三位置开始第一个参数为字符串。
第二个参数为该字符串的第几个位置。
第三个参数为需要截取的长度。
5.st = rd.dc_writeblock(&H22, 0, 1, 4) 往卡里写数据第一个参数为读卡器默认参数(卡的类型)与读的第一个参数相同。
第二个参数为写入的起始位置。
第三个参数为一次性可以写入的块数,该系统规定为1。
第四个参数为将写入的数据分为几段,系统规定为4。
6.st = rd.dc_readblock(&H22, 0, 3, rlen) 从卡里读数据第一个参数为读卡器默认参数(卡的类型)于写的第一个参数相同。
第二个参数为该卡的起始位置。
第三个参数为一次性读取的块数。
第四个参数为该卡的数据的长度。
注意:在给卡里写数据的时候长度必须符合读卡器规定的长度规范,允许写入的最长长度为8位,如果不足8位,系统会自动报错。
当读卡器工作中途断电的话,重新启动读卡器,才能确保它的正常工作。
身份证读取器使用说明1、读取身份证信息调用readsfz对象username姓名usersex性别usercid身份证号usermz民族userbirthday生日yyyy年mm月dd日useraddress地址useragency:颁证机关readsfzmessage():直接读取身份证信息.返回身份证对象showsfzmessage():表明身份证界面,加载信息,回到向份证对象例如:(将以下代码考备到业务界面即可使用)//轻易加载身份证信息functionreadsfzmessage1(){varsfz=readsfz.readsfzmessage();document.getelementbyid('username').value=sfz[ername];document.getel ementbyid('usersex').value=sfz[ersex];document.getelementbyid('userc id').value=sfz[ercid];document.getelementbyid('usermz').value=sfz[re ermz];document.getelementbyid('userbirthday').value=sfz[erbirthday];docume nt.getelementbyid('useraddress').value=sfz[eraddress];document.getel ementbyid('useragency').value=sfz[eragency];}//显示读取身份证信息functionreadsfzmessage2(){varsfz=readsfz.showsfzmessage();document.getelementbyid('username').value=sfz[ername];document.getel ementbyid('username').value=sfz[ername];document.getelementbyid('use rsex').value=sfz[ersex];document.getelementbyid('usercid').value=sfz [ercid];document.getelementbyid('usermz').value=sfz[ermz];document.getelementbyid('userbirthday').value=sfz[erbirthday];docume nt.getelementbyid('useraddress').value=sfz[eraddress];。
(新中新)二代证SDK开发包开发说明一、系统的基本要求a)Windows 98,Windows 2000 Pro,Windows 2000 Server,WinXP,Windows Vista,Windows7b)至少32兆内存(32M RAM or Larger)c)至少10兆空闲硬盘空间(10M Free Hard Disk Space or Larger)d)至少一个空闲普通串口或USB口(视用户需求而定)。
二、SDK函数说明(一)端口类API:Syn_SetMaxRFByte 设置射频适配器最大通信字节数int Syn_SetMaxRFByte (int iPort,unsigned char ucByte,int bIfOpen);参数说明:iPort[in] 整数,表示端口号。
串口0001至0016,USB1001至1016 ucByte[in] 无符号字符,24-255,表示射频适配器最大通信字节数。
iIfOpen[in] 整数,非0表示在API函数内部包含了打开端口和关闭端口函数,0表示在API函数内部不包含了打开端口和关闭端口函数返回值:0 成功其他失败(具体含义参见返回码表)Syn_GetCOMBaud查看串口当前波特率(该函数只用于SAM采用RS232串口的情形,如果采用USB接口则不支持该API)。
int Syn_GetCOMBaud (int iPort,unsigned int * puiBaudRate);参数说明:iPort[in] 整数,表示端口号。
此处端口号必须为1-16,表示串口puiBaudRate[out] 无符号整数指针,指向普通串口当前波特率, 默认情况下为115200。
返回值:0 成功0X01 端口打开失败/端口号不合法0X05 无法获得该SAM的波特率,该SAM串口不可用。
Syn_GetCOMBaudEx查看串口当前波特率(该函数只用于SAM采用RS232串口的情形,如果采用USB接口则不支持该API)。
居民身份证验证读卡器接口API使用手册哈尔滨新中新电子股份有限公司2004年12月1.端口类APIint Syn_OpenPort(int iPortID);说明:打开串口/USB口参数:iPortID[in]整数,表示端口号。
1-16(十进制)为串口,1001-1016(十进制)为USB 口,缺省的一个USB设备端口号是1001。
返回值:成功返回0,错误返回见6。
int Syn_ClosePort(int iPortID);说明:关闭串口/USB口参数:iPortID[in]整数,表示端口号。
返回值:成功返回0,错误返回见6。
int Syn_GetCOMBaud(int iComID,unsignedint*puiBaud Rate);说明:查看串口的波特率参数:iPort[in]整数,表示端口号。
此处端口号必须为1-16,表示串口,参见。
puiBaudRate[out]无符号整数指针,指向普通串口当前波特率,默认情况下为115200。
返回值:成功返回0,错误返回见6。
int Syn_SetCOMBaud(int iComID,unsignedint uiCurrBaud,unsignedint uiSetBaud);说明:设置串口的波特率参数:iPort[in]整数,表示端口号。
此处端口号必须为1-16,表示串口。
uiCurrBaud[in]无符号整数,调用该API前已设置的业务终端与SAM_V通信的波特率(SAM_V出厂时默认,业务终端与SAM_V通信的波特率为115200)。
业务终端以该波特率与SAM_V通信,发出设置SAM_V新波特率的命令。
uiCurrBaud只能为下列数值之一:115200,57600,38400,19200,9600.如果uiCurrBaud数值不是这些值之一,函数返回0x21;如果已设置的波特率与uiCurrBaud不一致,则函数返回非零,表示不能设置,调用API不成功。
uiSetBaud[in]符号整数,将要设置的SAM_V与业务终端通信波特率。
uiSetBaud只能取下列值之一:115200,57600,38400,19200,9600,如果输入uiSetBaud参数不是这些数值之一,函数返回非零,设置不成功,保持原来的波特率不变。
返回值:成功返回0,错误返回见6。
类APIint Syn_GetSAMStatus(int iPortID,int iIfOpen);说明:对SAM_V进行状态检测参数:iPort[in]整数,表示端口号。
参见。
iIfOpen[in]整数,参见。
返回值:成功返回0,错误返回见6。
int Syn_ResetSAM(int iPortID,int iIfOpen);说明:对SAM_V复位参数:iPort[in]整数,表示端口号。
参见。
iIfOpen[in]整数,参见。
返回值:成功返回0,错误返回见6。
int Syn_GetSAMID(int iPortID,unsignedchar*pucSAMID,int iIfOpen);说明:读取SAM_V的编号(十六进制)参数:iPort[in]整数,表示端口号。
参见。
pucSAMID[out]无符号字符串指针,SAM_V编号,16字节。
iIfOpen[in]整数,参见。
返回值:成功返回0,错误返回见6。
int Syn_GetSAMIDToStr(int iPortID,char*pcSAMID,int iIfOpen);说明:读取SAM_V的编号(字符串格式)参数:iPort[in]整数,表示端口号。
参见。
pcSAMID[out]字符串指针,SAM_V编号。
iIfOpen[in]整数,参见。
返回值:成功返回0,错误返回见6。
3.身份证卡类APIint Syn_StartFindIDCard(int iPortID,unsignedchar*pucManaInfo,int iIfOpen); 说明:开始找卡参数:iPort[in]整数,表示端口号。
参见。
pucManaInfo[out]无符号字符指针,证/卡芯片管理号,4个字节。
iIfOpen[in]整数,参见。
返回值:成功返回0,错误返回见6。
int Syn_SelectIDCard(int iPortID,unsignedchar*pucManaMsg,int iIfOpen);说明:选卡参数:iPort[in]整数,表示端口号。
参见。
pucManaMsg[out]无符号字符指针,证/卡芯片序列号,8个字节。
iIfOpen[in]整数,参见。
返回值:成功返回0,错误返回见6。
int Syn_ReadMsg(int iPortID,int iIfOpen,IDCardData*pIDCardData);说明:读取证/卡信息参数:iPort[in]整数,表示端口号。
参见。
iIfOpen[in]整数,参见。
pIDCardData[out]IDCardData类型读出的数据,参见5。
返回值:成功返回0,错误返回见6。
4.附加类APIint Syn_SendSound(int iCmdNo);说明:发送语音参数:iCmdNo[in]声音编号返回值:成功返回0,错误返回见6。
void Syn_DelPhotoFile();说明:删除临时照片文件参数:无返回值:成功返回0,错误返回见6。
5.结构体声明typedefstruct tagIDCardData{char Name[32];数返回值0操作成功或相片解码解码正确-1端口打开失败/端口尚未打开/端口号不合法-2证/卡中此项无内容-3PC接收超时,在规定的时间内未接收到规定长度的数据-4数据传输错误-5该SAM_V串口不可用,只在SDT_GetCOMBaud时才有可能返回-6接收业务终端数据的校验和错-7接收业务终端数据的长度错-8接收业务终端的命令错误,包括命令中的各种数值或逻辑搭配错误-9越权操作-10无法识别的错误-11寻找证/卡失败-12选取证/卡失败-13调用错误-14相片解码错误-15授权文件不存在-16设备连接错误7.注意系统支持的串行端口号:1-16,USB端口号:1001-1016[in]整数,0表示不在该函数内部打开和关闭串口,此时确保之前调用了Syn_OpenPort来打开端口,并且在不需要与端口通信时,调用Syn_ClosePort关闭端口;非0表示在API函数内部包含了打开端口和关闭端口函数,之前不需要调用Syn_OpenPort,也不用再调用Syn_ClosePort。
普通开发中只使用“端口类API”与“身份证卡类API”与“附加类API”就能满足开发需要,使用方法见第10部分实例。
在使用Syn_SendSound函数时请先用Syn_ClosePort函数关闭打开的端口。
包包含文件、、、、8.声音命令暂时未定0.读身份证成功头文件:#ifdef_WIN32#define STDCALL__stdcall#else#define STDCALL#endif#ifndef SDTAPI_#define SDTAPI_#ifdef__cplusplusextern"C"{#endif#pragma pack(1)typedefstruct tagIDCardData{char Name[32];char Sex[4];char Nation[6];char Born[18];char Address[72];char IDCardNo[38];char GrantDept[32];char UserLifeBegin[18];char UserLifeEnd[18];char reserved[38];char PhotoFileName[255];}IDCardData;#pragma pack()/************************端口类API*************************/int STDCALLSyn_GetCOMBaud(int iComID,unsignedint*puiBaud);int STDCALLSyn_SetCOMBaud(int iComID,unsignedint uiCurrBaud,unsignedint uiSetBaud);int STDCALLSyn_OpenPort(int iPortID);int STDCALLSyn_ClosePort(int iPortID);/************************SAM类API*************************/int STDCALLSyn_GetSAMStatus(int iPortID,int iIfOpen);int STDCALLSyn_ResetSAM(int iPortID,int iIfOpen);int STDCALLSyn_GetSAMID(int iPortID,unsignedchar*pucSAMID,int iIfOpen);int STDCALLSyn_GetSAMIDToStr(int iPortID,char*pcSAMID,int iIfOpen);/********************身份证卡类API*************************/int STDCALLSyn_StartFindIDCard(int iPortID,unsignedchar*pucManaInfo,int iIfOpen); int STDCALLSyn_SelectIDCard(int iPortID,unsignedchar*pucManaMsg,int iIfOpen);int STDCALLSyn_ReadMsg(int iPortID,int iIfOpen,IDCardData*pIDCardData);/********************附加类API*****************************/int STDCALLSyn_SendSound(int iCmdNo);void STDCALLSyn_DelPhotoFile();#ifdef__cplusplus}#endif#endif}10.调用实例:调试通过void CSampleDlg::OnButton1(){3]ofByte;pucSN:array[0..7]ofByte;CardMsg:TCard;beginIfOpen:=0;//是否需要打开串口iPort:=1;iRet:=Syn_OpenPort(iPort);ifiRet<>0thenbeginSyn_ClosePort(iPort);Exit;end;iRet:=Syn_StartFindIDCard(iPort,@pucIIN,IfOpen);ifiRet=0thenbeginiRet:=Syn_SelectIDCard(iPort,@pucSN,IfOpen);ifiRet=0thenbeginiRet:=Syn_ReadMsg(iPort,0,CardMsg);ifiRet=0thenbegin:=trim;:=trim;:=trim;:=trim;:=trim;:=trim;:=trim;:=trim;:=trim;:=trim;:=True;:=Syn_SendSound(0); Syn_DelPhotoFile; end;end;end;Syn_ClosePort(iPort); end;。