using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; namespace SSWMS.Server { public class LED { private static readonly Dictionary dLed = new Dictionary() { { "120003", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.42"), LED_TEXT_DEFAULT_2 = "1 巷道左" } }, { "120008", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.47"), LED_TEXT_DEFAULT_2 = "1 巷道右" } }, { "120103", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.55"), LED_TEXT_DEFAULT_2 = "2 巷道左" } }, { "120108", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.39"), LED_TEXT_DEFAULT_2 = "2 巷道右" } }, { "120203", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.29"), LED_TEXT_DEFAULT_2 = "3 巷道左" } }, { "120208", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.49"), LED_TEXT_DEFAULT_2 = "3 巷道右" } }, { "120303", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.33"), LED_TEXT_DEFAULT_2 = "4 巷道左" } }, { "120308", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.35"), LED_TEXT_DEFAULT_2 = "4 巷道右" } }, { "120403", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.51"), LED_TEXT_DEFAULT_2 = "5 巷道左" } }, { "120408", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.36"), LED_TEXT_DEFAULT_2 = "5 巷道右" } }, { "120503", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.62"), LED_TEXT_DEFAULT_2 = "6 巷道左" } }, { "120508", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.57"), LED_TEXT_DEFAULT_2 = "6 巷道右" } }, { "120603", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.37"), LED_TEXT_DEFAULT_2 = "7 巷道左" } }, { "120608", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.32"), LED_TEXT_DEFAULT_2 = "7 巷道右" } }, { "120703", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.60"), LED_TEXT_DEFAULT_2 = "8 巷道左" } }, { "120708", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.63"), LED_TEXT_DEFAULT_2 = "8 巷道右" } }, { "120803", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.41"), LED_TEXT_DEFAULT_2 = "9 巷道左" } }, { "120808", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.34"), LED_TEXT_DEFAULT_2 = "9 巷道右" } }, { "120903", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.43"), LED_TEXT_DEFAULT_2 = "10 巷道左" } }, { "120908", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.46"), LED_TEXT_DEFAULT_2 = "10 巷道右" } }, { "121003", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.45"), LED_TEXT_DEFAULT_2 = "11 巷道左" } }, { "121008", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.53"), LED_TEXT_DEFAULT_2 = "11 巷道右" } }, { "121103", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.28"), LED_TEXT_DEFAULT_2 = "12 巷道左" } }, { "121108", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.30"), LED_TEXT_DEFAULT_2 = "12 巷道右" } }, { "121311", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.59"), LED_TEXT_DEFAULT_2 = "14 巷道左" } }, { "121312", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.58"), LED_TEXT_DEFAULT_2 = "14 巷道右" } }, { "121411", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.48"), LED_TEXT_DEFAULT_2 = "15 巷道左" } }, { "121412", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.31"), LED_TEXT_DEFAULT_2 = "15 巷道右" } }, { "121511", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.64"), LED_TEXT_DEFAULT_2 = "16 巷道左" } }, { "121512", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.65"), LED_TEXT_DEFAULT_2 = "16 巷道右" } }, { "121809", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.52"), LED_TEXT_DEFAULT_2 = "18 巷道左" } }, { "121811", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.50"), LED_TEXT_DEFAULT_2 = "18 巷道右" } }, { "126901", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.38"), LED_TEXT_DEFAULT_2 = "平库左" } }, { "127001", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.54"), LED_TEXT_DEFAULT_2 = "平库右" } }, { "126501", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.56"), LED_TEXT_DEFAULT_2 = "制毡区 126501" } }, { "126601", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.40"), LED_TEXT_DEFAULT_2 = "制毡区 126601" } }, { "126701", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.44"), LED_TEXT_DEFAULT_2 = "制毡区 126701" } }, { "126801", new LED_MAIN() { LED_IP = Encoding.GetEncoding("GBK").GetBytes("10.241.121.61"), LED_TEXT_DEFAULT_2 = "制毡区 126801" } }, }; private static bxdualsdk.DynamicAreaParams[] areaParams; public static void InitSdk() { bxdualsdk.bxDual_InitSdk(); areaParams = new bxdualsdk.DynamicAreaParams[4]; areaParams[0].uAreaId = 0; areaParams[0].oAreaHeader_G6 = new bxdualsdk.EQareaHeader_G6() { AreaX = 8, AreaY = 0, AreaWidth = 240, AreaHeight = 24, }; areaParams[0].stPageHeader = new bxdualsdk.EQpageHeader_G6() { DisplayMode = 0x2, ClearMode = 0x1, Speed = 40, StayTime = 300, RepeatTime = 1, fontSize = 18, color = (uint)0x01 }; byte[] Font = Encoding.GetEncoding("GBK").GetBytes("宋体\0"); areaParams[0].fontName = Marshal.AllocHGlobal(Font.Length); Marshal.Copy(Font, 0, areaParams[0].fontName, Font.Length); areaParams[1].uAreaId = 1; areaParams[1].oAreaHeader_G6 = new bxdualsdk.EQareaHeader_G6() { AreaX = 8, AreaY = 24, AreaWidth = 240, AreaHeight = 24, }; areaParams[1].stPageHeader = areaParams[0].stPageHeader; areaParams[1].fontName = Marshal.AllocHGlobal(Font.Length); Marshal.Copy(Font, 0, areaParams[1].fontName, Font.Length); areaParams[2].uAreaId = 2; areaParams[2].oAreaHeader_G6 = new bxdualsdk.EQareaHeader_G6() { AreaX = 8, AreaY = 48, AreaWidth = 240, AreaHeight = 24, }; areaParams[2].stPageHeader = areaParams[0].stPageHeader; areaParams[2].fontName = Marshal.AllocHGlobal(Font.Length); Marshal.Copy(Font, 0, areaParams[2].fontName, Font.Length); areaParams[3].uAreaId = 3; areaParams[3].oAreaHeader_G6 = new bxdualsdk.EQareaHeader_G6() { AreaX = 8, AreaY = 72, AreaWidth = 240, AreaHeight = 24, }; areaParams[3].stPageHeader = areaParams[0].stPageHeader; areaParams[3].fontName = Marshal.AllocHGlobal(Font.Length); Marshal.Copy(Font, 0, areaParams[3].fontName, Font.Length); } public static void ReleaseSdk() { bxdualsdk.bxDual_ReleaseSdk(); } public static void Update(string sDeviceCode, string sText2, string sText3, string sText4) { if (S_ControlService.dScanBack.ContainsKey(sDeviceCode)) { sDeviceCode = S_ControlService.dScanBack[sDeviceCode]; } if (dLed.TryGetValue(sDeviceCode, out LED_MAIN led)) { led.LED_TEXT_UPDATE_1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); led.LED_TEXT_UPDATE_2 = sText2; led.LED_TEXT_UPDATE_3 = sText3; led.LED_TEXT_UPDATE_4 = sText4; led.LED_TIME = DateTime.Now; } } public static bool LEDTask(out string sResult) { sResult = string.Empty; try { DateTime dtExpired = DateTime.Now.AddMinutes(-5); string sNow = DateTime.Now.ToString("yyyy-MM-dd"); foreach (LED_MAIN led in dLed.Values) { if (led.LED_TIME != null && dtExpired < led.LED_TIME) { if (led.LED_TEXT_NOW_1 != led.LED_TEXT_UPDATE_1 || led.LED_TEXT_NOW_2 != led.LED_TEXT_UPDATE_2 || led.LED_TEXT_NOW_3 != led.LED_TEXT_UPDATE_3 || led.LED_TEXT_NOW_4 != led.LED_TEXT_UPDATE_4) { if (DynamicArea(led.LED_IP, led.LED_TEXT_UPDATE_1, string.IsNullOrWhiteSpace(led.LED_TEXT_UPDATE_2) ? led.LED_TEXT_DEFAULT_2 : led.LED_TEXT_UPDATE_2, string.IsNullOrWhiteSpace(led.LED_TEXT_UPDATE_3) ? led.LED_TEXT_DEFAULT_3 : led.LED_TEXT_UPDATE_3, string.IsNullOrWhiteSpace(led.LED_TEXT_UPDATE_4) ? led.LED_TEXT_DEFAULT_4 : led.LED_TEXT_UPDATE_4) == 0) { led.LED_TEXT_NOW_1 = led.LED_TEXT_UPDATE_1; led.LED_TEXT_NOW_2 = led.LED_TEXT_UPDATE_2; led.LED_TEXT_NOW_3 = led.LED_TEXT_UPDATE_3; led.LED_TEXT_NOW_4 = led.LED_TEXT_UPDATE_4; } } } else if (led.LED_TEXT_NOW_1 != sNow) { if (DynamicArea(led.LED_IP, sNow, led.LED_TEXT_DEFAULT_2, led.LED_TEXT_DEFAULT_3, led.LED_TEXT_DEFAULT_4) == 0) { led.LED_TEXT_NOW_1 = sNow; led.LED_TEXT_NOW_2 = led.LED_TEXT_DEFAULT_2; led.LED_TEXT_NOW_3 = led.LED_TEXT_DEFAULT_3; led.LED_TEXT_NOW_4 = led.LED_TEXT_DEFAULT_4; } } } return true; } catch (Exception ex) { sResult = ex.Message; return false; } } private static int DynamicArea(byte[] aIP, string sText1, string sText2, string sText3, string sText4) { int err = 0; bxdualsdk.EQprogramHeader_G6 programHeader = new bxdualsdk.EQprogramHeader_G6() { ProgramWeek = 0xff, ProgramLifeSpan_ey = 0xffff }; err |= bxdualsdk.bxDual_program_addProgram_G6(ref programHeader); sText1 = string.IsNullOrWhiteSpace(sText1) ? " " : sText1; sText2 = string.IsNullOrWhiteSpace(sText2) ? " " : sText2; sText3 = string.IsNullOrWhiteSpace(sText3) ? " " : sText3; sText4 = string.IsNullOrWhiteSpace(sText4) ? " " : sText4; byte[] str1 = Encoding.GetEncoding("GBK").GetBytes($"{sText1}\0"); areaParams[0].strAreaTxtContent = Marshal.AllocHGlobal(str1.Length); Marshal.Copy(str1, 0, areaParams[0].strAreaTxtContent, str1.Length); byte[] str2 = Encoding.GetEncoding("GBK").GetBytes($"{sText2}\0"); areaParams[1].strAreaTxtContent = Marshal.AllocHGlobal(str2.Length); Marshal.Copy(str2, 0, areaParams[1].strAreaTxtContent, str2.Length); byte[] str3 = Encoding.GetEncoding("GBK").GetBytes($"{sText3}\0"); areaParams[2].strAreaTxtContent = Marshal.AllocHGlobal(str3.Length); Marshal.Copy(str3, 0, areaParams[2].strAreaTxtContent, str3.Length); byte[] str4 = Encoding.GetEncoding("GBK").GetBytes($"{sText4}\0"); areaParams[3].strAreaTxtContent = Marshal.AllocHGlobal(str4.Length); Marshal.Copy(str4, 0, areaParams[3].strAreaTxtContent, str4.Length); err |= bxdualsdk.bxDual_dynamicAreaS_AddTxtDetails_6G(aIP, 5005, bxdualsdk.E_ScreenColor_G56.eSCREEN_COLOR_SINGLE, (byte)areaParams.Length, areaParams); return err; } //private static int SendText(byte[] aIP, string sText1, string sText2, string sText3, string sText4) //{ // int err = 0; // bxdualsdk.EQprogramHeader_G6 programHeader = new bxdualsdk.EQprogramHeader_G6() // { // ProgramWeek = 0xff, // ProgramLifeSpan_ey = 0xffff // }; // err |= bxdualsdk.bxDual_program_addProgram_G6(ref programHeader); // bxdualsdk.EQareaHeader_G6 areaHeader1 = new bxdualsdk.EQareaHeader_G6() // { // AreaX = 0, // AreaY = 0, // AreaWidth = 128, // AreaHeight = 16, // }; // err |= bxdualsdk.bxDual_program_addArea_G6(0, ref areaHeader1); // bxdualsdk.EQareaHeader_G6 areaHeader2 = new bxdualsdk.EQareaHeader_G6() // { // AreaX = 0, // AreaY = 16, // AreaWidth = 128, // AreaHeight = 16, // }; // err |= bxdualsdk.bxDual_program_addArea_G6(1, ref areaHeader2); // byte[] Font = Encoding.GetEncoding("GBK").GetBytes("宋体\0"); // bxdualsdk.EQpageHeader_G6 pageHeader = new bxdualsdk.EQpageHeader_G6() // { // DisplayMode = 0x2, // ClearMode = 0x1, // Speed = 40, // StayTime = 200, // RepeatTime = 1, // fontSize = 11, // color = (uint)0x01 // }; // if (string.IsNullOrWhiteSpace(sText1)) // { // sText1 = " "; // } // if (string.IsNullOrWhiteSpace(sText2)) // { // sText2 = " "; // } // err |= bxdualsdk.bxDual_program_picturesAreaAddTxt_G6(0, Encoding.GetEncoding("GBK").GetBytes($"{sText1}\0"), Font, ref pageHeader); // err |= bxdualsdk.bxDual_program_picturesAreaAddTxt_G6(1, Encoding.GetEncoding("GBK").GetBytes($"{sText2}\0"), Font, ref pageHeader); // bxdualsdk.EQprogram_G6 program = new bxdualsdk.EQprogram_G6(); // err |= bxdualsdk.bxDual_program_IntegrateProgramFile_G6(ref program); // err |= bxdualsdk.bxDual_program_deleteProgram_G6(); // err |= bxdualsdk.bxDual_cmd_ofsStartFileTransf(aIP, 5005); // err |= bxdualsdk.bxDual_cmd_ofsWriteFile(aIP, 5005, program.dfileName, program.dfileType, program.dfileLen, 1, program.dfileAddre); // err |= bxdualsdk.bxDual_cmd_ofsWriteFile(aIP, 5005, program.fileName, program.fileType, program.fileLen, 1, program.fileAddre); // err |= bxdualsdk.bxDual_cmd_ofsEndFileTransf(aIP, 5005); // err |= bxdualsdk.bxDual_program_freeBuffer_G6(ref program); // return err; //} } }