品牌 | 强盛 | 型号 | QS |
配件类型 | 附件 |
数据服务器二次开发说明
本服务器连接电脑以USB转串口的方式,使用前必须预装驱动程序,然后将其USB口连上电脑,按提示自动安装驱动程序。成功后,打设备管理器,可看到USB转成串口后的串口号。
服务器(左边)连接右边的读卡器可按以下示意图:
服务器COM口通讯参数:19200,N,8,1。
所有的下传上传命令,将按照统一的数据包格式:数据内容的长度,数据内容,数据校验码,例如:X,Y1,Y2,Y3,Z 其中X为3,表示数据内容Y1,Y2,Y3的字节有3个,Z为数据内容Y1,Y2,Y3的异或和,在C语言里为Z = Y1^Y2^Y3,在delphi 里为Z:=Y1 xorY2 xor Y3。
1、 查询服务器的产品信息,此功能常用于扫描搜寻电脑所有串口端口中的所有服务器。
注:以下表格内容中的数据按十六进制的方法表示。
| 长度 | 数据内容 | 校验码 |
查询产品信息 ■操作成功返回:01,产品标识符(单字节),产品标识符(单字节)。 ■没有返回表示该端口不存在服务器或服务器有故障。
产品标识符为一个字节,共8个bit,各bit定义如下:
| 01 | A9
| 数据内容异或和 |
2、 出厂时服务器上不会对任何读卡器进行轮询,必须电脑下传需要轮询的机号到服务器,服务器才知道要轮询的这些机号,这些机号存放在服务器的永久存储器中,我们先将此永久存储器称为该服务器的读卡器机号名册。服务器接收到机号会永久保存,断电不丢失。
注:以下表格内容中的数据按十六进制的方法表示。
| 长度 | 数据内容 | 校验码 |
增加单个机号命令 操作成功返回:01 A4 A4 此机号已存在:01 02 02 机号已满返回:01 03 03 命令格式错误:01 01 01 | 03 | A4,机号低字节,机号高字节
| 数据内容异或和 |
删除单个机号命令 操作成功返回:01 A5 A5 没有此机号:01 02 02 命令格式错误:01 01 01 | 03 | A5,机号低字节,机号高字节 例如:A5 12 34 | 数据内容异或和 |
删除所有机号命令 操作成功返回:01 A6 A6 命令格式错误:01 01 01 | 03 | A6,55,AA | 数据内容异或和 |
读取所有增加在服务器中的机号
操作成功返回:长度,数据,数据的异或和。 数据包包括:当前帧帧号(两个字节,低字节在前),最后帧帧号(两个字节,低字节在前),有效数据。例如:发送 03 A7 00 00 A7,服务器将返回第0帧的数据和最后帧帧号,如果接收正确(异或和校验对),且尚有下一帧,则继续发送命令读取下一帧数据。
| 03 | A7,00,00 其中00,00表示回传数据的帧号,一般是以两个字节表示,低字节在前面,从00,00开始,接着是01,00 | 数据内容异或和 |
查询某机号的读卡器是否在线 在线返回:01 A8 A8 不在线返回:01 02 02 命令格式错误:01 01 01 | 03 | A8,机号低字节,机号高字节 | 数据内容异或和 |
|
|
|
|
|
|
|
|
|
|
|
|
可使用我公司的专用管理软件对服务器的读卡器名册进行管理,如下图
3、 发送显示内容至服务器,再由服务器转发至指定的读卡器
注:以下表格内容中的数据按十六进制的方法表示。
| 长度 | 数据内容 | 校验码 |
发送显示内容到读卡器
无返回 | 21 (相当于十进制的33) | A0,机号低字节,机号高字节,30个字节的显示内容的ASCII码
如:21 a0 02 00 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 a2 输出后,02号读卡器的屏幕将全部显示“0”。
其前15个字节为第一行的显示内容,后15个字节为第二行的显示内容。把汉字或英文字母字符串转为 byte或char单字节类型数组方法,在c、delphi、VB中各有不同。如汉字“中国”,提取出来的ASCII码为D6,D0,B9,FA。数字“1”提示出来的ASCII码为31。 如在VB中转换方法可以参考如下: Dim Value() As Byte | 数据内容异或和 |
4、 发送声响信息至服务器,再由服务器转发至指定的读卡器来驱动读卡器声响
声响时间长短的单位以20毫秒计,如要响一秒,用50个单位来表示声响时间即可。
注:以下表格内容中的数据按十六进制的方法表示。
| 长度 | 数据内容 | 校验码 |
驱动读卡器发出声音
无返回 | 06 | A1,机号低字节,机号高字节,响声时长,停响时长,循环次数 例如: 让要机号为0008的读卡器响三声,其中每次响1秒,停半秒, 如:A1,08,00,32,19,03。 08,00为机号。 32为十进制数50(一秒)的十六进制数。 19为十进制数25(半秒)的十六进制数。 03为循环次数 | 数据内容异或和 |
5、 同时发送显示信息及声响信息至服务器,再由服务器转发至指定的读卡器
声响时间长短的单位以20毫秒计,如要响一秒,用50个单位来表示声响时间即可。
注:以下表格内容中的数据按十六进制的方法表示。
| 长度 | 数据内容 | 校验码 |
同时驱动读卡器显示信息及发出声音
无返回 | 24 (相当于十进制的36) | A2,机号低字节,机号高字节,30个字节的显示内容的ASCII码,响声时长,停响时长,循环次数。 例如: 让机号为0008的读卡器全部显示“0”,并响三声,其中每次响1秒,停半秒, 如:A1,08,00,32,19,03。 08,00为机号。
21 a2 02 00 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 19 03 a2
32为十进制数50(一秒)的十六进制数。 19为十进制数25(半秒)的十六进制数。 03为循环次数 | 数据内容异或和 |
6、 发送控制信息代码(0~255)至服务器,再由服务器转发至指定的读卡器,读卡器根据此控制信息代码执行相应的功作,如作实时门禁系使用时:发送0xF1表开启读卡器上的1号继电器,发送0xE1表停止读卡器上的1号继电器。
注:以下表格内容中的数据按十六进制的方法表示。
| 长度 | 数据内容 | 校验码 |
发送控制代码以驱使读卡器执行相应功能
无返回 | 6
| A3,机号低字节,机号高字节,控制代码,控制时间长度(时间长短的单位以20毫秒计,时间长度为0表示永久)低字节,控制时间长度高字节。 例如: 让机号为0008的读卡器的一号继电器开启一秒,如:A1,08,00,F1,32,00。 08、00为机号,F1为控制代码,32、00为十进制50,50*20为1000毫秒,则1秒。 | 数据内容异或和 |
7、 服务器以轮询的方式不断地读取读卡器的状态,检测到读卡器读卡器缓存中有刷卡信息或键盘信息,将主动将信息发送至电脑上。
注:以下表格内容中的数据按十六进制的方法表示。
| 长度 | 数据内容 | 校验码 |
服务器主动发送刷卡或按键信息至电脑串口 | 不定 | 机号低字节,机号高字节,卡号字节数,键盘码个数,[卡..号],[键盘码串]
如:02,00,04,00,01,02,03,04 第一、二字节02,00为机号,
第三字节04为卡号字节数,表示卡信息有4个字节,如果为0表示没有刷卡
第四字节00为表示键盘码串长度,如果为0表示没有键盘输入。
从第五个字节开始到结束,是卡号信息和键盘码串的集合: 如果第三个字节(卡号字节数)为04,则第五到第八个字节为卡号(如以上例子的01,02,03,04),第九字节到结束为键盘码串信息。
如果第三个字节(卡号字节数)为00,则表示没有卡号信息,第五字节到到结束为键盘码串信息。
如果第四个字节(键盘码个数)为00,表示没有键盘码信息。
[卡..号]为四个字节,可用无符号的长整型数据转换取得。
[键盘码串]为各个按键的ASCII码,如2a,31,32,表示输入的号码为“*12” | 数据内容异或和 |
关于以上命令的说明,不明白的地方,请参考开发包中的例子代码。
操作流程参考:
一、 下载需要轮询的读卡器机号到服务器上,一个服务器最多可轮询255个读卡器。机号将保存在服务器的存储器中,断电不丢失。一般仅在机号有改变时才需要下载。不需要每次开机都设定。
二、 打开串口,处于接收状态。服务器自动轮询所有读卡器,有刷卡或键盘操作时主动发送到串口。串口接收到信息后触发事件程序,执行用户指定的程序后,可发送响声响或显示信息到读卡器。