CL3000系列异步控制系统通讯协议v1.0目录======第一章概述2§1.1通讯数据包格式2§1.2CRC校验和算法3第二章控制类命令4§2.1复位控制卡4§2.2取运行状态4§2.3校对控制卡时间4§2.4读取控制卡时间5§2.5设定自动开关屏时间5§2.6暂停/继续节目播放5§2.7设定屏体电源/开关模式5§2.8设定亮度5§2.9发送时间段亮度表5§2.10切换当前播放的节目组6第三章节目表控制播放类命令6§3.1图片文件结构6§3.2发送图片文件7§3.3节目表结构7§3.4发送节目表8第四章实时显示类命令9§4.1实时显示文字9§4.2保存文字串为XMPX图片文件10§4.3实时显示XMPX图片10第一章概述本文中,DWORD为4字节数据,WORD为双字节数据,BYTE为单字节数据。存储格式为小序,即4字节数据(32个bit)存储为:d7-d0,d15-d8,d23-d16,d31-d24;双字节数据(16个bit)存储为:d7-d0,d15-d8。用于节目播放的图片、文字和字库存储在控制卡上的FLASH芯片中,控制卡标准配置为1片2MB的FLASH芯片,可根据用户要求增加一片2MB芯片或者改为2片4MB的芯片。FLASH芯片中每4096字节为1页,内容必须以页为单位占用存储,例如一张5000字节的图片要用2个FLASH页存储,即需要8192字节的存储空间。CL3000系列控制卡支持串口和以太网通讯,网络通讯支持UDP/IP协议,不支持端口复用,即控制卡可以接收任意端口的数据,但是同一时刻只能接收一个主机的数据。网络通讯的通讯包格式与串口通讯相同。§1.1通讯数据包格式CL3000的通讯数据包格式为:7字节引导串+1字节屏号+1字节保留域+1字节包序号+4字节访问密钥+2字节数据长度+报文数据+2字节CRC其中,引导串:ESC+“$LYMIN”(ESC的ASCII码值为0x1b)。屏号:控制卡地址。出厂设置为0。保留域:备用,填0。包序号:从0开始编号,控制卡对该报文的响应报文将使用相同的编号,这样发送者可以判断响应报文所对应的发送报文。密钥:网络通讯用,串口通讯不使用填0xFFFFFFFF。长度:后面报文数据的长度。数据:发往控制卡的命令及数据。各命令的数据格式在后面章节中详细说明。CRC:对报文数据部分进行16位CRC校验的结果,校验算法见1.2节。响应报文采用与发送报文相同的格式,只是引导串为ESC+“$lymin”,访问密钥字节则保留。响应报文数据域开头3个字节固定为:命令+“OK”或“FL”,分别表示命令执行成功或失败的响应。如果有响应数据则紧跟在后面。§1.2CRC校验和算法下面用C语言描述CRC校验算法:WORDCRC_Table[256]={0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,0x1231,0x0210,0x3273,0x2252,0x52b5,0x4294,0x72f7,0x62d6,0x9339,0x8318,0xb37b,0xa35a,0xd3bd,0xc39c,0xf3ff,0xe3de,0x2462,0x3443,0x0420,0x1401,0x64e6,0x74c7,0x44a4,0x5485,0xa56a,0xb54b,0x8528,0x9509,0xe5ee,0xf5cf,0xc5ac,0xd58d,0x3653,0x2672,0x1611,0x0630,0x76d7,0x66f6,0x5695,0x46b4,0xb75b,0xa77a,0x9719,0x8738,0xf7df,0xe7fe,0xd79d,0xc7bc,0x48c4,0x58e5,0x6886,0x78a7,0x0840,0x1861,0x2802,0x3823,0xc9cc,0xd9ed,0xe98e,0xf9af,0x8948,0x9969,0xa90a,0xb92b,0x5af5,0x4ad4,0x7ab7,0x6a96,0x1a71,0x0a50,0x3a33,0x2a12,0xdbfd,0xcbdc,0xfbbf,0xeb9e,0x9b79,0x8b58,0xbb3b,0xab1a,0x6ca6,0x7c87,0x4ce4,0x5cc5,0x2c22,0x3c03,0x0c60,0x1c41,0xedae,0xfd8f,0xcdec,0xddcd,0xad2a,0xbd0b,0x8d68,0x9d49,0x7e97,0x6eb6,0x5ed5,0x4ef4,0x3e13,0x2e32,0x1e51,0x0e70,0xff9f,0xefbe,0xdfdd,0xcffc,0xbf1b,0xaf3a,0x9f59,0x8f78,0x9188,0x81a9,0xb1ca,0xa1eb,0xd10c,0xc12d,0xf14e,0xe16f,0x1080,0x00a1,0x30c2,0x20e3,0x5004,0x4025,0x7046,0x6067,0x83b9,0x9398,0xa3fb,0xb3da,0xc33d,0xd31c,0xe37f,0xf35e,0x02b1,0x1290,0x22f3,0x32d2,0x4235,0x5214,0x6277,0x7256,0xb5ea,0xa5cb,0x95a8,0x8589,0xf56e,0xe54f,0xd52c,0xc50d,0x34e2,0x24c3,0x14a0,0x0481,0x7466,0x6447,0x5424,0x4405,0xa7db,0xb7fa,0x8799,0x97b8,0xe75f,0xf77e,0xc71d,0xd73c,0x26d3,0x36f2,0x0691,0x16b0,0x6657,0x7676,0x4615,0x5634,0xd94c,0xc96d,0xf90e,0xe92f,0x99c8,0x89e9,0xb98a,0xa9ab,0x5844,0x4865,0x7806,0x6827,0x18c0,0x08e1,0x3882,0x28a3,0xcb7d,0xdb5c,0xeb3f,0xfb1e,0x8bf9,0x9bd8,0xabbb,0xbb9a,0x4a75,0x5a54,0x6a37,0x7a16,0x0af1,0x1ad0,0x2ab3,0x3a92,0xfd2e,0xed0f,0xdd6c,0xcd4d,0xbdaa,0xad8b,0x9de8,0x8dc9,0x7c26,0x6c07,0x5c64,0x4c45,0x3ca2,0x2c83,0x1ce0,0x0cc1,0xef1f,0xff3e,0xcf5d,0xdf7c,0xaf9b,0xbfba,0x8fd9,0x9ff8,0x6e17,0x7e36,0x4e55,0x5e74,0x2e93,0x3eb2,0x0ed1,0x1ef0};计算CRC校验的子函数:voidCRC(WORD*CRCValue,BYTEch);{WORDNewCRC=*CRCValue;BYTECV;CV=((NewCRC8)^ch)&0xff;NewCRC=(NewCRC8)^CRC_Table[CV];*CRCValue=NewCRC;}假设待校验的数据为n字节,存放在字节数组ByteAry中,则完整的CRC校验算法如下:WORDCRCResult=0;for(intI=0;In;++I)CRC(&CRCResult,ByteAry[I]);第二章控制类命令控制类命令包括复位控制卡、取运行状态、设定亮度、设定开关屏时间等。§2.1复位控制卡命令格式:'V'+1字节复位类型+2字节参数复位类型:0:重启播放流程1:控制卡复位2:释放网络,允许其它网络主机访问参数保留,填0§2.2取运行状态命令格式:'A'+1字节0+2字节数据长度+4字节0数据长度为运行状态数据结构RunningStateStru的长度,该结构在MiniLED.h中定义。返回报文中的数据域为运行状态数据结构。§2.3校对控制卡时间命令格式:'C'+1字节秒+1字节分+1字节时+1字节日+1字节月+1字节周+1字节年+1字节0周0-6依次表示星期日,星期一到星期六。年0-99表示2000年到2099年。§2.4读取控制卡时间命令格式:'E'返回报文中的数据域格式为1字节秒+1字节分+1字节时+1字节日+1字节月+1字节周+1字节年+1字节0。§2.5设定自动开关屏时间命令格式:'B'+1字节0+1字节数据长度4+1字节0+1字节自动开屏分+1字节自动开屏时+1字节自动关屏分+1字节自动关屏时注意:时间大于所设置的关屏时间才关屏。§2.6暂停/继续节目播放命令格式:'K'+1字节控制标志+2字节参数控制标志:0暂停播放1恢复继续播放参数保留,填0§2.7设定屏体电源/开关模式命令格式:'P'+1字节模式模式:0:强行关屏1:强行开屏2:自动开关屏§2.8设定亮度命令格式:'Y'+1字节设定亮度值亮度值:0-15依次表示亮度等级1/16,2/16,...16/16(全亮)。16表示使用亮度传感器自动调整,17表示使用时段亮度表的设定。其它值返回错误§2.9发送时间段亮度表命令格式:'B'+1字节1+1字节数据长度+1字节0+2字节时段1+…每个时间段两个字节,格式为bit15保留填0,bit14..10小时,bit9..4分钟,bit3..0亮度。值为0表示无效时段,则后面的时段设置忽略。最多6个亮度时间段,即数据长度最大12个字节。§2.10切换当前播放的节目组命令格式:'X'+1字节标识+2字节节目组编号+16字节节目组播放参数标识:bit7=1保存当前选择的节目组(需要有电池);bit6=1设置新的节目组播放参数;其它bit保留填0节目组编号:0-999,与节目表项Flag字段中的所属节目组号对应节目组播放参数:用于给节目组中的特殊节目传递参数,当标识字节中的bit6=1时才会起作用。每个分区4个字节,从第一个分区开始依次排列。第三章节目表控制播放类命令节目表控制播放类命令涉及两个方面,一是播放的内容,即图片文件,另一是节目表,控制卡根据节目表设定的效果来播放图片。§3.1图片文件结构CL3000所使用的图片文件为自定义格式,其基本结构为:文件头+图片点阵数据文件头为12字节,其格式见《CL3000程序员手册》中的PicFileHdr结构定义。图片点阵数据格式定义如下:像素点按列的顺序进行存储,即先存储第一列像素,再存储第二列像素,…,如果是双色图片,则先存储红色的像素值,再存储绿色的像素值。对于每一列像素,每8个像素存储在1个字节中,1位表示1个象素,0代表黑色,1代表红或绿色,行数较小的存储在字节中位序较小的位置。最后1个字节的高几位bit可能会未用到,对于一个高度为H,宽度为W的单色图片,其像素点所占字节数为(H+7)/8*W,双色图片乘以2即可。图片文件的宽度和高度应与其所在分区大小相同。§3.2发送图片文件命令格式:'L'+1字节0+2字节图片文件索引+4字节图片文件内偏移量(512字节对齐)+2字节下载数据长度+图片文件数据。图片文件索引:从0开始编号,但是前4个图片(编号0-3)保留给实时版面做背景图片,因此普通图片文件的编号应从4开始。下载数据长度:不超过512字节,不能跨SPIFLASH页。一般应以512字节为单位发送图片文件数据,直到最后如果剩下不到512字节则按剩余的长度发送。本函数直接将发送的图片数据写入Flash,如果在写入时控制卡正在播放该图片,则屏幕可能会显示不正常,因此一般发送图片文件前应停止播放。控制卡所允许的单个图片文件的最大长度跟所配置的显示屏大小、单/双色、各分区大小均有关系,可以通过RunningStateStru的PicFileSize域获取,控制卡以此为单位存