传感器电源开关数据绑定及下发

This commit is contained in:
MoYue 2024-05-22 18:37:51 +08:00
parent a6bcd7eae7
commit 52021c9ef7
7 changed files with 690 additions and 31 deletions

View File

@ -0,0 +1,49 @@
using LiveCharts.Wpf;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InSituLaboratory.Entities
{
/// <summary>
/// 数据解析通用字段
/// </summary>
[SugarTable("DataParsingModel")]
public class DataParsingModelSqlSugar
{
/// <summary>
/// 主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsIdentity = true, IsPrimaryKey = true)]
public int Id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime CreateTime { get; set; }
/// <summary>
/// 应答流水号
/// </summary>
[SugarColumn(IsNullable = true)]
public string? ResponseNum { get; set; }
/// <summary>
/// 应答ID
/// </summary>
[SugarColumn(IsNullable = true)]
public string? ResponseID { get; set; }
/// <summary>
/// 应答结果
/// </summary>
[SugarColumn(IsNullable = true)]
public string? ResponseResult { get; set; }
}
}

View File

@ -9,6 +9,7 @@
<ItemGroup>
<PackageReference Include="LiveCharts.Wpf" Version="0.9.7" />
<PackageReference Include="SqlSugarCore" Version="5.1.4.156" />
</ItemGroup>
</Project>

View File

