可变信息标志通讯协议显科资料.docx
《可变信息标志通讯协议显科资料.docx》由会员分享,可在线阅读,更多相关《可变信息标志通讯协议显科资料.docx(24页珍藏版)》请在冰点文库上搜索。
可变信息标志通讯协议显科资料
1文档历史发放及记录
2014-7
2本文档说明
3通信协议说明
3.1协议适用范围
本协议为上位机和设备的通信的应用协议,与通信方式无关.所以同时适用于串口,485,无线和以太网等通迅方式.具体设置如下:
●串口和485和无线.
这几种通信方式实际都是采用串口来通信.相关参数如下所示:
◆波特率-2400-19200可调
◆数据位-8
◆奇偶校验-无校验
◆停止位-1
◆流控制-无
●以太网.
系统使用TCP连接,设备作为服务器段,中心控制软件作为客户端.可使用在10-100m以太网中,推荐采用10m半双工通信模式.ip地址可以根据具体项目的环境配置.端口固定为5168.注意网络通信模式有两种方式:
●长连接方式.系统一开始就建立起TCP/IP连接.中间发送指令不需要建立连接.缺点是长时间运行,在网络环境不好断线的境况下.维护连接比较麻烦.
●短连接.每次发送指令都连接一次.完成指令通信后就断掉连接.缺点是每次发送连接麻烦.
3.2协议通信流程
本协议为主-从结构的半双工通信方式。
监控中心计算机,手持单元或其它数据终端为主站,可变限速标志或可变信息标志为从站。
每个可变信息标志均有独立的地址编码。
3.3指令基本结构
帧是传送信息的基本单元。
帧格式如图8所示。
说明
代码
帧头
0x02H
指令编码
C
设备编码
A0
数据域
DATA
校验码
CS
帧尾
0x03H
3.3.1指令头
3.3.2帧头
指令开始标识,值固定为0x02H=00000010B。
如在指令帧头与帧尾之间有任意字节等于STX,ETX或ESC,则需转义,具体如下
转义前
转义后
STX-0x02(帧头)
STX转成ESC和0xE7
ETX-0x03(帧尾)
ETX转成ESC和0xE8
ESC-0x1B(转义符)
ESC转成ESC和0x00
3.3.3设备编码
由2个字节构成可以为监控中心通讯设备、可变限速标志,可变信息标志等设备号等。
具体使用可由用户自行决定。
当地址为0x00H时,为广播地址。
范围'01'-'99'
3.3.4指令编码
2个字节,范围“00”-“99”。
具体见协议详解
3.3.5指令体
应用数据区,不定长数据.根据具体指令而定.具体见协议详解
3.3.6校验码
采用CRC2字节校验,计算范围=指令编码+设备编码+数据域.计算方法见【附录一】.
3.3.7帧尾
指令开始标识,值固定为0x02H=00000010B。
如在指令帧头与帧尾之间有任意字节等于STX,ETX或ESC,则需转义,具体如下
转义前
转义后
STX-0x02(帧头)
STX转成ESC和0xE7
ETX-0x03(帧尾)
ETX转成ESC和0xE8
ESC-0x1B(转义符)
ESC转成ESC和0x00
3.4指令一览表
指令
描述
备注
设备控制指令
通信状态
测试通信状态好坏
设备总状态
获得设备的总状态
设备详细状态
获得设备的详细状态参数
设备led灯状态
获得设备坏点数和坐标
重新启动计算机
重新启动计算机
打开关闭设备
开关屏及其他设备指令
获得亮度控制模式
获得亮度模式
设置亮度控制模式
设置亮度控制模式
设置设备电源模式
设置电源控制模式
获得通道信息
获取设备显示通道信息好坏
内容发布相关
文件下发
通用文件下发命令
文件上传
通用文件上传命令
显示指定列表
显示制定列表
获得当前显示列表
获得当前设备显示列表文件名
获得当前显示内容
获得当前设备显示具体内容
维护指令
时间同步
同步设备时间
获取当前时间
获得设备当前时间
获取启动时间
获得最后一次启动时间
获取当前版本
获取设备当前版本(主程序,协议版本,列表版本)
4指令详解
4.1通讯状态检测
通讯状态检测
功能描述
通讯状态检测
预置条件
检测系统的通讯状态
指令格式
0x02(帧头)0x300x30(指令头)0x300x31(目的地址)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x30(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
指令说明
4.2总状态检测
总状态检测
功能描述
本指令向显示设备查询设备的总状态,用于平时的设备状态监控。
预置条件
指令格式
0x02(帧头)0x300x31(指令头)0x320x32(目的地址)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x31(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x300x300x300x300x300x300x300x300x300x300x300x30(设备状态,12个字节30表示异常,31表示正常)0x000x00(校验位)0x03(帧尾)
指令详解
九个状态值,分别代表:
通讯、电源电压、风扇、门开关状态、系统、驱动通道、LED像素、感光头、防雷器,其他保留
应用举例
指令说明
4.3获得设备详细状态
获得设备详细状态
功能描述
作为一条测试和维护指令,本指令获得设备详细状态。
预置条件
指令格式
0x02(帧头)0x300x37(指令头)0x320x32(目的地址)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x37(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x00(箱体个数,2个字节,以ascii码表示,0x3032表示为箱体)0x300x300x30(亮度A)0x300x300x30(亮度B)0x300x300x30(总温度)0x300x300x30(220v电源)0x300x300x30(防雷器)0x000x00。
。
。
0x000x00(单箱体状态,不定长数据,长度=箱体个数X30,每个箱体的状态如下:
8个箱体状态数据,字节为24个字节,分别是“温度”、“电源1”、“电源2”、“电源3”、“电源4”、“电源5”、“门开关”、“保留”,温度和电源是实际数值,门开关正常值是‘3’;然后是箱体驱动好坏,3个字节,‘1’是正常;最后是单元系统好坏,3个字节,‘5’是正常)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.4获得屏幕坏点数
获得屏幕坏点数
功能描述
作为一条测试和维护指令,本指令返回屏幕坏点数。
预置条件
作为一条测试和维护指令,本指令返回屏幕坏点数。
指令格式
0x02(帧头)0x300x32(指令头)0x320x32(目的地址)0x30(是否返回坏点坐标,0X30为不返回坏点坐标,0X31为返回坏点坐标)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x32(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x000x000x000x000x00(失效点数,6个字节,以ascii码表示)0x300x300x30(屏体宽度)0x300x300x30(屏体高度)0x000x00。
。
。
0x000x00(led状态数据,不定长数据,八个点一个字节,自己的每个位为点的好坏,1是坏点,0是好点,排列顺序是从左到右,从上到下.当选择不返回坐标时,本数据不返回)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.5获得设备驱动通道信息的好坏
获得设备驱动通道信息的好坏
功能描述
作为一条测试和维护指令,本指令返回驱动好坏。
预置条件
作为一条测试和维护指令,本指令返回驱动好坏。
指令格式
0x02(帧头)0x300x39(指令头)0x320x32(目的地址)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x39(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x000x000x000x000x00(96个字节,0x30为异常,0x31为正常,6个字节为一个单元的6个驱动通道,总共16个单元.每8列为一个驱动通道,320宽的屏体有10个单元,每单元4个驱动通道)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.6手动复位可变信息标志
手动复位可变信息标志
功能描述
手动复位可变信息标志
预置条件
重新复位可变信息标志。
主要用于在修改了下位机的配置文件后,需要重新复位来使配置生效。
指令格式
0x02(帧头)0x300x33(指令头)0x310x31(目的地址)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x33(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.7设置设备电源控制模式
设置设备电源控制模式
功能描述
设置设备电源控制模式
预置条件
设置设备电源控制模式
指令格式
0x02(帧头)0x300x38(指令头)0x310x31(目的地址)0x31(需要设置的电源模式,x030为普通模式,0x31为省电模式)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x38(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.8打开/关闭系统设备
打开/关闭系统设备
功能描述
本指令打开关闭系统设备。
预置条件
在正常的运行中,下位机会自动根据设备运行状态自动打开或关闭,特殊的情况下才使用本命令手动开关可变信息标志的相关设备。
指令格式
0x02(帧头)0x300x34(指令头)0x320x32(目的地址)0x00(设备定义,0x30为可变信息标志电源,其他预留)0x00(开/关,0x31表示打开,0x30关闭)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x34(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x00(设备定义,0x30为可变信息标志,其他预留设备)0x00(设备当前状态,0x31表示设备打开,0x30表示设备关闭)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.9获取亮度调节方式和当前显示亮度
获取亮度调节方式和当前显示亮度
功能描述
获取亮度调节方式和当前显示亮度
预置条件
设备共有两种亮度控制方式:
手动控制。
手动控制主要在自动控制发生故障时使用(比如光敏电阻失效时)。
自动控制。
根据环境亮度的检测自动调节屏体亮度。
指令格式
0x02(帧头)0x300x35(指令头)0x310x31(目的地址)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x35(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x01(亮度模式,0x30手动,0x31自动,0x32程序调光)0x320x32(红色,亮度级别0~31)0x000x00(绿色,亮度级别0~31)0x000x00(蓝色,亮度级别0~31)0x000x00(环境亮度)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.10设置亮度信息
设置亮度信息
功能描述
本指令设置亮度信息
预置条件
设备共有两种亮度控制方式:
手动控制。
手动控制主要在自动控制发生故障时使用(比如感光头失效时)。
自动控制。
根据环境亮度的检测自动调节屏体亮度。
指令格式
0x02(帧头)0x300x36(指令头)0x310x31(目的地址)0x30(调整模式,30为可调,31为自动)0x000x00(红色,亮度级别0~31)0x000x00(绿色,亮度级别0~31)0x000x00(蓝色,亮度级别0~31)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x300x36(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x30(调整模式,30为可调,31为自动)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.11文件下发指令
文件发送指令
功能描述
文件发送指令
预置条件
文件发送指令,本指令作为通用文件发送指令。
可以向下位机发送到xkcms目录下的任何文件,包括播放列表文件,图片文件,字体文件,系统配置文件,硬件配置文件以及程序升级文件等。
需要注意的是,在往下面发送相应文件时,需要加上文件的目录和文件本身。
指令格式
0x02(帧头)0x320x30(指令头)0x310x31(目的地址)0x37(0x30更新,0x31立即显示,0x32重新启动,默认为0x31)0x37(文件帧标记,0x30覆盖【头帧或唯一帧】,0x31追加【中间帧】,0x32帧结束)0x300x300x30(文件名长度)0x30。
。
。
。
。
。
0x30(文件名,不定长度,包括文件路径,默认起始目录为\\xkcms\\,例如发送播放列表文件000.xkl时,文件名为list\\000.xkl。
)0x300x300x300x30(帧序列,即文件偏移地址为帧序列x2048个字节)0x30。
。
。
。
。
。
0x30(文件具体内容,不定长度)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x320x30(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x00(校验位)0x03(帧尾)
指令详解
下位机的目录如下:
xkcms------主目录
---animate------动画文件目录
-----000.xka------动画文件
-----001.xka
-----……….
-----010.xka
---font------字体文件,不需要更新,就不列出
---image-------图片目录
-----000.bmp------图片文件
-----001.bmp
-----……….
-----049.bmp
---list-------播放列表目录
-----000.xkl--------播放列表文件
-----001.xkl
-----……….
-----099.xkl
---log--------运行日志目录文件
-----xxxxxxxx.log--------xxxxxxxx是日期的八位数字
---temp--------临时目录
bright.cfg-------亮度配置文件
device.cfg-------设备配置文件
xkcms.cfg--------系统配置文件
xkcms.exe--------主程序
如果需要发送播放列表,则文件名为:
list\\000.xkl.其他以此类推。
●文件偏移地址----读文件偏移指读取文件内容时文件指针的偏移字节数。
●一次下载文件内容不超过2048字节,如果文件长度超过2048字节,必须分多次下载直至文件内容为0字节。
应用举例
4.12文件读取指令
文件读取指令
功能描述
文件读取指令
预置条件
文件读取指令
指令格式
0x02(帧头)0x320x31(指令头)0x310x31(目的地址)0x300x300x30(文件名长度)0x30。
。
。
。
。
。
0x30(文件名,不定长度,包括文件路径,默认起始目录为\\xkcms\\,例如发送播放列表文件000.xkl时,文件名为list\\000.xkl。
)0x300x300x300x30(帧序列,即文件偏移地址为帧序列x2048个字节)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x320x31(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x00(校验位)0x03(帧尾)
指令详解
下位机的目录如下:
xkcms------主目录
---animate------动画文件目录
-----000.xka------动画文件
-----001.xka
-----……….
-----010.xka
---font------字体文件,不需要更新,就不列出
---image-------图片目录
-----000.bmp------图片文件
-----001.bmp
-----……….
-----049.bmp
---list-------播放列表目录
-----000.xkl--------播放列表文件
-----001.xkl
-----……….
-----099.xkl
---log--------目录文件
---temp--------临时目录
bright.cfg-------亮度配置文件
device.cfg-------设备配置文件
xkcms.cfg--------系统配置文件
xkcms.exe--------主程序
如果需要发送播放列表,则文件名为:
list\\000.xkl.其他以此类推。
●文件偏移地址----读文件偏移指读取文件内容时文件指针的偏移字节数。
●一次下载文件内容不超过2048字节,如果文件长度超过2048字节,必须分多次下载直至文件内容为0字节。
应用举例
4.13显示指定显示列表
显示指定显示列表
功能描述
本指令告诉下位机显示已经存储在下位机的哪一个播放列表文件。
预置条件
作为下位机,本地存储器可以存储99个播放列表,里面存储一些常见的交通信息。
用户通过本指令就可以简单让下位机显示想要的内容。
指令格式
0x02(帧头)0x320x32(指令头)0x310x31(目的地址)0x47…0x46(文件名,“000.xkl”,7个字节,其中”000“为播放列表的编码,范围是000-999)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x320x32(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.14获取当前显示列表
获取当前显示列表
功能描述
本指令读取当前显示列表文件的编号。
预置条件
有时不知道下位机正在显示什么内容时,本指令可获得正在显示的显示列表编号。
指令格式
0x02(帧头)0x320x33(指令头)0x310x31(目的地址)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x320x33(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x47…0x46(文件名,“000.xkl”,7个字节,其中”000“为播放列表的编码,范围是0000-999)0x000x00(校验位)0x03(帧尾)
指令详解
应用举例
4.15同步下位机时间
同步下位机时间
功能描述
同步下位机时间
预置条件
同步下位机时间
指令格式
0x02(帧头)0x340x30(指令头)0x320x32(目的地址)0x300x300x300x300x300x300x300x300x300x300x300x300x300x30(14位时间)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x340x30(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x000x00(校验位)0x03(帧尾)
指令详解
14字节为时间的字符串如“20071001020315”
应用举例
4.16读取下位机时间
读取下位机时间
功能描述
读取下位机时间
预置条件
读取下位机时间
指令格式
0x02(帧头)0x340x31(指令头)0x300x31(目的地址)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x340x31(指令头)0x300x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x300x300x300x300x300x300x300x300x300x300x300x300x300x30(14位时间)0x000x00(校验位)0x03(帧尾)
指令详解
14字节为时间的字符串如“20071001020315”
应用举例
4.17获取启动时间
获取启动时间
功能描述
获取启动时间
预置条件
获取启动时间
指令格式
0x02(帧头)0x340x32(指令头)0x310x31(目的地址)0x000x00(校验位)0x03(帧尾)
返回值
0x02(帧头)0x340x32(指令头)0x310x31(目的地址)0x01(指令执行情况,00表示异常,01表示正常)0x300x300x300x300x300x300x300x300x300x300x300x300x300x30(14位时间)0x000x00(校验位)0x03(帧尾)
指令详解
14字节为时间的字符串如“20071001020315”
应用举例
【附录一】CRC算法的C语言实现
unsignedshortgen_crc(constunsignedchar*buffer,intbuffe