荣士485协议工位机读卡器开发使用说明 |
|||||||||||||||
发布者: 发布时间: 2022-6-11 | |||||||||||||||
1、 RS-485通讯方式,通讯协议为(19200,N,8,1):波特率19200,数据位8 位,停止位1位。读头接受上位机设备发来的控制指令进行发送卡号、驱动蜂鸣器响、查询读头的设备号、更改读头的设备号等。
接线说明:
直接串口的控制方法: 1、 读卡 发送:0xAA,0xAA,机号低字节,机号高字节,0xD2(命令字) 如从2号机读卡,应发送0xAA,0xAA,0x02,0x00,0xD2(命令字) 注:设备机号为1~65535,每个设备都要设定成一个固定的机号,如何设定可运行我们提供的测试程序。“0x”表示十六进制数。 有卡时返回:0x69,0xD2,卡号字节0,字节1,字节2,字节3,字节4,5个卡号字节的异或和校验码。 如返回0x69, 0xD2, 0x38, 0x00, 0x51, 0xA2, 0x82, 0x49 其中0x49 应等于 0x38 ^ 0x00 ^ 0x51 ^ 0xA2 ^ 0x82,如果不等于表示通讯错误, 卡号字节0属于厂商代码,不需理会。真正的卡号为字节1~字节4。一般ID卡表面上印的卡号为 (字节1×256×256×256+字节2×256×256+字节3×256+字节4)转换成十进前的结果 没卡时返回:0x00 2、 蜂鸣器响一声 发送:0xAA,0xAA,机号低字节,机号高字节,0Xc3(命令字),响声时长高字节,低字节,响声时长高字节和低字节的异或和校验码。 如驱动2号机响一声100毫秒,应发送0xAA,0xAA,0x02,0x00,0xC3,0x00,0x64,0x64。不需返回。 3、 读机号指令 电脑发送:aa aa 0000 a5电脑接收:例如69 A5 02 00 02,69 A5 不需要理会,02 00 为机号,其中02为低字节,最后一个02为前面机会02 00 的异或和校验 4、 读机号指令 电脑发送:aa aa 0000 f0 02 00 fd ff 00 ,00 00 为原机号,必须与和设备机号一致才能改成功,02 00 为新机号,FD FF为02 00 的反码(如ff-02=fd)电脑接收:69 f0 5、 显示及声音指令 0xaa,0xaa,机号低,机号高,0x5a,字符串编码共30个字节,响声长,响声间隔,响声循环次数,校验码 校验码 = 字符串编码共30个字节,响声长,响声间隔,响声循环次数的异或和 0xaa,0xaa,机号低,机号高,0x69
电脑调用动态库的控制方法: 本公司特提供本读头专用的高性能DLL动态库sycomdll.dll,在VC6.0制作,其函数接口如下: 1、 打开串口 函数原型: HANDLE __stdcall PortOpen(int comport) 输入:comport为串口号,如COM1为1 返回:串口句柄,如果打开不成功,返回-1
2、 关闭串口 函数原型: bool __stdcall PortClose(HANDLE comport_handle) 程序关闭之前务必释放串口,以便其他程序使用。 输入:comport_handle打开串口时所返回的句柄 返回:关闭成功返回true,否则false
3、 设定机号(机号为两个字节) 函数原型:int __stdcall SetDeviceNo(HANDLE ComportHandle,int Jihao_old,int Jihao_new); 输入:comport_handle串口句柄,在VB中为Long类型 Jihao_old 原机号,可先读出原机号,必须知道原机号才能更改成新机号,机号范围从1-65535 Jihao_new新机号 返回: 数字-1表示端口未打开 数字0表示读机号成功,机号卡号已存发在JihaoString字符中 数字1表示发送失败 数字2表示通讯超时 数字3表示读机号失败 数字4表示读机号失败
4、 读取机号 函数原型: int __stdcall GetDeviceNo(HANDLE ComportHandle,LPSTR JihaoString) 输入:comport_handl为串口句柄,JihaoString 机号字符串缓冲区,至少需要6个字符的空间 返回: 数字-1表示端口未打开 数字0表示读机号成功,机号卡号已存发在JihaoString字符中 数字1表示发送失败 数字2表示通讯超时 数字3表示读机号失败 数字4表示读机号失败
5、 读卡 (1)号并在形参中返回字符串 int __stdcall GetCardNoForString(HANDLE ComportHandle,int Jihao,LPSTR CardNoString); 输入:comport_handle串口句柄,Jihao 原机号 CardNoString字符串缓冲区,至少需要10个字符的空间 返回: 数字-1表示端口未打开 数字0表示读卡号成功,卡号已存发在JihaoString字符中 数字1表示发送失败 数字2表示通讯超时 数字3表示读机号失败 数字4表示读机号失败
(2)读取卡号并在形参中返回五字节unsigned char数组 int __stdcall GetCardNoForByte(HANDLE ComportHandle,int Jihao,unsigned char * CardNoBuf); 输入:comport_handle串口句柄,Jihao 原机号 CardNoBuf卡号字节缓冲区,至少需要5个字节空间,在VB中为byte型 返回: 数字-1表示端口未打开 数字0表示读卡成功,卡号已存发在CardNoBuf中 数字1表示发送失败 数字2表示通讯超时 数字3表示没寻到卡
6、 驱动蜂鸣器响 x毫秒 int __stdcall SetBeep(HANDLE ComportHandle,int Jihao,int BeepXms); 输入:comport_handle串口句柄 Jihao 机号 BeepXms响铃持续时间 返回:数字0表示成功 数字1表示发送失败
7、 驱动蜂鸣器,循环z次:响x个20毫秒,停y个20毫秒 int __stdcall SetBeepEx(HANDLE ComportHandle,int Jihao,int beeptimes,int beepinterval,int loopcount); 输入:comport_handle串口句柄,在VB中为Long类型 Jihao 机号 beeptimes 响铃持续时间 beepinterval停顿时间 loopcount循环次数 返回::数字0表示成功 数字1表示发送失败
8、关闭蜂鸣器 int __stdcall CloseBeep(HANDLE ComportHandle,int Jihao); 输入:comport_handle串口句柄,在VB中为Long类型 Jihao 机号 返回:数字0表示成功 数字1表示发送失败
9、同时读取卡号及键盘码 int __stdcall GetCARDNO_KeyInput(HANDLE ComportHandle,int Jihao,LPSTR CardNoString,LPSTR KeyInputString);
10、同时显示 int __stdcall SetDispFull(HANDLE ComportHandle,int Jihao,LPSTR DispString);
11、精准的延时 __stdcall Delay_ms(DWORD xms);
12、同时显示和响声 int __stdcall SetDispFull_BeepEx(HANDLE ComportHandle,int Jihao,LPSTR DispString,int beeptimes,int beepinterval,int loopcount);
|
|||||||||||||||
上一篇:Android安卓读写NFC Ntag标签 | 下一篇:OUR_IDR.dll动态库使用说明 | ||||||||||||||