
LED显示屏控制软件教材.doc
9页CL2005系列控制系统通讯协议目录======第一章 概述 2§1.1 基本格式 2§1.2 CRC校验和算法 2§1.3 发送数据到配置区 4第二章 控制类命令 4§2.1 复位控制卡 4§2.2 取运行状态 4§2.3 设定亮度 5§2.4 发送时间段亮度表 5§2.5 设定自动开关屏时间 5§2.6 设定屏体电源状态 5§2.7 校准控制卡时间 5第三章 图片类命令 6§3.1 图片数据的整理 6§3.2 节目表的结构 8§3.3 发送图片数据和节目表文件 8§3.4 设定节目表项数 8第四章 文字类命令 9§4.1 显示文字串 9§4.2 画线 9§4.3 切换显示区 9§4.4 拷贝显示区 9§4.5 清除显示区 9§4.6 装入图片到显示区 9§4.7 将显示区的内容保存为图片 92007-12第一章 概述 本文档中,用‘字符’表示ASCII码,字节表示16进制数据涉及到两个字节表示一个数据时,总是高字节在前,低字节在后控制卡上的FLASH芯片每256字节为1页,1型卡上有2048页,2型和4型卡有4096页;第 0页开始共3027页存放图片数据(仅2型、4型卡)第2048页开始共 979页存放图片数据(仅对1型卡)第3027页开始共 6页存放ASCII字符和数字的点阵库(若使用文字模式)第3033页开始共1024页存放16点阵汉字库(若使用文字模式)第4057页开始共 1页保留第4058页开始共 25页存放时钟版面设计的内容第4083页开始共 12页存放节目表第4095页开始共 1页存放配置信息§1.1 基本格式CL2005的基本通讯格式为:7字符引导串+1字节屏号+1字符卡类型+2字节数据长度+多字节数据+2字节CRC 其中, 引导串: ESC+“$LYTEC”(ESC的ASCII码值为0x1b) 屏号:控制卡上短路子设定的编号 卡类型:‘1’表示1型卡,‘A’表示2型卡,‘V’表示4型卡 长度:高字节在前,低字节在后,表示有效数据的字节数,不包括引导串、屏号、卡类型、长度自身、CRC校验。
数据:数据的第1字节是命令码,其它为与命令有关的数据 CRC:高字节在前,低字节在后,对长度及数据进行16位CRC校验的结果 除取控制卡的运行状态外,对其它发送给控制卡的数据包的正确应答为9个字节:“07”+ 接收到的数据包从命令开始的5个字节+“OK” 由此应答格式可知,计算机发出的数据包中,在命令字节后必须至少有2个字节的数据(加上2字节CRC一共5个字节用于应答)§1.2 CRC校验和算法 下面用C语言描述CRC校验算法:WORD CRC_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校验的子函数: void CRC(WORD *CRCValue,BYTE ch); { WORD NewCRC = *CRCValue; BYTE CV; CV=((NewCRC>>8)^ch)&0xff; NewCRC=(NewCRC<<8)^CRC_Table[CV]; *CRCValue = NewCRC; } 假设待校验的数据为n字节,存放在字节数组ByteAry中,则完整的CRC校验算法如下: WORD CRCResult = 0; CRC(&CRCResult,n>>8); CRC(&CRCResult,n&0xff); for (int I=0;I §2.1 复位控制卡命令格式:命令码‘V’+2个字节的任意数据§2.2 取运行状态 命令格式:命令码‘D’+2字节任意的数据 对取运行状态,控制卡返回29个字节,“1D”+27字节数据这27个字节的数据中,前20个字节为十六进制的数字ASCII码,每两个拼合成1个字节的16进数据,一共10个字节,其中:第 1字节: D7-D4: 亮度 D3 : 是否处于测试状态 D2 : 是否人工强制开关电源 D1 : 是否因时间段导致关屏 D0 : 是否有汉字库 第 2字节: 当前播放的节目序号 第 3字节: 当前播放的图片序号 第 4字节: 开屏时间-时 第 5字节: 开屏时间-分 第 6字节: 关屏时间-时 第 7字节: 关屏时间-分 第 8字节: 保留 第 9字节: 保留 第10字节: 保留 后面7个字节为BCD码: 第 1字节: 控制卡时钟,秒 第 2字节: 控制卡时钟,分 第 3字节: 控制卡时钟,时 第 4字节: 控制卡时钟,日 第 5字节: 控制卡时钟,月 第 6字节: 控制卡时钟,年 第 7字节: 当前设置的亮度§2.3 设定亮度 命令格式:命令码‘Q’+0x20+0x01+0x00+亮度值,亮度值为16进制数,范围0-9。 0-7表示屏的亮度,8表示按时间段调整亮度,9表示按亮度传感器采样的结果自动调整亮度§2.4 发送时间段亮度表 命令格式:命令码‘Q’+0xCC+0x14+0x00+20字节亮度表 亮度表一共4项,每项5字节,其中第1、2字节为时间段的开始(时、分,BCD码),第3、4字节为时间段的结束(时、分,BCD码),第5字节为亮度值。