@ -331,6 +331,51 @@ namespace InSituLaboratory.Entities
}
#endregion
#region 16
/// <summary>
/// 字节数组转16进制字符串
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public static string byteToHexStr(byte[] bytes)
{
string returnStr = "";
if (bytes != null)
{
for (int i = 0; i < bytes.Length; i++)
{
returnStr += bytes[i].ToString("X2");
}
}
return returnStr;
}
#endregion
#region 16
/// <summary>
/// 16进制原码字符串转字节数组
/// </summary>
/// <param name="hexString">"AABBCC"或"AA BB CC"格式的字符串</param>
/// <returns></returns>
public static byte[] ConvertHexStringToBytes(string hexString)
{
hexString = hexString.Replace(" ", "");
if (hexString.Length % 2 != 0)
{
throw new ArgumentException("参数长度不正确");
}
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
{
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
return returnBytes;
}
#endregion
#region 1/0 True/False
public static List<bool> O_C(string o_c)
{

View File

@ -5,9 +5,7 @@
</startup>
<!--数据库连接信息-->
<connectionStrings>
<add name="db" connectionString="server=127.0.0.1;port=3306;user=root;password=zttZTT1234;database=0592_fjdzgcw_fbhcj;Allow User Variables=True;" />
<!--<add name="db" connectionString="server=10.8.2.5;port=3306;user=root;password=zttZTT123!;database=0592_fjdzgcw_fbhcj;Allow User Variables=True;" />-->
<add name="db_Sever" connectionString="server=110.42.244.149;port=3306;user=root;password=rootme;database=0592_fjdzgcw_fbhcj;Allow User Variables=True;" />
<add name="db" connectionString="Data Source=data.db" />
</connectionStrings>
<appSettings>
<!--文件保存路劲-->

View File

@ -1,6 +1,7 @@
using InSituLaboratory.Entities;
using InSituLaboratory.Service;
using Microsoft.EntityFrameworkCore;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
@ -14,10 +15,10 @@ namespace InSituLaboratory.Common
/// </summary>
public class DataParsing
{
//连接钥匙
private static readonly string ConnStr = System.Configuration.ConfigurationManager.ConnectionStrings["db"].ConnectionString;
//public DataParsing() { }
public DataParsingModel dataParsingModel = new DataParsingModel();
public DataParsingModelSqlSugar dataParsingModel = new DataParsingModelSqlSugar();
//获取当前程序运行路径
private string Save_Path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"数据记录\";
@ -26,7 +27,7 @@ namespace InSituLaboratory.Common
public static DateTime Record_firstCode = DateTime.Now;
//标志位头
string flag = "7f";
byte flag = 0x7f;
//应答流水号
string ResponseNum = "";
@ -58,6 +59,14 @@ namespace InSituLaboratory.Common
tools.AddLgoToTXT("原始数据报文.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + NR_TXT + "\r\n");
//SqlSugar配置文件
ConnectionConfig connectionConfig = new ConnectionConfig()
{
ConnectionString = ConnStr,
IsAutoCloseConnection = true,
DbType = DbType.Sqlite
};
//转义
int j = 0;
for (int i = 0; i < byteList.Count; i++)
@ -89,19 +98,26 @@ namespace InSituLaboratory.Common
//定义转义后的list数组
List<byte> dataNew = new List<byte>();
string Latter_TXT = "";
for (int i = 0; i < dataTemp.Length; i++)
{
dataNew.Add(dataTemp[i]);
Latter_TXT += dataTemp[i].ToString("X2") + " ";
}
//数据域数组
List<byte> bytes = new List<byte>();
for (int i = 1; i < dataTemp.Length - 2; i++)
{
bytes.Add(dataTemp[i]);
}
tools.AddLgoToTXT("转义后数据报文.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + Latter_TXT + "\r\n");
nr_crc = tools.CRC(dataNew.ToArray(), 0, dataNew.Count - 1);
nr_crc = tools.CRC(bytes.ToArray(), 0, bytes.Count);
///包头包尾 crc校验
if (((dataNew[0].ToString("X2") != flag) || (dataNew[byteList.Count - 1].ToString("X2")) != flag) || dataNew[14] != nr_crc)
if (((dataNew[0] != flag) || (dataNew[byteList.Count - 1]) != flag) || dataNew[14] != nr_crc)
return;
@ -112,26 +128,37 @@ namespace InSituLaboratory.Common
//应答流水号
dataParsingModel.ResponseNum = dataNew[9].ToString("X2") + dataNew[10].ToString("X2");
//应答ID
dataParsingModel.ResponseID = dataNew[11].ToString("X2") + dataNew[12].ToString("X2");
//结果
switch (dataNew[13].ToString("X2"))
if (dataNew[11].ToString("X2") + dataNew[12].ToString("X2") == "9100")
{
case "0":
dataParsingModel.ResponseID = "9100-时序下发";
}
else if (dataNew[11].ToString("X2") + dataNew[12].ToString("X2") == "9201")
{
dataParsingModel.ResponseID = "9201-局部控制开关";
}
//结果
switch (dataNew[13])
{
case 0x00:
dataParsingModel.ResponseResult = "成功/确认";
break;
case "1":
case 0x01:
dataParsingModel.ResponseResult = "失败/不存在";
break;
case "2":
case 0x02:
dataParsingModel.ResponseResult = "消息错误";
break;
case "3":
case 0x03:
dataParsingModel.ResponseResult = "不支持";
break;
default:
break;
}
//this.Insert<DataParsingModel>(dataParsingModel);
using (SqlSugarClient db = new SqlSugarClient(connectionConfig))
{
db.Insertable<DataParsingModelSqlSugar>(dataParsingModel).ExecuteCommand();
}
}
}

View File

@ -27,6 +27,7 @@
<PackageReference Include="HandyControl" Version="3.5.1" />
<PackageReference Include="LiveCharts.Wpf" Version="0.9.7" />
<PackageReference Include="Prism.Unity" Version="8.1.97" />
<PackageReference Include="SqlSugarCore" Version="5.1.4.156" />
</ItemGroup>
</Project>

View File

@ -15,6 +15,9 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Markup;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace InSituLaboratory.ViewModels.Pages
@ -125,7 +128,7 @@ namespace InSituLaboratory.ViewModels.Pages
SocketInfo.ConnectionMessage = "连接";
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "客户端连接已关闭";
logModel.Remark = "服务端连接已关闭";
_logService.Insert<LogModel>(logModel);
this.Refresh();
}
@ -140,7 +143,7 @@ namespace InSituLaboratory.ViewModels.Pages
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "连接客户端成功";
logModel.Remark = "连接服务端成功";
_logService.Insert<LogModel>(logModel);
this.Refresh();
}
@ -148,7 +151,7 @@ namespace InSituLaboratory.ViewModels.Pages
{
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "连接客户端失败";
logModel.Remark = "连接服务端失败";
_logService.Insert<LogModel>(logModel);
this.Refresh();
}
@ -165,86 +168,621 @@ namespace InSituLaboratory.ViewModels.Pages
{
//工控机
case "InComputer":
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.InComputer = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "工控机已" + sysSensorModel.InComputer;
_logService.Insert<LogModel>(logModel);
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.InComputer = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "工控机已" + sysSensorModel.InComputer;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.InComputer == "开")
{
Control(0x00, 0x01);
}
else
{
Control(0x00, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//灯1
case "Light1":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.Light1 = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "灯1已" + sysSensorModel.Light1;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.Light1 == "开")
{
Control(0x01, 0x01);
}
else
{
Control(0x01, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//灯2
case "Light2":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.Light2 = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "灯2已" + sysSensorModel.Light2;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.Light2 == "开")
{
Control(0x02, 0x01);
}
else
{
Control(0x02, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//光通讯机
case "LightMachine":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.LightMachine = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "光通讯机已" + sysSensorModel.LightMachine;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.LightMachine == "开")
{
Control(0x03, 0x01);
}
else
{
Control(0x03, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//ADCP
case "ADCP":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.ADCP = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "ADCP已" + sysSensorModel.ADCP;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.ADCP == "开")
{
Control(0x04, 0x01);
}
else
{
Control(0x04, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//CTD
case "CTD":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.CTD = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "CTD已" + sysSensorModel.CTD;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.CTD == "开")
{
Control(0x05, 0x01);
}
else
{
Control(0x05, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//气相色谱仪
case "SP":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.SP = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "气相色谱仪已" + sysSensorModel.SP;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.SP == "开")
{
Control(0x06, 0x01);
}
else
{
Control(0x06, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//甲烷传感器
case "CH4":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.CH4 = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "甲烷传感器已" + sysSensorModel.CH4;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.CH4 == "开")
{
Control(0x07, 0x01);
}
else
{
Control(0x07, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//二氧化碳同位素分析仪
case "CO2":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.CO2 = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "二氧化碳同位素分析仪已" + sysSensorModel.CO2;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.CO2 == "开")
{
Control(0x08, 0x01);
}
else
{
Control(0x08, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//备用网口设备
case "NetEquipment":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.NetEquipment = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "备用网口设备已" + sysSensorModel.NetEquipment;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.NetEquipment == "开")
{
Control(0x09, 0x01);
}
else
{
Control(0x09, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//串口服务器
case "SerialPortServer":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.SerialPortServer = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "串口服务器已" + sysSensorModel.SerialPortServer;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.SerialPortServer == "开")
{
Control(0x0a, 0x01);
}
else
{
Control(0x0a, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//显微拉曼分析仪
case "RamanAnalyzer":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.RamanAnalyzer = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "显微拉曼分析仪已" + sysSensorModel.RamanAnalyzer;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.RamanAnalyzer == "开")
{
Control(0x0b, 0x01);
}
else
{
Control(0x0b, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//质谱仪
case "ZP":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.ZP = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "质谱仪已" + sysSensorModel.ZP;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.ZP == "开")
{
Control(0x0c, 0x01);
}
else
{
Control(0x0c, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
// 声学定位
case "AcousticPositioning":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.AcousticPositioning = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "声学定位已" + sysSensorModel.AcousticPositioning;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.AcousticPositioning == "开")
{
Control(0x0d, 0x01);
}
else
{
Control(0x0d, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//摄像1
case "Camera1":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.Camera1 = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "摄像1已" + sysSensorModel.Camera1;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.Camera1 == "开")
{
Control(0x0e, 0x01);
}
else
{
Control(0x0e, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//摄像2
case "Camera2":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.Camera2 = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "摄像2已" + sysSensorModel.Camera2;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.Camera2 == "开")
{
Control(0x0f, 0x01);
}
else
{
Control(0x0f, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
//电交换机2
case "ElectricSwitch2":
if (SocketInfo.ConnectionMessage == "断开")
{
sysSensorModel.Id = sysSensorModels.Id;
sysSensorModel.ElectricSwitch2 = msg[1].Equals("True") ? "开" : "关";
sysSensorModel.CreateTime = DateTime.Now;
_sensorService.Update(sysSensorModel);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "电交换机2已" + sysSensorModel.ElectricSwitch2;
_logService.Insert<LogModel>(logModel);
if (sysSensorModel.ElectricSwitch2 == "开")
{
Control(0x10, 0x01);
}
else
{
Control(0x10, 0x00);
}
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
logModel.Remark = "服务端未连接";
_logService.Insert<LogModel>(logModel);
}
this.Refresh();
break;
default:
break;
}
}
/// <summary>
/// 远程控制
/// </summary>
/// <param name="kind"> 传感器识别码</param>
/// <param name="operation">操作</param>
private void Control(byte kind, byte operation)
{
//标志位
byte head = 0x7f;
//crc
byte nr_crc = 0;
//消息体
byte[] byteaq = new byte[] { 0x92, 0x01, 0x10, 0x01, 0x00, 0x00, 0x00, 0x02, kind, operation };
nr_crc = tools.CRC(byteaq.ToArray(), 0, byteaq.Length);
///转义
int j = 0;
List<byte> tBuffer = byteaq.ToList();
tBuffer.Add(nr_crc);
int length = tBuffer.ToArray().Length;
byte[] newAnswer = tBuffer.ToArray();
for (int i = 0; i < length; i++)
{
if (newAnswer[i] == 0x7e || newAnswer[i] == 0x7f)
{
j++;
}
}
byte[] newSendBuffer = new byte[length + j];
for (int i = 0; i < length; i++)
{
newSendBuffer[i] = newAnswer[i];
}
for (int i = 0; i < length + j; i++)
{
if (newSendBuffer[i] == 0x7e)
{
for (int k = length + j - 1; k > i + 1; k--)
{
newSendBuffer[k] = newSendBuffer[k - 1];
}
newSendBuffer[i + 1] = 0x01;
}
if (newSendBuffer[i] == 0x7f)
{
newSendBuffer[i] = 0x7e;
for (int k = length + j - 1; k > i + 1; k--)
{
newSendBuffer[k] = newSendBuffer[k - 1];
}
newSendBuffer[i + 1] = 0x02;
}
}
List<byte> buffer = new List<byte>();
buffer.Add(head);
for (int i = 0; i < newSendBuffer.Length; i++)
{
buffer.Add(newSendBuffer[i]);
}
buffer.Add(head);
string list = tools.byteToHexStr(buffer.ToArray());
byte[] bytea = tools.ConvertHexStringToBytes(list);
clientModel.SendData(bytea);
}
}
}