/// <summary> /// 发送数据的根节点 /// </summary> /// <param name="allDataLen">整个数据流字节数</param> /// <param name="pageCount">页面数目</param> /// <returns></returns> private static byte[] BJSZ_LEDRoot(int allDataLen, int pageCount, bool SaveInLed,LEDColorType ledColorType) { byte[] data = new byte[12]; if (SaveInLed == true) { data[0] = ROOT_DOWNLOAD;//数据流类型 } else { data[0] = ROOT_PLAY; } data[1] = 0x00; //页面数目 allDataLen += 12; string strPageCount = Convert.ToString(pageCount, 16); FormatStringUseRepeatChar('0', 4, ref strPageCount, true); List<byte> lstData = new List<byte>(); AddMultipleByteToList(strPageCount, 2, ref lstData); byte[] dataFlow = lstData.ToArray(); data[2] = dataFlow[0]; data[3] = dataFlow[1]; //整个数据流字节数,占4个字节,低位在前,高位在后 string strAllDataLen = Convert.ToString(allDataLen, 16); FormatStringUseRepeatChar('0', 8, ref strAllDataLen, true); lstData = new List<byte>(); AddMultipleByteToList(strAllDataLen, 4, ref lstData); dataFlow = lstData.ToArray(); data[4] = dataFlow[0]; data[5] = dataFlow[1]; data[6] = dataFlow[2]; data[7] = dataFlow[3]; //要求的显示屏类型 data[8] = (byte)ledColorType; data[9] = 0x00; data[10] = 0x00;//保留 data[11] = 0x00; return data; }
/// <summary> /// 发送LED信息指令 /// </summary> /// <param name="DisplayType">显示方式</param> /// <param name="Speed">速度</param> /// <param name="TimeLen">每条信息显示时长</param> /// <param name="Content">内容</param> /// <returns></returns> public static List<byte[]> BJSZ_LEDContentInfo(int DisplayType,int Speed, int TimeLen, string Content, bool SaveInLed,LEDColorType ledColorType,int width,int height) { if (Content.Trim() == String.Empty) { return null; } List<byte[]> lstInstruction = new List<byte[]>(); byte[] data = BeiJingShiZhanLEDCommander.BJSZ_LEDStartData(); lstInstruction.Add(data); string[] arrContent = Content.Split('|'); Dictionary<int, byte[]> dictStringData = new Dictionary<int, byte[]>(); Dictionary<int, byte[]> dictLeafData = new Dictionary<int, byte[]>(); byte[] StringData; byte[] LeafData; for (int i = 0; i < arrContent.Length; i++) { StringData = null; LeafData = null; StringData = BeiJingShiZhanLEDCommander.BJSZ_LEDString(DisplayType,width,height, Speed, arrContent[i]); LeafData = BeiJingShiZhanLEDCommander.BJSZ_LEDLeaf(StringData.Length, TimeLen); dictStringData.Add(i, StringData); dictLeafData.Add(i, LeafData); } int rootDataLen = 0; for (int i = 0; i < dictStringData.Count; i++) { rootDataLen += dictStringData[i].Length + dictLeafData[i].Length; } byte[] RootData = BeiJingShiZhanLEDCommander.BJSZ_LEDRoot(rootDataLen, dictStringData.Count, SaveInLed,ledColorType); byte[] SendDataHead = BeiJingShiZhanLEDCommander.BJSZ_LEDSendDataHead(); List<byte> lstData = new List<byte>(); lstData.Add(0x55); BeiJingShiZhanLEDCommander.OrganizeInstruction(SendDataHead, ref lstData); BeiJingShiZhanLEDCommander.OrganizeInstruction(RootData, ref lstData); for (int i = 0; i < dictLeafData.Count; i++) { BeiJingShiZhanLEDCommander.OrganizeInstruction(dictLeafData[i], ref lstData); BeiJingShiZhanLEDCommander.OrganizeInstruction(dictStringData[i], ref lstData); } data = BeiJingShiZhanLEDCommander.AddCRCToInstruction(lstData.ToArray()); lstInstruction.Add(data); data = BeiJingShiZhanLEDCommander.BJSZ_LEDEndData(); lstInstruction.Add(data); return lstInstruction; }