一. 概述
CAN与上位机通信,波特率5K;使用标准帧;帧ID用于存放设备地址、应答和是否分帧标志,当设备地址为00时为广播帧。
二.基本功能
1. 基站往上位机发送卡号信息
单向卡:
基站接收到卡号,往上位机发送的格式如下:
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
设备地址
|
应答
|
分帧
|
字节卡号信息
|
电量信息
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解释如下:
l 设备地址:对应的读卡器的设备号,范围(1到0x7F);
l 应答:下位机往上位机发送数据,此位为1;
l 分帧:当一帧足够写下所有数据,不用分成多帧时,此两位设定为0和0;
l 两字节卡号信息:读取到的卡号(BCD码);
l 一个字节电量信息:字节的低四位表示电量,高四位是低四位的反码。0---表示电量2.1V, F---表示电量3.6V,每增加“1”,电压增加0.1V,依次类推,注意字节应符合高四位是低四位的反码的规则
例:设备地址为7D的基站检测到第522号卡,电量为3.6V,往上位机发送的信息如下:
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
7D
|
1
|
0
|
0
|
05
|
22
|
0F
|
|
|
|
|
双向卡:
基站接收到卡号,往上位机发送的格式如下:
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
设备地址
|
应答
|
分帧
|
字节卡号信息(带电量)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解释如下:
l 设备地址:对应的读卡器的设备号,范围(1到0x7F);
l 应答:下位机往上位机发送数据,此位为1;
l 分帧:当一帧足够写下所有数据,不用分成多帧时,此两位设定为0和0;
l 两字节卡号信息(带电量):第一个字节高两位为电池信息( 00表示电池电量大于3.3V、11表示电池电量大于2.9V,小于3.3V、 10 表示电池电量大于2.5V,小于2.9V、 01表示电压低于2.5V,需更换电池),其余14位二进制为识别卡卡号(具体见后附件)。
例:设备地址为7D的基站检测到第1234号卡,电量大于3.3V,往上位机发送的信息如下:
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
7D
|
1
|
0
|
0
|
04
|
D2
|
|
|
|
|
|
2. 上位机应答
不管单向还是双向,上位机向下发送协议不变。
上位机接收到卡号信息后,往对应基站回发卡号对应的姓名以及当前时间,格式如下:
|
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
帧号
|
含义
|
设备地址
|
应答
|
分帧
|
字节1
|
字节2
|
字节3
|
字节4
|
字节5
|
字节6
|
字节7
|
字节8
|
1
|
姓名
|
设备地址
|
0
|
10
|
4~8字节国标码,表示2~4个汉字,多余字节补0,首字节不能是0
|
2
|
卡号
|
设备地址
|
0
|
11
|
识别卡编码有两种方式:
单向:2字节BCD码,表示4位卡号
双向:2字节的HEX码,表示5位卡号
|
3
|
身份证号前16位
|
设备地址
|
0
|
11
|
8字节BCD码,表示身份证号的前16位,
|
4
|
身份证号后2位
|
设备地址
|
0
|
11
|
1字节BCD码,表示身份证号的后2位(其余补0)
|
5
|
工种前8字节
|
设备地址
|
0
|
11
|
4~16字节国标码,表示2~8个汉字,多余字节补0
|
6
|
工种后8字节
|
设备地址
|
0
|
11
|
7
|
考勤卡电源
|
设备地址
|
0
|
11
|
4~8字节国标码,表示2~4个汉字,多余字节补0
|
8
|
时间
|
设备地址
|
0
|
01
|
秒
|
分
|
时
|
日
|
月
|
00
|
00
|
00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解释如下:
l 设备地址:对应的读卡器的设备号,范围(1到0x7F);
l 应答:上位机发送数据,此位为0;
l 分帧:需要两帧,第1帧是起始帧,此两位分别1和0;第2帧是中间帧此两位分别1和1;最后是结束帧,此两位分别为0和1;
l 单向与双向卡编码方式不同。
双向卡编码格式:BAT/ID_H + ID_L (两个字节)
ID_H + ID_L:十四位二进制, 范围1-16382(1-0x3FFE)
BAT:电池电量信息,第二个字节的最高两位(可跳过不解析)
例: 04 D2 表示ID号为“1234”的卡
27 0F 表示ID号为“9999“的卡
l 两字节数据:为姓名的国标码(每两个字节表示一个汉字);
l 秒、分、时、日、月:为上位机的当前时间; 时间同样使用BCD码
例:上位机要发送522号卡信息,当前时间为10月5日13时25分30秒,522号卡是李四,李对应的国标码为C0EE,四的对应国标码为CBC4,上位机应答如下:
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
7D
|
0
|
1
|
0
|
C0
|
EE
|
CB
|
C4
|
-
|
7D
|
0
|
0
|
1
|
30
|
25
|
13
|
05
|
10
|
|
|
|
三.其它功能
1. 误码率测试功能
当基站设备地址的第8位置为高电平时启动该功能,这时基站将马上把从上位机接收到的数据原封不动的发回。
2. 时钟同步指令
时钟同步每天一次或两次(系统设置决定),上位机向各基站下发系统时钟同步指令,即将系统当前时钟写入各基站,命令格式如下:
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
设备地址
|
应答
|
分帧
|
秒
|
分
|
时
|
日
|
月
|
年
|
星期
|
|
|
|
|
|
|
|
|
|
|
|
解释如下:
l 设备地址:对应的读卡器的设备号,在此使用广播的形式让所有基站都接收,为00;
l 应答:上位机发送数据,此位为0;
l 分帧:当一帧足够写下所有数据,不用分成多帧时,此两位设定为0和0;
l 秒、分、时、日、月、年、星期:为上位机的当前时间;
l 星期解析:00对应星期日, 01对应星期一, 02对应星期二, 03对应星期三, 04对应星期四, 05对应星期五, 06对应星期六
l 此帧使用BCD码
例:将系统当前时间2008年10月5日13点25分30秒,星期日写入各基站:
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
00
|
0
|
0
|
0
|
30
|
25
|
13
|
05
|
10
|
20
|
08
|
00
|
3. 当检卡分站不检卡时
上位机向显示终端发送:各基站设备当前人员数量及井下总人数,每一包最多四个分站数据,每包最多30帧,格式如下:
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
设备地址
|
应答
|
分帧
|
字节1
|
字节2
|
字节3
|
字节4
|
字节5
|
字节6
|
字节7
|
字节8
|
设备地址
|
0
|
10
|
前两个个字节为00 00,表示发送的是不检卡时的数据,开始不为00 00,则表示发送的是检卡时的数据;接下来三字节BCD码,表示总人数
|
设备地址
|
0
|
11
|
秒
|
分
|
时
|
日
|
月
|
(当前系统时间)
|
设备地址
|
0
|
11
|
2个字节BCD码,表示此包第1个分站号
|
设备地址
|
0
|
11
|
4~24字节国标码,表示2~12个汉字,多余字节补0
(表示分站所处地点)
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
4~24字节国标码,表示2~12个汉字,多余字节补0
(表示分站所处区域)
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
三字节BCD码,表示当前分站人数
|
设备地址
|
0
|
11
|
2个字节BCD码,表示此包第2个分站号
|
设备地址
|
0
|
11
|
4~24字节国标码,表示2~12个汉字,多余字节补0
(表示分站所处地点)
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
4~24字节国标码,表示2~12个汉字,多余字节补0
(表示分站所处区域)
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
三字节BCD码,表示当前分站人数
|
设备地址
|
0
|
11
|
2个字节BCD码,表示此包第3个分站号
|
设备地址
|
0
|
11
|
4~24字节国标码,表示2~12个汉字,多余字节补0
(表示分站所处地点)
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
4~24字节国标码,表示2~12个汉字,多余字节补0
(表示分站所处区域)
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
三字节BCD码,表示当前分站人数
|
设备地址
|
0
|
11
|
2个字节BCD码,表示此包第4个分站号
|
设备地址
|
0
|
11
|
4~24字节国标码,表示2~12个汉字,多余字节补0
(表示分站所处地点)
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
4~24字节国标码,表示2~12个汉字,多余字节补0
(表示分站所处区域)
|
设备地址
|
0
|
11
|
设备地址
|
0
|
11
|
设备地址
|
0
|
01
|
三字节BCD码,表示当前分站人数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解释如下:
l 设备地址:对应的显示终端的设备号,范围(1到0x7F);
l 应答:上位机发送数据,此位为0;
l 分帧:需要两帧,第1帧是起始帧,此两位分别1和0;第2帧是中间帧此两位分别1和1;最后是结束帧,此两位分别为0和1;
4.上位机发送祝福语
上位机向显示终端发送祝福语,可以向指定终端发送,也可以进行广播(设备地址为00时为广播)
帧ID(11位)
|
帧数据(8字节)
|
高8位
|
2
|
1
|
0
|
设备地址
|
应答
|
分帧
|
字节1
|
字节2
|
字节3
|
字节4
|
字节5
|
字节6
|
字节7
|
字节8
|
设备地址
|
0
|
10
|
前两个个字节为0xFF 0xFF指示此帧为祝福语
国标码,表示汉字多余字节补0
|
设备地址
|
0
|
11
|
国标码,表示汉字多余字节补0
|
设备地址
|
0
|
01
|
国标码,表示汉字多余字节补0
|
|
|
|
|
|
|
|
|
|
|
|
|
解释如下:
l 前两个个字节为0xFF 0xFF指示此帧为祝福语
l 设备地址:对应的显示终端的设备号,范围(1到0x7F),为00时表示进行广播,否则表示发向指定终端。
l 应答:上位机发送数据,此位为0;
l 一条祝福语最多28个中文字
分帧:需要两帧,第1帧是起始帧,此两位分别1和0;第2帧是中间帧此两位分别1和1;最后是结束帧,此两位分别为0和1;
|