TYRM3000动态库接口函数说明文档
1. 主要接口函数
PortOpen (PBYTE pszPort, PBYTE pszBuildCommDCB);
PortClose(void);
SendData (char ch1,char ch2, PBYTE pszReadData, int nReadLen);
CPUPowerOnOrDown (char ch1,char ch2, char mid ,PBYTE pszReadData, int nReadLen);
CPUSendAPDU (char ch1,char ch2, char mid, PBYTE pszSendData ,int nSendLen ,PBYTE
pszReadData, int nReadLen);
2. 函数说明
2.1 PortOpen(PBYTE
pszPort, PBYTE
pszBuildCommDCB)
类 型: bool;
返 回 值:
True--成功, False--失败;
函数描述: 根据参数打开指定串口; 参数定义:
pszPort – 串口号,如”COM1”;
pszBuildCommDCB – 串口设置参数, 如”COM1:9600,n,8,1”;
2.2 PortClose(void)
类 型: bool,
返 回 值:
True--成功, False--失败;
函数描述:关闭串口,必须在调用函数PortOpen之后才能调用;
参数定义:无;
2.3 SendData (char ch1,char ch2, PBYTE
pszReadData, int nReadLen)
类 型: int; 返 回 值:
1--收发正确 2--发送错误 3--接收错误 4--接收数据错误;
函数描述:发送功能指令; 参数定义:
ch1 -- 命令标识1,如41(参照附指令代码) ch2 -- 命令标识2, 如52(参照附指令代码) 注:如下发查询指令,功能码为”c””A”,则ch1=99(“c”的ASCII码)
Ch2=65(“A”的ASCII码)
pszReadData --接收数据缓冲区
nReadLen -- 接收数据缓冲区大小.
2.4 DLL_EXP int PASCAL CPUPowerOnOrDown (char ch1,char ch2, char mid ,PBYTE pszReadData, int nReadLen);
类 型: int; 返 回 值:
1--收发正确 2--发送错误 3--接收错误 4--接收数据错误;
函数描述:CPU卡上电和下电发送指令; 参数定义:
ch1 -- 命令标识1,如41(参照附指令代码) ch2 -- 命令标识2, 如52(参照附指令代码)
注:如下发查询指令,功能码为”c””A”,则ch1=99(“c”的ASCII码)
Ch2=65(“A”的ASCII码)
mid --卡机编号,一般默认为0,即mid='0' pszReadData --接收数据缓冲区
nReadLen -- 接收数据缓冲区大小
示例了:
根据TYRM-3000协议说明书中可知,CPU卡上电指令为\,卡机编号为0,则上电指令下:
缓冲区pszReadData[1024] 接收返回数据nReadLen=300
CPUPowerOnOrDown ('h','B', '0' ,pszReadData[0], 300);
2.5 DLL_EXP int PASCAL CPUSendAPDU (char ch1,char ch2, char mid, PBYTE pszSendData ,int nSendLen ,PBYTE pszReadData, int nReadLen);
类 型: int; 返 回 值:
1--收发正确 2--发送错误 3--接收错误 4--接收数据错误;
函数描述:发送APDU指令函数; 参数定义:
ch1 -- 命令标识1,如41(参照附指令代码) ch2 -- 命令标识2, 如52(参照附指令代码) 注:如下发查询指令,功能码为”c””A”,则ch1=99(“c”的ASCII码)
Ch2=65(“A”的ASCII码)
mid --卡机编号,一般默认为0,即mid='0'
pszSendData --发送的APDU指令缓冲区
nSendLen --发送缓冲区中数据长度
pszReadData --接收数据缓冲区
nReadLen -- 接收数据缓冲区大小
示例:
根据TYRM-3000协议说明书中可知,CPU卡发送APDU指令为\,卡机编号为0, pszSendData={A0 A4 00 00 02 2F E2}
没发送长度nSendLen=7 缓冲区pszReadData[1024] 接收返回数据nReadLen=300
CPUSendAPDU ('h','C', '0' ,pszSendData[0],7,pszReadData[0], 300);
附指令代码:
详细请参考协议说明书,以下只是协议说明书中的一部分(动态库支持部分) 命令 参数及其意义 = ‘A’(0x41) :读状态; = ‘B’ (0x42) :进卡到离开2号光耦,出卡到离开2号光耦(进卡后前退卡) = ‘C’ (0x43):进卡到离开2号光耦,出卡到离开2号光耦,再进到离开2号光耦;(进卡后前持卡) =‘D’ (0x44):进卡到2号光耦 =‘E’ (0x45):进卡到3号光耦 =‘F’ (0x46):进卡到离开门槛 =‘G’ (0x47):进卡到4号光耦 =‘H’ (0x48):进卡到离开1号光耦 =‘I’ (0x49):进卡到5号光耦 =‘J’ (0x4A):进卡到离开2号光耦 进卡/出卡 ‘`’ =‘K’ (0x4B):进卡到离开3号光耦 Pd 0x60 =‘L’ (0x4C):进卡到离开4号光耦 =‘M’ (0x4D):进卡到离开5号光耦 =‘N’ (0x4E):出卡到4号光耦 =‘O’ (0x4F):出卡到3号光耦 =‘P’ (0x50):出卡到2号光耦 =‘Q’ (0x51):出卡到离开5号光耦 =‘R’ (0x52):出卡到1号光耦 =‘S’ (0x53):出卡到离开4号光耦 =‘T’ (0x54):出卡到门槛 =‘U’ (0x55):出卡到离开3号光耦 =‘V’ (0x56):出卡到离开2号光耦 =‘W’ (0x57):出卡到离开2号光耦,再进到2号光耦(前持卡) P1:电源电压;P2:光耦状态;P3:1磁道状态;P4:2磁道状态;P5:3磁道状态;P6:Mifare1状态;P7:IC卡状态;P8:SAM卡状态;P9:版本号; *光耦状态字:BIT7:IC卡电磁铁状态;BIT6:门头电磁铁状态;BIT5:门头开关状态;BIT4:5号光耦状态;BIT3:4号光耦状态;BIT2:3号光耦状态;BIT1:2号光耦状态;BIT0:1号光耦状态; 应答内容及其意义 =‘X’ (0x58):出卡到离开2号光耦,再进到离开2号光耦(往复) =‘Y’ (0x59):出卡到离开3号光耦,再进卡到5号光耦(走位到接触式IC卡位置) 停卡模式 设置 =‘0’:进卡后前退卡;=‘1’:进卡后前‘.’ 持卡;=‘2’:进卡后卡停止;=‘3’:进Ps 0x2E 卡后停在IC卡读卡位置;=‘4’:进卡后后持卡;=‘5’:进卡后后退卡。 =‘A’:写地址;d0:待写的设备地址号‘a’ Pb (‘0’~‘9’);=‘B’:读“设备地址”、“进0x61 卡模式”和“停卡模式” ‘b’ 0x62 读写地址 P1:设备地址(‘0’~‘9’);P2:进卡模式(‘A’~‘G’);P3:停卡模式(‘0’~‘5’); 复位 复位卡机,返回卡机的状态信息:=‘A’:Pr 机内卡不动作;=‘B’:回收机内卡; =‘C’:退出机内卡; P1:电源电压;P2:光耦状态;P3:1磁道状态;P4:2磁道状态;P5:3磁道状态;P6:Mifare1状态;P7:进卡模式;P8:停卡模式;P9:版本号; 查状态 ‘c’ 0x63 ‘A’ 查右侧所述各状态 卡操作 =‘A’:前退卡;=‘B’:前持卡;=‘C’:‘d’ Pc 后退卡;=‘D’:后持卡;=‘E’:取消前0x64 一次进卡命令;=‘F’:禁止进卡; 设置 进卡模式 ‘e’ 0x65 Pi =‘A’:检测到“门头开关”直接进卡;=‘B’:检测到“门头开关+磁信号”直接进卡;=‘C’:接收到命令后,检测到“门头开关”进卡;=‘D’:接收到命令 后,检测到“门头开关+磁信号”进卡;=‘E’:禁止进卡;=‘F’:检测到“磁信号”直接进卡;=‘G’: 接收到命令后,检测到“磁信号”进卡; P1:1磁道状态;P2:2磁道状态;P3:3磁道状态; *磁卡的磁道状态: ‘0’:没有错误;‘1’ :读到正确数据;‘2’ :前导码错误;‘3’ :尾随码错误;‘4’ :LRC错误;‘5’:奇校验错误;‘6’:空磁道错误; P1 P2:卡状态 = 0x9000:正确执行; 磁卡命令 =‘A’:卡进卡到读卡位置;=‘B’:卡进卡到读卡位置,如果读失败,则往复一次重读;=‘C’:往复一次重读;‘D’:清磁道数据;=‘E’:读1、2、3磁道‘f’ Pm 数据; ‘F’:读1磁道数据;‘G’:读20x66 磁道数据;‘H’:读3磁道数据;‘I’:读1、2磁道数据;‘J’:读2、3磁道数据;‘K’:读1、3磁道数据;=‘L’:读1、2、3磁道数据,并清除数据; ‘h’ 0x68 Pi =‘A’:IC卡进卡到读卡位置; =‘B’:CPU卡上电(d0:卡座编号) CPU卡 =‘C’:CPU卡下电(d0:卡座编号); =‘D’:发送命令给CPU卡(d0:卡座编号:d1~:命令); ; = 0x6100:数据太多; = 0x6282:已到文件尾部; = 0x6500:EDC或写错误; = 0x6900:不能处理; = 0x6A00:DF ID或DF名已经存在,或文件未注册,或EF-ID不正确; = 0x6A81:功能不支持; = 0x6A84:内存不足; = 0x6B00:P1/P2参数错误; = 0x6D00:INS错误;