//信息头+ 控制卡地址+ 命令字+ 数据区长度+ 数据内容+ 校验码说明:1.信息头:四个字节, 内容依次为: 0x51, 0x44, 0x45, 0x4C2.控制卡地址:单字节, 范围为1~255(0为广播地址)3.命令字:单字节⑪发送设置屏参的命令字为0xD1⑫发送设置扫描方式的命令字为0xD2⑬发送设置硬件参数的命令字为0xD3⑭发送回读硬件参数的命令字为0xD4⑮发送节目数据的命令字为0xD5⑯发送定时开关机的命令字为0xD6⑰发送校准时间的命令字为0xD7⑱发送显示屏当前节目内容回读的命令字为0xD8⑲发送调节显示屏亮度的命令字为0xD9⑳下位机回送接收状态的命令字为0xDD⑴发送通信结束的命令字为0xFD4.数据区长度:双字节,表示本次发送的数据区长度,但是每次发送的信息内容的长度最大为512字,数据区长度未标明的其值为05.数据内容:主要是上位机将要发给下位机的数据, 需要注意: 数据发送顺序必须严格按照数据协议的规则发送.6.校验码:双字节“信息头+ 控制卡地址+ 命令字+ 信息内容长度+ 信息内容”中的所有数据的每个字依次异最终所得结果再与0x5555异或就是校验码1. 网口通信采用以太网通信协议802.32. ARP和IP数据包格式3. 传输协议采用UDP协议和ICMP协议4. 网口通信数据区协议格式如下://信息头+ 控制卡地址+ 命令字+ 数据区长度+ 数据内容+ 校验码说明:(1) 信息头:四个字节, 内容依次为: 0x51, 0x44, 0x45, 0x4C(2)控制卡地址:单字节, 范围为1~255(0为广播地址)(3) 命令字:单字节①发送设置屏参的命令字为0xD1②发送设置扫描方式的命令字为0xD2③发送设置硬件参数的命令字为0xD3④发送回读硬件参数的命令字为0xD4⑤发送节目数据的命令字为0xD5⑥发送定时开关机的命令字为0xD6⑦发送校准时间的命令字为0xD7⑧发送显示屏当前节目内容回读的命令字为0xD8⑨发送调节显示屏亮度的命令字为0xD9⑩下位机回送接收状态的命令字为0xDD⑪发送通信结束的命令字为0xFD(4)数据区长度:双字节,表示本次发送的数据区长度,但是每次发送的信息内容的长度最大为512字,数据区长度未标明的其值为0(5)数据内容:主要是上位机将要发给下位机的数据, 需要注意: 数据发送顺序必须严格按照数据协议的规则发送.(6)校验码:双字节“信息头+ 控制卡地址+ 命令字+ 信息内容长度+ 信息内容”中的所有数据的每个字依次异最终所得结果再与0x5555异或就是校验码//------------------数据区协议--------------------- //-------------------------------------设置屏参-------------------------------------typedef struct _ScreenPara //0xD1{unsigned char ucRGBData; //低四位表示数据(0正常,1反相)//高四位表示显示颜色(0表示R+G或1表示G+R) unsigned short lHPixels; //横向点数(32-2048)unsigned short lVPixels; //纵向点数(16-256)}ScreenPara;发送内容顺序: 数据类型(0xD1) + 结构体(ScreenPara)内容//------------------------------设置扫描方式-----------------------------------typedef struct _ScanMode //0xD2{ unsigned char ucScanType; //扫描方式//0静态扫描, 1两扫, 2四扫, 3八扫, 4十六扫unsigned char ucScanOutput; //扫描输出//1每区1行, 2每区2行, 4每区4行,//8每区8行, 16每区16行unsigned char ucHeapRowCol; //最低六位打折列数, 4四列, 8八列, 16十六列//bit6表示行顺序, bit7表示列顺序(0正常, 1反相) unsigned char ucScanRate; //扫描频率}ScanMode;发送内容顺序: 数据类型(0xD2) + ScanMode//-------------------------------设置硬件参数-------------------------------------typedef struct _HardwareSet //0xD3{unsigned char ucCardAdd; //控制卡地址(1~255)unsigned long UartBaud; //串口波特率unsigned short usPortID; //端口号(5000~6000)unsigned short usIP[2]; //IP地址(先低字节,后高字节)unsigned short SubnetMask[2]; //子网掩码unsigned short GatewayIP[2]; //默认网关}HardwareSet;发送内容顺序: 数据类型(0xD3) + HardwareSet//-------------------------------回读硬件参数---------------------------------上位机:注意:数据区为空(数据长度为0)下位机应答:typedef struct _HardwareSet //0xD4{unsigned char ucCardAdd; //控制卡地址(1~255)unsigned long UartBaud; //串口波特率unsigned short usPortID; //端口号(5000~6000)unsigned short usIP[2]; //IP地址(先低字节,后高字节)unsigned short SubnetMask[2]; //子网掩码unsigned short GatewayIP[2]; //默认网关}HardwareSet;//---------------------------节目-----------------------------------------typedef struct _TIME1302 //时间{unsigned char chSec; // seconds after the minute - [0,59]unsigned char chMin; // minutes after the hour - [0,59]unsigned char chHour; // hours after the midnight - [0,23]unsigned char chDate; // day of the month - [1,31]unsigned char chMon; // months since January - [0,11]unsigned char chDay; // days since Sunday - [0,6]unsigned short usYear; //4位年}TIME1302;typedef struct _User_FontSet{//char* strFontName; //字体的名称//char cFontBold; //字体是否加粗//char cFontItaic; //字体是否是斜体//char cFontUnderline; //字体是否带下划线//COLORREF colorFont; //字体的颜色Short sFontSize; //字体的大小short sAlignStyle; //对齐方式0-左对齐1-居中2-右对齐}User_FontSet;typedef struct _COLORREF{unsigned char ucR;unsigned char ucG;unsigned char ucB;}COLORREF;//窗口信息typedef struct _User_PartInfo //注意: 各个区位置不能重叠且不能超出屏幕范围{unsigned short ulX; //窗口的起点X,X方向坐标为16的倍数unsigned short ulY; //窗口的起点Yunsigned short ulWidth; //窗体的宽度,宽度应该为16的倍数unsigned short ulHeight; //窗体的高度short sFrameMode; //边框宽度0无边框1单线2双线3三线COLORREF FrameColor; //边框颜色,r=g=b=0黑,//红色, r=255,g=0,b=0//绿色,r=0,g=255,b=0//蓝,r=0,g=0,b=255//黄r=255,g=255,b=0}User_PartInfo;//特技typedef struct _User_MoveSet //动画方式{unsigned char ucActionType; //特技unsigned char ucActionSpeed; //速度, 取值0~15步长unsigned char ucClear; //是否需要清除背景(0不清除, 1清除)unsigned char ucClearSpeed; //清场速度, 取值0~15unsigned char ucClearActionType; //清场方式unsigned char ucFrameTime; //更新时间(每帧), 单位ms, 取值20~200,能被10整除unsigned short sHoldTime; //在屏幕上停留的时间,单位0.1秒}User_MoveSet;//节目播放方式typedef struct _User_PlaySet{unsigned char ucPlayMode; //bit0、bit1表示系统模式, 0表示图片模式, 1文字模式//bit2、bit3播放模式,0按顺序连续播放, 1限时播放//bit4定时播放,0不定时播放, 1定时播放//bit5、bit6、bit7循环播放模式0每天,1日期,2星期unsigned long ulLimitTimes; //定时播放时间TIME1302 StartPlayTimes; //播放开始时间//注意:在此chDay的每一位代表一天,最高位无效TIME1302 StopPlayTimes; //播放结束时间}User_PlaySet;//文本信息Typedef struct _User_PerText{Unsigned long SelfPot; //指向本文本存放的地址Unsigned long NextPot; //指向下一文本存放的地址(如果是最后一个指向第一个)User_MoveSet MoveSet; //特技动作方式设置Unsigned char *pData; //本文本的内容(位图信息)} User_PerText;//窗体信息Typedef struct _User_PerZone{unsigned char ucPartType; //分区类型//0图形文本1文本2单行文本3静止文本//4表格//5时间日期//6计时//7温度User_PartInfo PartInfo; //分区信息COLORREF BkColor; //背景颜色unsigned short TextAmot; //文本总数User_PerText PerText; //文本信息} User_PerZone;//节目内容typedef struct _User_PerProgram{unsigned char ucProID; //节目ID号, 从0开始排序COLORREF BkColor; //背景颜色User_PlaySet PlaySet; //播放设置unsigned short ContAmot; //窗体数量小于20//注意: 每个节目最多能添加十个图文区,五个时间区,一个温度区,三个倒计时区unsigned long PerContPot[20]; //指向各个窗体的地址(无为0)User_PerZone PerZone; //窗体信息}User_PerProgram;typedef struct _User_Program //0xD5{unsigned short ProAmo; //节目数量(最大10个)unsigned long PerProPot[10]; //指向各个节目内容初始地址(无为0)User_PerProgram PerPro; //节目内容}User_Program;若有多个节目按照上面节目发送顺序依次发送每个节目的内容若有多个窗体按照上面节目发送顺序依次发送每个窗体的内容若有多个文本按照上面节目发送顺序依次发送每个文本的内容//-----------------------------------------------------显示屏当前节目内容回读0xD8:数据区为:显示屏当前播放的节目内容(数据格式与发给下位机的节目内容相同)//-----------------------------------------------------调节显示屏亮度0xD9:数据长度为2字节,有效值为1~8000//----------------下位机回送接收状态的数据区格式----------------数据区长度160为正常接收非0为错误接收1为校验码错误//-----------------------------------------------------发送通信结束内容:数据类型(0xFD) + 结束符号四个字节(0x71 + 0x64 + 0x65 + 0x6C)位图数据格式要求:⑪文本:①位图宽度为本窗体的宽度。