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

235 lines
9.7 KiB
C#

1 year ago
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using LedSDKDemo_CSharp;
using System.Threading;
using IOT.Show.SqlBase;
using IOT.Show.Common;
using IOT.Show.Model;
namespace IOT.Show
{
/// <summary>
/// led服务操作
/// </summary>
public class LedServer
{
private static SqlSugarBase dbSql = new SqlSugarBase();
public static void init(string title)
{
while (true)
{
try
{
List<T_Led_Info> ledInfo = dbSql.getLedInfo(title);
DataTable dt = dbSql.getLedData(title);
List<T_Led_Data> _Datas = dbSql.ConvertDataTableToList<T_Led_Data>(dt);
DataTable dataTable = dbSql.ListToTable(_Datas);
if (dataTable != null)
{
T_Led_Info item = ledInfo.Where(x => x.title == title).FirstOrDefault();
if (item != null)
{
LogHelper.Info($"{title}冷却循环水温度");
byte[] ip = Encoding.GetEncoding("GBK").GetBytes(item.ip);
bx_sdk_dual2.InitSdk();//初始化
bool result = dynamicArea_6(ip, item.title, item.font, item.ip, dataTable);
if (result)
{
LogHelper.Info(item.title + "Led刷新成功,地址为:" + item.ip);
}
bx_sdk_dual2.ReleaseSdk();
}
else
{
Console.WriteLine("item == null");
}
}
else
{
Console.WriteLine("DataTable为空");
}
System.Threading.Thread.Sleep(1000 * 1);
}
catch (Exception ex)
{
LogHelper.Error("init异常", ex);
}
}
}
/// <summary>
/// 动态区域更新
/// </summary>
/// <param name="ip"></param>
/// <param name="title"></param>
/// <returns></returns>
public static bool dynamicArea_6(byte[] ip, string title, string fonts, string ipStr, DataTable dataTable)
{
bool result = false;
if (dataTable == null)
{
return false;
}
try
{
StringBuilder text = new StringBuilder();
int intPadRight = 1;
int fontSize = 10;
byte[] font = Encoding.Default.GetBytes(fonts);
//DataTable dataTable = dbSql.getLedData(title);
int rows = dataTable.Rows.Count;
text.Append(" " + title + "冷却循环水温度 \n");
text.Append("位置 " + " 进水温度 " + " 出水温度 " + " 温差 \n");
for (int i = 0; i < rows; i++)
{
if (dataTable.Rows[i]["monitorName"].ToString().Contains("-"))
{
dataTable.Rows[i]["monitorName"] = dataTable.Rows[i]["monitorName"].ToString().Substring(4, dataTable.Rows[i]["monitorName"].ToString().Length - 4);
}
else
{
dataTable.Rows[i]["monitorName"] = dataTable.Rows[i]["monitorName"].ToString().Substring(3, dataTable.Rows[i]["monitorName"].ToString().Length - 3);
}
if (dataTable.Rows[i]["monitorName"].ToString().Length == 3)
{
dataTable.Rows[i]["monitorName"] = dataTable.Rows[i]["monitorName"].ToString() + " ";
}
if (Convert.ToDecimal(dataTable.Rows[i]["tempreture"]) < 1)
{
text.Append((dataTable.Rows[i]["monitorName"].ToString().PadRight(dataTable.Rows[0]["monitorName"].ToString().Length, ' ') + " " + "00.00").PadRight(intPadRight + 3, ' ') + "℃ ");
}
else
{
text.Append((dataTable.Rows[i]["monitorName"].ToString().PadRight(dataTable.Rows[0]["monitorName"].ToString().Length, ' ') + " " + dataTable.Rows[i]["tempreture"]).PadRight(intPadRight + 3, ' ') + "℃ ");
}
if (Convert.ToDecimal(dataTable.Rows[i]["humidity"].ToString()) < 1)
{
text.Append(("00.00").PadRight(intPadRight + 3, ' ') + "℃");
}
else
{
text.Append((dataTable.Rows[i]["humidity"].ToString()).PadRight(intPadRight + 3, ' ') + "℃");
}
text.Append(" ");
if (dataTable.Rows[i]["illuminance"].ToString() == "")
{
text.Append(("00.00").PadRight(intPadRight + 3, ' ') + "℃");
}
else
{
text.Append((dataTable.Rows[i]["illuminance"].ToString()).PadRight(intPadRight + 3, ' ') + "℃");
}
text.Append("\n");
if (i + 1 == 5 || i + 1 == 10 || i + 1 == 15 || i + 1 == 20)
{
test(text, ip, font, fontSize);
Thread.Sleep(1000 * 6);
text = new StringBuilder();
text.Append(" " + title + "冷却循环水温度 \n");
text.Append("位置 " + " 进水温度 " + " 出水温度 " + " 温差 \n");
}
else if (i == rows - 1)
{
test(text, ip, font, fontSize);
Thread.Sleep(1000 * 6);
text = new StringBuilder();
text.Append(" " + title + "冷却循环水温度 \n");
text.Append("位置 " + "进水温度 " + " 出水温度 " + " 温差 \n");
}
}
return true;
}
catch (Exception ex)
{
LogHelper.Error("dynamicArea_6程序异常" + ex.Message);
return result;
}
}
private static void test(StringBuilder text, byte[] ip, byte[] font, int fontSize)
{
string textT = text.ToString().Substring(0, text.ToString().Length - 1) + '\0';
Console.WriteLine(textT);
bx_sdk_dual2.EQareaHeader_G6 aheader;
aheader.AreaType = 0x10;
aheader.AreaX = 0;
aheader.AreaY = 0;
aheader.AreaWidth = 256;
aheader.AreaHeight = 96;
aheader.BackGroundFlag = 0x00;
aheader.Transparency = 101;
aheader.AreaEqual = 0x00;
bx_sdk_dual2.EQSound_6G stSoundData = new bx_sdk_dual2.EQSound_6G();
byte[] strSoundTxt = Encoding.GetEncoding("GB2312").GetBytes("插入ab34测试语音");
stSoundData.SoundFlag = 0x00;
stSoundData.SoundPerson = 0x01;
stSoundData.SoundVolum = 6;
stSoundData.SoundSpeed = 0x2;
stSoundData.SoundDataMode = 0x00;
stSoundData.SoundReplayTimes = 0x01;
stSoundData.SoundReplayDelay = 200;
stSoundData.SoundReservedParaLen = 0x03;
stSoundData.Soundnumdeal = 0x00;
stSoundData.Soundlanguages = 0x00;
stSoundData.Soundwordstyle = 0x00;
stSoundData.SoundDataLen = strSoundTxt.Length;
stSoundData.SoundData = TypeCast.BytesToIntptr(strSoundTxt);
aheader.stSoundData = stSoundData;
bx_sdk_dual2.EQpageHeader_G6 pheader;
pheader.PageStyle = 0x00;
pheader.DisplayMode = 1;
pheader.ClearMode = 0x00;
pheader.Speed = 15;
pheader.StayTime = 500;
pheader.RepeatTime = 1;
pheader.ValidLen = 0;
pheader.CartoonFrameRate = 0x00;
pheader.BackNotValidFlag = 0x00;
pheader.arrMode = bx_sdk_dual2.E_arrMode.eMULTILINE;
pheader.fontSize = Convert.ToUInt16(fontSize);
pheader.color = (uint)0x01;
pheader.fontBold = 0;
pheader.fontItalic = 0;
pheader.tdirection = bx_sdk_dual2.E_txtDirection.pNORMAL;
pheader.txtSpace = 0;
pheader.Valign = 1;
pheader.Halign = 2;
IntPtr aa1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(bx_sdk_dual2.EQareaHeader_G6)));
Marshal.StructureToPtr(aheader, aa1, false);
IntPtr bb1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(bx_sdk_dual2.EQpageHeader_G6)));
Marshal.StructureToPtr(pheader, bb1, false);
//LogHelper.Info("LED数据上传地址" + System.Text.Encoding.UTF8.GetString(ip)+ ":5005");
//更新动态区,可设置属性 zc
int info = bx_sdk_dual2.dynamicArea_AddAreaTxtDetails_6G(ip, 5005, bx_sdk_dual2.E_ScreenColor_G56.eSCREEN_COLOR_SINGLE, 0,
ref aheader, ref pheader, font, Encoding.Default.GetBytes(textT));
}
}
}