VisionShow版本LED显示屏异步控制卡通讯协议.docx
《VisionShow版本LED显示屏异步控制卡通讯协议.docx》由会员分享,可在线阅读,更多相关《VisionShow版本LED显示屏异步控制卡通讯协议.docx(22页珍藏版)》请在冰豆网上搜索。
![VisionShow版本LED显示屏异步控制卡通讯协议.docx](https://file1.bdocx.com/fileroot1/2023-1/5/d94d1cbd-f244-486a-a6db-5d1afa2b4338/d94d1cbd-f244-486a-a6db-5d1afa2b43381.gif)
VisionShow版本LED显示屏异步控制卡通讯协议
LED显示屏异步控制卡通讯协议
一.协议概述
本协议协议采用链路层和传输层和节目应用层三层协议模式
链路层协议将传输层协议进行封装打包,包括添加起始符,添加结束符,计算并添加CRC
校验<校验算法见附录),对数据段进行关键字符转义.b5E2RGbCAP
传输层协议是用于发送控制命令,或者节目数据拆分组包地协议•对于控制命令,一条控
制命令形成一个传输层地数据包;对于节目数据,一次节目数据地发送,对应多个传输层数据
包<起始包,数据包,数据包,……,数据包,结束包;一个起始包,多个数据包,一个结束
包).plEanqFDPw
节目应用层协议,是播放节目地数据,包括节目属性头部,页面,内码文字,数字时钟,图像等元素地协议定义•
链路层协议
1.链路层协议定义
编号
名称
长度<字节)
描述
1
起始符<0x55)
1
链路层数据包地起始符
2
数据段
N
链路层数据包地数据段
3
结束符<0xAA)
1
链路层数据包地结束符
2.数据段协议描述
数据段数据是由应用层形成地数据转换形成地,其转换过程如下:
1)应用层数据+CRC校验<2字节)
2)对数据<包括CRC校验值)进行转义,替换掉数据中地关键字符
0x55替换为OxBB0x56
0xAA替换为OxBB0xAB
OxBB替换为OxBBOxBC
3.控制命令协议V传输层)
1.协议结构说明
PC到控制卡
名称
数据长度
取值
说明
Command
2
6:
校正控制卡时间
9:
读取电源状态10:
设置电源状态11:
读取亮度
12:
设置亮度
命令代码
srcAddr
1
0
:
源地址
dstAddr
1
目标地址<控制卡地址)
SerialNo
4
r电源,亮度值
Data
N
附加数据,根据命令代码不同,定义不同
//C语言代码宏定义和数据结构定义
#definePKC_SET_TIME6
#definePKC_GET_POWER9
#definePKC_SET_POWER10
#definePKC_GET_BRIGHT11
#definePKC_SET_BRIGHT12
typedefstructPKG_HEADER{
WORDCommand。
BYTEsrcAddr。
BYTEdstAddr。
DWORDSerialNo。
//DWORD型数据包号使系统可传输4G数据}TPKG_Header,*PPKG_Header。
DXDiTa9E3d
控制卡到PC
名称
数据长度
取值
说明
Command
\2
3:
应答标识
「应答代码,固定值
srcAddr
1
源地址<控制卡地址)
dstAddr
1
0
目标地址
SerialNo
4
包序列号,或者电源和亮度值
SrcCommand
2
命令代码<从PC发来地协议中取得)
Result
「命令执行结果
〃c语言代码宏定义和数据结构定义
#definePKC_RESPOND3typedefstructPKG_RESPOND{
TPKG_HeaderHeader。
WORDCommand。
WORDResult。
}TPKG_Respond,*PPKG_Respond
RTCrpUDGiT
2.校正控制卡时间
pc到控制卡
工程成员
「取值
说明
Command
SerialNo
\0
Data
要校正地时间值
采用如下时间值结构
typedefstructSYSTEMTIME{
WORDyear。
WORDmonth。
WORDweek。
WORDday。
WORDhour。
WORDminute。
WORDsecond。
WORDmsecond。
}TSystemTime,*PSystemTime。
控制卡到PC
工程成员
「取值
说明
Command
A
SerialNo
0
SrcCommand
6
Result
1
3.读取电源状态
pc到控制卡
工程成员
取值
说明
Command
9
SerialNo
0
Data
无
没有附加数据
控制卡到PC
工程成员
取值
说明
Command
3
SerialNo
=0电源关闭
=1电源开启
返回地电源状态
SrcCommand
9
Result
1
4.设置电源状态
pc到控制卡
工程成员
取值
说明
Command
10
SerialNo
=0电源关闭
=1电源开启
要设置地电源状态
Data
无
没有附加数据
控制卡到PC
工程成员
取值
说明
Command
3
SerialNo
=0电源关闭
=1电源开启
返回地电源状态
SrcCommand
10
Result
1
5.读取亮度
pc到控制卡
工程成员
取值
说明
Command
11
SerialNo
0
Data
无
没有附加数据
控制卡到PC
工程成员取值说明
Command
3
SerialNo
0到7
返回地亮度值
SrcCommand
11
Result
1
6.设置亮度
pc到控制卡
工程成员
取值
说明
Command
12
SerialNo
0到7
要设置地亮度值
Data
无
没有附加数据
控制卡到PC
工程成员
取值
说明
Command
3
SerialNo
0到7
返回地亮度值
SrcCommand
12
Result
1
4.节目数据拆分组包协议<传输层)
1.拆分组包
发送节目数据时,节目数据要按照每包512字节地长度进行拆分组包发送•
例如节目数据长度为1200字节时,则会拆成3包,分别为512字节,512字节,176字节.那
么,实际发送过程为5PCZVD7HXA
jLBHrnAlLg
2.协议结构说明
组包协议与命令协议结构一样,只是命令代码不同
pc到控制卡
名称
数据长度
取值
说明
Command
2
0:
起始包
1:
结束包
2:
数据包
命令代码
srcAddr
1
0
源地址
dstAddr
1
目标地址<控制卡地址)
SerialNo
4
从0开始编号起始包=0第1个数据包=1第2个数据包=2
第n个数据包=n<最后一个)
结束包=n+1
包序列号
Data
N
节目数据
起始包和结束包时,该段不填
〃c语言代码宏定义和数据结构定义
#definePKC_BEGIN0
#definePKC_END1
#definePKC_DATA2xHAQX74J0X
控制卡到PC
名称
数据长度
取值
说明
Command
\2
3:
应答标识
「应答代码,固定值
srcAddr
1
源地址<控制卡地址)
dstAddr
1
0
目标地址
SerialNo
4
包序列号<从PC发来地协议中取得)
SrcCommand
2
命令代码<从PC发来地协议中取得)
Result
2
1:
包正确<可以发送下一个包)
0:
数据错误<需要重新发送该包)
命令执行结果
//C语言代码宏定义和数据结构定义
#definePKC_RESPOND3typedefstructPKG_RESPOND{
TPKG_HeaderHeader。
WORDCommand。
WORDResult。
}TPKG_Respond,*PPKG_Respond
LDAYtRyKfE
5.节目数据协议说明<节目应用层)
1.协议概述
播放节目地数据,包括节目数据头部,页面,内码文字,数字时钟,图像等元素地协议定义
节目属性头部:
Root
页面:
Leaf
显示对象<文字、日期时间、图像等):
Object
节目数据组织
Zzz6ZB2Ltk
2.节目数据头部
名称
数据长度
说明
id
2
:
节目代码17:
发送节目18:
下载节目
Count
2
页面数量
Size
4
P数据长度,TRoot长度+所有子页面长度
Type
2
节目类型1:
单路数据2:
RG双路数据
Reserved
2
:
保留
//节目数据头部
typedefstructROOT{
WORDid。
//节目弋码
WORDcount。
//标识页面数目
DWORDsize。
//标识整个数据流字节数(包含数据字节数和该元素本身字节数之和>
WORDtype。
//节目类型
WORDReserved。
}TRoot,*PRoot。
dvzfvkwMIl
3.页面
名称
数据长度
;说明
id
2
:
页面代码0x30
Count
2
对象数量
Time
4
:
页面显示时间
Elapse
4
置0
Size
4
:
数据长度,TLeaf长度+所有子对象长度
//页面
typedefstructLEAF{
WORDid。
//页面标识
WORDcount。
//数据对象数目
DWORDtime。
//页面显示时间
DWORDelapse。
//该字段用于单片机填写运行时已过时间,对计算机此端无用
DWORDsize。
//对象字节数
}TLeaf,*PLeaf。
rqyn14ZNXI
4.内码文字对象
名称
数据长度
说明
Object
头部
id
对象代码=0x33
Transparent
2
是否透明置1
Size
\4
数据长度"Object长度+所有子数据长度
Left
2
显示区域左坐标
Top-
\2
显示区域上坐标
Right
2
显示区域右坐标
Bottom
\2
显示区域下坐标
Method
2
显示方式
Speed
2
显示速度置1
Param
8
置0
Color
4
红色:
0xFF;绿色:
0xFF00;黄色:
0xFFFF
FontSet
4
字体-0:
16点阵宋体;-1:
24点阵宋体
Str
N
文字字符串,必须以0为结尾,长度为4地倍数例如:
要显示“ABCDE”,那么此处Str地字节数为8,分别为:
‘A',‘B',‘C',‘D',‘E',‘\0',
'\0','\0'
typedefstructOBJECT{
WORDid。
//对象标识
WORDtransparento〃是否透明
DWORDsize。
//对象字节数
TRectrect。
//对象显示区域
}TObject,*PObject。
typedefstructPLAYPARAM{
shortx,y。
DWORDtime。
}TPlayParam。
typedefstructSTRING{
TObjectobjecto〃对象的一般定义
WORDmethod。
//显示方式
WORDspeedo〃显示速度
TPlayParamparamo//预留参数空间给单片机
DWORDcolor。
//字符颜色
DWORDfontset。
//字符集(一般情况0=16点阵仁24点阵>}TString,*PString。
EmxvxOtOco
5.图像对象
名称
数据长度
说明
TObject
头部
id
2
对象代码-0x31
Transparent
2
是否透明置1
Size
4
数据长度,TObject长度+所有子数据长度
Left
2
显示区域左坐标
Top-
2
显示区域上坐标
Right
2
显示区域右坐标
Bottom
2
显示区域下坐标
Method
2
显示方式
Speed
2
显示速度置1
Param
8
置0
TPixels点阵头部
Id
2
0x36
Width
2
图像宽度
Height
2
图像高度
Bits
2
对单色屏,置1;对双色屏,置4
Size
4
数据长度,TPixels长度+点阵数据长度
Data
N
点阵数据,如何定义下面有说明
typedefstructWINDOW{
TObjectobject。
〃对象的一般定义
WORDmethod。
//显示方式
WORDspeedo〃显示速度
TPlayParamparamo//预留参数空间给单片机}TWindow,*PWindow。
typedefstructPIXELS{
WORD
id。
//对象标识
WORD
width。
〃点阵宽度
WORD
heighto
〃点阵高度
WORD
bits。
〃每象素位数
DWORD
size。
//对象大小
}TPixels,*PPixels。
SixE2yXPq5
Data地定义说明:
对于RG双路数据地显示屏,每个像素点占用2个Bit.图像数据采用列为主地方式,点阵数据是一列一列存储地,每列地数据占用地字节数必须为4地倍数,不足地用0补
齐.6ewMyirQFL
例如,一个16宽*12高地图片,共有16列数据海列数据有12个点;因为每个字节有4
个像素,所以12点要3个字节,加上补4字节对齐地一个字节,每列占用4字节;整个图像占
用4*16=64字节.kavU42VRUs
数据使用DWORD类型来存储,下面是一列数据地例子
Bit置1,否则置0.y6v3ALoS89
Bit置1,否则置O.M2ub6vSTnP
以图像左上角为起始点<0,0)
31
30
29
28
27
26
25
24
(0,0>-R
(0,0>-G
(0,1>-R
(0,1>-G
(0,2>-R
(0,2>-G
(0,3>-R
(0,3>-G
23
22
21
20
19
18
17
16
(0,4>-R
(0,4>-G
(0,5>-R
(0,5>-G
(0,6>-R
(0,6>-G
(0,7>-R
(0,7>-G
15
14
13
12
11
10
9
8
(0,8>-R
(0,8>-G
(0,9>-R
(0,9>-G
(0,10>-R
(0,10>-G
(0,11>-R
(0,11>-G
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
6.日期时间对象
名称
数据长度
说明
Objectid
2
页面代码=0x32
头部Transparent
2
是否透明置1
Size
4
数据长度"Object长度+所有子数据长度
Left
2
显示区域左坐标
Top-
2
显示区域上坐标
Right
2
显示区域右坐标
Bottom
2
显示区域下坐标
Offset
4
置0
Format。
1
格式
Index0
1
点阵编号
Format1
1
格式
Index1
1
点阵编号
Format2
1
格式
Index2
1
点阵编号
Format3
1
格式
Index3
1
点阵编号
Format4
1
格式
Index4
1
点阵编号
Format5
1
格式
Index5
1
点阵编号
Format6
1
Index6
1
点阵编号
Format7
1
格式
Index7
1
点阵编号
Format8
1
格式
Index8
1
点阵编号
Format9
1
格式
Index9
1
点阵编号
FormatIO
1
格式
Index10
1
点阵编号
Formatll
1
格式
Index11
1
点阵编号
Format12
1
格式
Index12
1
点阵编号
Format13
1
格式
Index13
1
点阵编号
Format14
1
格式
Index14
1
点阵编号
Format15
1
格式
Index15
1
点阵编号
TPixelSet点阵组头部
2
点阵组标识代码=0x37
Count
2
点阵组中地点阵数量
Size
4
数据长度,TPixelSet长度+所有子数据长度
点阵0
TPixels点阵头部
Id
2
0x36
Width
2
图像宽度
Height
2
图像高度
Bits
2
对单色屏,置1;对双色屏,置4
Size
4
数据长度"Pixels长度+点阵数据长度
Data
N
点阵数据,如何定义下面有说明
点阵1
TPixels点阵头部
Id
2
0x36
Width「
2
图像宽度
Height
2
图像高度
Bits—
2
对单色屏,置1;对双色屏,置4
Size
4
数据长度,TPixels长度+点阵数据长度
Data
N
点阵数据,如何定义下面有说明
点阵2
TPixels点阵头部
Id
2
0x36
Width
2
图像宽度
Height
2
图像高度
Bits
2
对单色屏,置1;对双色屏,置4
Size
4
数据长度,TPixels长度+点阵数据长度
Data
N
点阵数据,如何定义下面有说明
typedefstructOBJECT{
WORDid。
//对象标识
WORDtransparento〃是否透明
DWORDsize。
//对象字节数
TRectrect。
//对象显示区域
}TObject,*PObject。
typedefstructPIXELS{
//对象标识
〃点阵宽度
〃点阵高度
//每象素位数
//对象大小
WORDido
WORDwidth
WORDheight
WORDbitso
DWORDsize。
}TPixels,*PPixels
typedefstruct_PIXELSET
{
WORDid。
〃对象标识
WORDcount。
〃点阵数量
DWORDsize。
//对象大小
}TPixelSet,*PPixelSet。
OYujCfmUCw
Format和Index是成对地‘Format表示要显示地内容类型,lndex表示对应后面点阵组中
地索引号.eUts8ZQVRd
Format地取值为1到8,分别对应1年2月3日4星期5时6分7秒8固定字.
当Format=1<2,3,5,6,7)时,如果Index=0,表示显示地是年<月日时分秒)地十位;
Index=1,表示显示地是年<月日时分秒)地个位.此时,点阵组中,第0到9个点阵应该是数字''到'9'地点阵.sQsAEJkW5T
当Format=8时,Index表示点阵组中地索引号.
当Format=4是,表示要显示星期,此时Index必须设为0x7F,并且点阵0到点阵6分别对
应'日''一'、'二''三''四''五'、'六'地文字.GMsIasNXkA
举例:
年月日地显示,例如显示“2018年05月31日”:
【点阵组】为'0','1','2','3','4','5','6','7','8','9','年','月','日'TIrRGchYzg
Format0=8,Index0=2,表示20XX年地2字
Format1=8,Index1=0,表示20XX年地0字
Format2=1,Index2=0,表示2018年地1字<十位)
Format3=1,Index3=1,表示2018年地2字<个位)
10个
11个
12个
Format4=8,Index4=10,表示汉字‘年'字,‘年'在点阵组中位于第
Format5=2,Index5=0,表示05月地0字<十位)
Format6=2,Index6=1,表示05月地5字<个位)
Format7=8,Index7=11,表示汉字‘月'字,‘月'在点阵组中位于第
Format8=3,Index8=0,表示31日地3字<十位)
Format9=3,Index9=1,表示31日地1字<个位)
Format10=8,Index10=12,表示汉字‘日'字,‘日'在点阵组中位于第
时分秒地显示,例如显示“09:
35:
28”:
【点阵组】为'0','1','2','3','4','5','6','7','8','9',':
'
Format0=5,Index0=0,表示09地0字<十位)
Format1=5,Index1=1,表示09地9字<个位)
Format2=8,Index2=10,表示‘:
',在点阵组中位于第10个
Format3=6,Index3=0,表示35地3字<十位)
Format4=6,Index4=1,表示35地5字<个位)
Format5=8,Index5=10,表示‘:
',在点阵组中位于第10个
Format6=7,Index6=0,表示28地2字<十位)
Format7=7,Index7=1,表示28地8字<个位)