巨石化纤
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

270 lines
16 KiB

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace SSWMS.Server
{
public class LED
{
private static readonly Dictionary<string, LED_MAIN> dLed = new Dictionary<string, LED_MAIN>()
{
{ "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;
//}
}
}