diff --git a/InSituLaboratory.Entities/DataParsingModelSqlSugar.cs b/InSituLaboratory.Entities/DataParsingModelSqlSugar.cs
new file mode 100644
index 0000000..a4358fa
--- /dev/null
+++ b/InSituLaboratory.Entities/DataParsingModelSqlSugar.cs
@@ -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
+{
+ ///
+ /// 数据解析通用字段
+ ///
+ [SugarTable("DataParsingModel")]
+ public class DataParsingModelSqlSugar
+ {
+ ///
+ /// 主键
+ ///
+ [SugarColumn(ColumnName = "Id", IsIdentity = true, IsPrimaryKey = true)]
+ public int Id { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ [SugarColumn(IsNullable = true)]
+ public DateTime CreateTime { get; set; }
+
+ ///
+ /// 应答流水号
+ ///
+ [SugarColumn(IsNullable = true)]
+ public string? ResponseNum { get; set; }
+
+ ///
+ /// 应答ID
+ ///
+ [SugarColumn(IsNullable = true)]
+ public string? ResponseID { get; set; }
+
+ ///
+ /// 应答结果
+ ///
+ [SugarColumn(IsNullable = true)]
+ public string? ResponseResult { get; set; }
+
+ }
+}
diff --git a/InSituLaboratory.Entities/InSituLaboratory.Entities.csproj b/InSituLaboratory.Entities/InSituLaboratory.Entities.csproj
index cbdc03e..5ef6c26 100644
--- a/InSituLaboratory.Entities/InSituLaboratory.Entities.csproj
+++ b/InSituLaboratory.Entities/InSituLaboratory.Entities.csproj
@@ -9,6 +9,7 @@
+
diff --git a/InSituLaboratory.Entities/tools.cs b/InSituLaboratory.Entities/tools.cs
index 21c1583..ccf17a0 100644
--- a/InSituLaboratory.Entities/tools.cs
+++ b/InSituLaboratory.Entities/tools.cs
@@ -331,6 +331,51 @@ namespace InSituLaboratory.Entities
}
#endregion
+ #region 字节数组转16进制字符串
+ ///
+ /// 字节数组转16进制字符串
+ ///
+ ///
+ ///
+ 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进制原码字符串转字节数组
+ ///
+ /// 16进制原码字符串转字节数组
+ ///
+ /// "AABBCC"或"AA BB CC"格式的字符串
+ ///
+ 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 O_C(string o_c)
{
diff --git a/InSituLaboratory/App.config b/InSituLaboratory/App.config
index 5b7b499..43ef31c 100644
--- a/InSituLaboratory/App.config
+++ b/InSituLaboratory/App.config
@@ -5,9 +5,7 @@
-
-
-
+
diff --git a/InSituLaboratory/Common/DataParsing.cs b/InSituLaboratory/Common/DataParsing.cs
index 99a6405..face188 100644
--- a/InSituLaboratory/Common/DataParsing.cs
+++ b/InSituLaboratory/Common/DataParsing.cs
@@ -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
///
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 dataNew = new List();
-
string Latter_TXT = "";
for (int i = 0; i < dataTemp.Length; i++)
{
dataNew.Add(dataTemp[i]);
Latter_TXT += dataTemp[i].ToString("X2") + " ";
}
+
+ //数据域数组
+ List bytes = new List();
+ 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);
+
+ using (SqlSugarClient db = new SqlSugarClient(connectionConfig))
+ {
+ db.Insertable(dataParsingModel).ExecuteCommand();
+ }
}
}
diff --git a/InSituLaboratory/InSituLaboratory.csproj b/InSituLaboratory/InSituLaboratory.csproj
index 17f7937..885df68 100644
--- a/InSituLaboratory/InSituLaboratory.csproj
+++ b/InSituLaboratory/InSituLaboratory.csproj
@@ -27,6 +27,7 @@
+
diff --git a/InSituLaboratory/ViewModels/Pages/RelayViewModel.cs b/InSituLaboratory/ViewModels/Pages/RelayViewModel.cs
index fc34209..eb04857 100644
--- a/InSituLaboratory/ViewModels/Pages/RelayViewModel.cs
+++ b/InSituLaboratory/ViewModels/Pages/RelayViewModel.cs
@@ -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);
this.Refresh();
}
@@ -140,7 +143,7 @@ namespace InSituLaboratory.ViewModels.Pages
logModel = new LogModel();
logModel.CreateTime = DateTime.Now;
- logModel.Remark = "连接客户端成功";
+ logModel.Remark = "连接服务端成功";
_logService.Insert(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);
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);
+ 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);
+
+ 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);
+ }
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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ 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);
+ 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);
+ }
+ this.Refresh();
break;
default:
break;
}
-
-
}
+
+ ///
+ /// 远程控制
+ ///
+ /// 传感器识别码
+ /// 操作
+ 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 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 buffer = new List();
+ 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);
+ }
+
}
}