北洋读写器通信协议v3 0解释.docx
- 文档编号:16906760
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:13
- 大小:33.03KB
北洋读写器通信协议v3 0解释.docx
《北洋读写器通信协议v3 0解释.docx》由会员分享,可在线阅读,更多相关《北洋读写器通信协议v3 0解释.docx(13页珍藏版)》请在冰点文库上搜索。
北洋读写器通信协议v30解释
BY读写器通信协议
V3.20
拟制:
审核:
批准:
时间:
年月日
威海北洋电气集团股份有限公司
1查询消息结构
帧数据格式如下表所示:
帧头
数据长度
设备地址
功能代码
命令序号
数据
CRC校验
1字节
2字节
2字节
2字节
1字节
N字节
2字节
表2-1消息结构
【注】:
1、在后面的命令解释中功能代码和数据段将作为命令整体进行定义和说明。
2、对于RS485组网方式连续的两条命令间间隔最少12个字节时间。
1.1帧头
帧头,表示一条消息的开始,没有实际的意义。
本协议的帧头长度为1个字节,数值固定为0x1B。
当有消息被接收到时,首先判断消息中的帧头,然后根据协议进行数据解析并进行消息合法性判断。
1.2设备地址
设备地址为通信中的从机地址,ID号取值范围为0x0001~0xfffe,当为0xffff时表示广播地址(所有读写器都对主机命令响应)使所有的设备都能识别。
使用广播命令时需要注意采用网络的拓扑结构和具体硬件情况。
1.3数据长度
数据长度为设备地址、功能代码、命令序号及数据的长度,不包含帧头和CRC校验,数据长度最大不应超过595个字节,整帧长度最大不应超过600个字节。
1.4功能域
功能字段由2个字节组成,第一个字节表示信息类型,第二个字节表示此类型设备的功能代码。
信息类型的详细定义见下表2-2所示,而不同类型设备的具体功能代码将在后面各章中分别进行详细说明。
信息类型
含义
0x03
读写器命令
表2-2信息类型定义
当消息从主设备发往从设备时,功能代码域将告知从设备需要执行哪些操作。
例如:
读取门禁控制器的门状态,对门禁控制器进行时间同步等操作。
当从设备执行完主设备指定的行为后,返回消息时,功能域可以用来指示是正确回应,还是有错误发生的异常回应。
当为正确回应时,信息类型字节的高半字节为数值8,当发生异常回应时,表示信息类型字节的高半字节为数值9。
如:
固件升级命令功能号为0x000x02则,正确应答是返回时为0x800x02;错误应答时为0x900x02。
1.5命令序号
表示命令发送的次数标志,发送一条新命令时此域数值增1。
当在预定的时间内未收到从机的应答时,则可认为接收异常,主机重新发送命令,此时序号数值不变,否则序号必须进行+1操作,如从机应答CRC错误,主机接收到后再次发送的命令序号需要+1。
当发送次数到达规定的重发次数后仍未接收到从机的应答时可以认为通信异常,主机可以进行相应的处理或显示。
作为从机,回应主机查询命令时此域的数值应该与接收到的主机命令一致。
注:
主机序号从1开始,当255后序号继续累加时序号再从0开始,以此循环进行。
当命令和ID号与上一次发送的指令相同时通道机将执行重发操作,即将上一次应答的数据作为本次应答数据。
1.6数据域
数据域将给出主机命令从机的具体对象或数据,最大允许512字节。
1.7错误检测域
通信消息的错误检测使用CRC16进行数据校验。
校验域从信息长度字段首字节开始,包括信息长度、读写器编号和信息部分(指功能代码、命令序号和数据3个域)。
采用CRC_CCITT多项式x16+x12+x5+1=0x8408,初始值为0x0000。
以下例程为CRC校验的VC语言代码:
//功能:
返回CRC16校验码
//输入:
pSrc–源字符串指针
//nSrcLen–源字符串长度
//输出:
pDst–目标字符串指针
//返回:
校验位长度
intGetCRC16(constBYTE*pSrc,BYTE*pDst,intnSrcLen)
{
unsignedintcurrentValue=0x0000;
//按位计算校验
for(inti=0;i { currentValue=currentValue^pSrc[i]; for(intj=0;j<8;j++) { if(currentValue&0x0001) { currentValue=(currentValue>>1)^0x8408; } else { currentValue=(currentValue>>1); } } } //校验位 pDst[0]=(~currentValue>>8)&0x00FF; pDst[1]=~currentValue&0x00FF; //返回校验位长度 return2; } 2应答消息结构 应答消息结构与查询消息结构基本完全相同,见下表所示: 帧头 数据长度 设备地址 功能代码 命令序号 数据 CRC校验 1字节 2字节 2字节 2字节 1字节 N字节 2字节 表3-1应答消息结构 帧头域和命令序号域与查询消息完全相同,CRC校验域的计算也与查询消息相同,设置地址为本机地址。 功能代码域的值,当为正确回应时,功能代码段中的第一个字节即信息类型字节的高半字节为数值8,当发生异常回应时,表示信息类型字节的高半字节为数值9。 3指令定义 3.1系统命令 指令列表如下所示: 命令功能号 含义 数据长度 数据 0x000x00 心跳 0x00 0x000x01 获得产品信息 0x00 无 0x000x05 恢复出厂参数 0x00 无 其它 保留 3.2读写器指令列表 命令功能号 含义 数据 总长度字节 系统参数操作指令 0x030x11 保存当前工作参数 无 10 0x030x12 获取当前工作参数 无 10 0x030x14 切换主动工作模式 主动模式控制标志(2字节),以bit位表示置1有效。 低字节各bit位表示如下: Bit0: 读允许标志,暂不支持; Bit1: 写允许标志,暂不支持; Bit2: AFI允许标志; Bit3: EAS允许标志; Bit4: 开关磁场允许标志; Bit5: 静止允许标志; Bit6: 红外允许标志; Bit7: 是否主动上报,未主动上报为查询模式; 高字节各bit位表示如下: Bit0: 自动天线切换,485方式 Bit1: 自动天线切换,自动触发; Bit2: 自动天线切换,HF模式; Bit3: 指定天线工作,HF模式; BIT4: 韦根输出 其他保留。 12 检测指令 0x030x1a 主动模式时读记录 无 10 0x030xB7 软件控制通道天线的蜂鸣器和LED动作 数据(1字节) Bit0: 保留 Bit3~bit1: 蜂鸣器动作次标志位 000: 关 001: 蜂鸣器开关1次 010: 蜂鸣器开关2次 011: 蜂鸣器开关3次 111: 常开 Bit6~bit4: 天线报警灯动作标志位 000: 关 001: LED开关1次 010: LED开关2次 011: LED开关3次 111: 常开 bit7: 0表示对红灯操作 1表示对绿灯操作 4错误代码 代码 英文缩写 含义说明 0x00 OPERATE_OK 正确执行 0x01 UNKNOWN_CMD 不可识别或不支持的命令 0x02 CHKSUM_ERR 命令校验错误 0x04 ERR_PARA 参数错误 0x0e ERR_FUNCT 不支持的功能或标志 0x0f ID_OVER ID号溢出 0x4e ERR_SWITCH_ACT 模式设置成功,但系统不支持主动上报 0x00 485查询指令无数据应答 通道机缓存中没有UID记录 5命令详解及应答数据说明 5.1.1获取当前工作参数 通过此命令可以获得当前读写器的工作状态参数,对于读写器不支持的系统参数则为0xff,表示无任何意义。 5.1.2切换主动工作模式 //切换红外模式有方向检测 帧头数据长度通道ID号切换主动命令命令序号标志位1标志位2CRC 1B00070001031405F0008EEE //切换主动检卡模式(无方向检测) 帧头数据长度通道ID号切换主动命令命令序号标志位1标志位2CRC 1B00070001031406B00027EC 5.1.3485查询指令 发送数据: 帧头数据长度通道ID号命令命令序号CRC 1b00050001031aeb299b 注: 485查询周期应大于50ms 应答数据: 485查询指令返回数据格式为: 标志位(1字节)+工作模式(1字节)+时间(年/月/日/时/分/秒,6字节)+UID字节(8字节)+红外方向(1字节)+CRC校验(2字节) 标志位: 0x80表示当前数据中有UID信息,0x00表示当前数据中没有UID数据,缓存为空 工作模式: 0x01=主动检测标签无方向判断 0x02=主动检测标签有方向判断 0x03=同步模式下主动检测标签无方向判断 0x04=同步模式下主动检测标签有方向判断 时间: 年月日时分秒BCD编码 UID: 8字节,返回的卡号,UID区域会有两种卡的卡号: ISO15693协议卡号和ISO14443协议卡号。 ISO15693协议卡号最后一个字节为0xE0;ISO14443协议卡号最后四个字节为0xff(如: 1E4906B7FFFFFFFF)。 当有人员通过但未携带卡片时,返回的卡号为八个字节0x00。 红外方向: 0x10表示进,0x20表示出,0xff表示无方向(用于主动检测标签无方向判断场所) 返回数据示例: 帧头数据长度通道ID号应答命令序号标志位模式年/月/日/时/分/秒 1b00160001831aeb80010c0b060a1a20 8个字节UID红外方向CRC校验 4396ec3d000104e0ff6781 通道机读取数据和发卡器读取数据对应示例: ISO15693协议卡号: 通道机返回卡号格式为: 4D97EC3D000104E0 发卡器返回卡号格式为: E00401003DEC974D 二者返回信号正好相反。 ISO14443协议卡号(消费卡): 通道机返回卡号格式为: 1E4906B7FFFFFFFF 发卡器返回卡号格式为: 1E4906B7 二者返回数据顺序一致,但是通道机返回的数据中最后又填充了4个字节的FF 5.1.4软件控制蜂鸣器指令 软件蜂鸣器和指示灯控制指令数据域宏定义: #defineCH_BUZZ_BEEP_ONE0x02//通道大蜂鸣器响一声 #defineCH_BUZZ_BEEP_TWO0x04//通道大蜂鸣器响两声 #defineCH_BUZZ_BEEP_THR0x06//通道大蜂鸣器响三声 #defineCH_LED_BLINK_ONE0x10//通道指示灯闪烁一次 #defineCH_LED_BLINK_TWO0x20//通道指示灯闪烁两次 #defineCH_LED_BLINK_THR0x30//通道指示灯闪烁三次 #defineCH_GREEN_LED_EN0x80//授权卡报警使能 #defineCH_RED_LED_EN0x00//未授权卡报警使能 示例代码: if(lucCtrPara==CHANNEL_PASS)//授权卡提示音 { switch(gucAuthorTone)//通过软件界面参数传入的控制器,可设置为固定提示音 { case0: //关闭 lucData=CH_GREEN_LED_EN; break; case1: //蜂鸣器响一声 lucData=CH_GREEN_LED_EN|CH_BUZZ_BEEP_ONE|CH_LED_BLINK_ONE; break; case2: //蜂鸣器响两声 lucData=CH_GREEN_LED_EN|CH_BUZZ_BEEP_TWO|CH_LED_BLINK_TWO; break; case3: //蜂鸣器响三声 lucData=CH_GREEN_LED_EN|CH_BUZZ_BEEP_THR|CH_LED_BLINK_THR; break; } } elseif(lucCtrPara==CHANNEL_ALARM)//非授权卡提示音 { switch(gucAlarmTome) { case0: //报警音关闭 lucData=CH_RED_LED_EN; break; case1: //蜂鸣器响一声,红灯闪烁一次 lucData=CH_RED_LED_EN|CH_BUZZ_BEEP_ONE|CH_LED_BLINK_ONE; break; case2: //蜂鸣器响一声,红灯闪烁两次 lucData=CH_RED_LED_EN|CH_BUZZ_BEEP_TWO|CH_LED_BLINK_TWO; break; case3: //蜂鸣器响三声,红灯闪烁三次 lucData=CH_RED_LED_EN|CH_BUZZ_BEEP_THR|CH_LED_BLINK_THR; break; } } 注意: 1.现在抗金属级联通道机没有绿灯,所以现在的处理方式是有权限卡蜂鸣器响一声,无权限卡蜂鸣器响同时红色指示灯闪烁。 2.蜂鸣器和指示灯控制指令无应答数据返回。 6CRC校验软件使用 输入设备ID号,指令,序列号,数据域数据,点击“计算CRC”即可获得整条指令。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北洋读写器通信协议v3 0解释 北洋 读写 通信协议 v3 解释