新增功能:

1 解决按钮提示错位的问题;
2 完善与地震仪通信之间的日志记录和告警记录;
3 对可能引起代码崩溃的部分使用try catch捕捉可能的异常;
This commit is contained in:
春风过客 2024-06-28 17:52:38 +08:00
parent 86dca1b0ec
commit 84e4f33fb9
5 changed files with 568 additions and 408 deletions

View File

@ -2,14 +2,14 @@
"Version": 1, "Version": 1,
"WorkspaceRootPath": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\", "WorkspaceRootPath": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\",
"Documents": [ "Documents": [
{
"AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\models\\volcurcollectormodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\models\\volcurcollectormodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{ {
"AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\models\\lowercomputermodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\models\\lowercomputermodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\models\\lowercomputermodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\models\\lowercomputermodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}, },
{
"AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\models\\seismographmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\models\\seismographmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{ {
"AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\viewmodels\\mainviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\viewmodels\\mainviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\viewmodels\\mainviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\viewmodels\\mainviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@ -18,6 +18,10 @@
"AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\viewmodels\\boosterstationstatedataviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\viewmodels\\boosterstationstatedataviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\viewmodels\\boosterstationstatedataviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\viewmodels\\boosterstationstatedataviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}, },
{
"AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\models\\volcurcollectormodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\models\\volcurcollectormodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{ {
"AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\views\\realtimedataview.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", "AbsoluteMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|f:\\code\\jseq\\20240301_jseq_upperpc\\jiangsuearthquake\\jiangsuearthquake\\views\\realtimedataview.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
"RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\views\\realtimedataview.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" "RelativeMoniker": "D:0:0:{51CD2C1B-B7CD-4AC0-8087-846E14D316AD}|JiangsuEarthquake\\JiangsuEarthquake.csproj|solutionrelative:jiangsuearthquake\\views\\realtimedataview.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
@ -38,7 +42,7 @@
"Children": [ "Children": [
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 5, "DocumentIndex": 6,
"Title": "App.config", "Title": "App.config",
"DocumentMoniker": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\App.config", "DocumentMoniker": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\App.config",
"RelativeDocumentMoniker": "JiangsuEarthquake\\App.config", "RelativeDocumentMoniker": "JiangsuEarthquake\\App.config",
@ -53,6 +57,19 @@
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 4, "DocumentIndex": 4,
"Title": "VolCurCollectorModel.cs",
"DocumentMoniker": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\VolCurCollectorModel.cs",
"RelativeDocumentMoniker": "JiangsuEarthquake\\Models\\VolCurCollectorModel.cs",
"ToolTip": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\VolCurCollectorModel.cs",
"RelativeToolTip": "JiangsuEarthquake\\Models\\VolCurCollectorModel.cs",
"ViewState": "AQIAAKwBAAAAAAAAAAAkwMIBAAA1AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-28T01:42:56.109Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "RealTimeDataView.xaml", "Title": "RealTimeDataView.xaml",
"DocumentMoniker": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Views\\RealTimeDataView.xaml", "DocumentMoniker": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Views\\RealTimeDataView.xaml",
"RelativeDocumentMoniker": "JiangsuEarthquake\\Views\\RealTimeDataView.xaml", "RelativeDocumentMoniker": "JiangsuEarthquake\\Views\\RealTimeDataView.xaml",
@ -70,35 +87,35 @@
"RelativeDocumentMoniker": "JiangsuEarthquake\\ViewModels\\BoosterStationStateDataViewModel.cs", "RelativeDocumentMoniker": "JiangsuEarthquake\\ViewModels\\BoosterStationStateDataViewModel.cs",
"ToolTip": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\ViewModels\\BoosterStationStateDataViewModel.cs", "ToolTip": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\ViewModels\\BoosterStationStateDataViewModel.cs",
"RelativeToolTip": "JiangsuEarthquake\\ViewModels\\BoosterStationStateDataViewModel.cs", "RelativeToolTip": "JiangsuEarthquake\\ViewModels\\BoosterStationStateDataViewModel.cs",
"ViewState": "AQIAACcGAAAAAAAAAAAAAD0GAAAtAAAA", "ViewState": "AQIAAFwBAAAAAAAAAAAuwNkFAAAIAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-27T06:25:37.202Z", "WhenOpened": "2024-06-27T06:25:37.202Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 1, "DocumentIndex": 0,
"Title": "LowerComputerModel.cs", "Title": "LowerComputerModel.cs",
"DocumentMoniker": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\LowerComputerModel.cs", "DocumentMoniker": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\LowerComputerModel.cs",
"RelativeDocumentMoniker": "JiangsuEarthquake\\Models\\LowerComputerModel.cs", "RelativeDocumentMoniker": "JiangsuEarthquake\\Models\\LowerComputerModel.cs",
"ToolTip": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\LowerComputerModel.cs", "ToolTip": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\LowerComputerModel.cs",
"RelativeToolTip": "JiangsuEarthquake\\Models\\LowerComputerModel.cs", "RelativeToolTip": "JiangsuEarthquake\\Models\\LowerComputerModel.cs",
"ViewState": "AQIAANwAAAAAAAAAAAAAAO8AAACWAAAA", "ViewState": "AQIAAFoAAAAAAAAAAAAuwIQAAAAvAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-27T05:54:59.023Z", "WhenOpened": "2024-06-27T05:54:59.023Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 0, "DocumentIndex": 1,
"Title": "VolCurCollectorModel.cs", "Title": "SeismographModel.cs",
"DocumentMoniker": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\VolCurCollectorModel.cs", "DocumentMoniker": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\SeismographModel.cs",
"RelativeDocumentMoniker": "JiangsuEarthquake\\Models\\VolCurCollectorModel.cs", "RelativeDocumentMoniker": "JiangsuEarthquake\\Models\\SeismographModel.cs",
"ToolTip": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\VolCurCollectorModel.cs", "ToolTip": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\Models\\SeismographModel.cs",
"RelativeToolTip": "JiangsuEarthquake\\Models\\VolCurCollectorModel.cs", "RelativeToolTip": "JiangsuEarthquake\\Models\\SeismographModel.cs",
"ViewState": "AQIAAGoAAAAAAAAAAAAmwH8AAAAzAAAA", "ViewState": "AQIAADUAAAAAAAAAAAAUwEoAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-27T05:54:57.251Z", "WhenOpened": "2024-06-28T01:41:37.637Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
@ -109,7 +126,7 @@
"RelativeDocumentMoniker": "JiangsuEarthquake\\ViewModels\\MainViewModel.cs", "RelativeDocumentMoniker": "JiangsuEarthquake\\ViewModels\\MainViewModel.cs",
"ToolTip": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\ViewModels\\MainViewModel.cs", "ToolTip": "F:\\Code\\JSEQ\\20240301_JSEQ_upperpc\\JiangsuEarthquake\\JiangsuEarthquake\\ViewModels\\MainViewModel.cs",
"RelativeToolTip": "JiangsuEarthquake\\ViewModels\\MainViewModel.cs", "RelativeToolTip": "JiangsuEarthquake\\ViewModels\\MainViewModel.cs",
"ViewState": "AQIAALgNAAAAAAAAAADgv9INAAA5AAAA", "ViewState": "AQIAAKUPAAAAAAAAAAAAAAsIAAAIAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-26T09:47:38.344Z", "WhenOpened": "2024-06-26T09:47:38.344Z",
"EditorCaption": "" "EditorCaption": ""

View File

@ -55,6 +55,10 @@ namespace JiangsuEarthquake.Models
//CRC校验失败 //CRC校验失败
if (checkCodeCRC != byteList[^1]) if (checkCodeCRC != byteList[^1])
{ {
string content = "接驳盒数据CRC校验失败" ;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
try try
{ {
//发送失败信息 //发送失败信息
@ -69,9 +73,11 @@ namespace JiangsuEarthquake.Models
MainWindow.mainViewModel.serverModel2.SendMessage(ServerReplyData(byteList[5], byteList[6], 0x00).ToArray()); MainWindow.mainViewModel.serverModel2.SendMessage(ServerReplyData(byteList[5], byteList[6], 0x00).ToArray());
} }
} }
catch catch(Exception ex)
{ {
content = "接驳盒数据CRC校验失败信息发送失败" + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
} }
return; return;
@ -91,6 +97,10 @@ namespace JiangsuEarthquake.Models
byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0); byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0);
if (byteLength != 106) //长度校验失败 if (byteLength != 106) //长度校验失败
{ {
string content = "接驳盒其他传感器集合数据长度校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
try try
{ {
//发送失败信息 //发送失败信息
@ -107,8 +117,7 @@ namespace JiangsuEarthquake.Models
} }
catch (Exception ex) catch (Exception ex)
{ {
string content = "接驳盒其他传感器集合数据长度校验失败信息发送失败," + ex.Message; content = "接驳盒其他传感器集合数据长度校验失败信息发送失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');"; sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
} }
@ -154,14 +163,16 @@ namespace JiangsuEarthquake.Models
catch (Exception ex) catch (Exception ex)
{ {
string content = "接驳盒其他传感器集合数据解析成功信息发送失败," + ex.Message; string content = "接驳盒其他传感器集合数据解析成功信息发送失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');"; sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
string content = "接驳盒其他传感器集合数据解析失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据解析','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
//try //try
//{ //{
// //发送失败信息 // //发送失败信息
@ -181,11 +192,6 @@ namespace JiangsuEarthquake.Models
//} //}
string content = "接驳盒其他传感器集合数据解析失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据解析','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
break; break;
} }
@ -193,6 +199,8 @@ namespace JiangsuEarthquake.Models
sql = $"insert into juncbox_env(StationID,RecordTime,DataTime,Temperature,Humidity,AttitudeX,AttitudeY,AttitudeZ) values('{id}','{DateTime.Now}','{DataTime}','{temperature}','{humidity}','{gestureX}','{gestureY}','{gestureZ}');"; sql = $"insert into juncbox_env(StationID,RecordTime,DataTime,Temperature,Humidity,AttitudeX,AttitudeY,AttitudeZ) values('{id}','{DateTime.Now}','{DataTime}','{temperature}','{humidity}','{gestureX}','{gestureY}','{gestureZ}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
#region
//更新到实时数据显示页面 //更新到实时数据显示页面
App.Current.Dispatcher.Invoke(() => App.Current.Dispatcher.Invoke(() =>
{ {
@ -364,6 +372,8 @@ namespace JiangsuEarthquake.Models
}; };
} }
}); });
#endregion
} }
} }
@ -388,6 +398,10 @@ namespace JiangsuEarthquake.Models
byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0); byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0);
if (byteLength != 13) //长度校验失败 if (byteLength != 13) //长度校验失败
{ {
string content = "接驳盒远程控制回复长度校验失败" ;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
//try //try
//{ //{
// //发送失败信息 // //发送失败信息
@ -487,7 +501,6 @@ namespace JiangsuEarthquake.Models
//存储历史设置 //存储历史设置
sql = $"insert into switch_info_his(StationID,RecordTime,SwitchName,SwitchState) values('{id}','{DateTime.Now}','BackupSeisPower','{state}');"; sql = $"insert into switch_info_his(StationID,RecordTime,SwitchName,SwitchState) values('{id}','{DateTime.Now}','BackupSeisPower','{state}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
} }
break; break;
@ -526,7 +539,6 @@ namespace JiangsuEarthquake.Models
//存储历史设置 //存储历史设置
sql = $"insert into switch_info_his(StationID,RecordTime,SwitchName,SwitchState) values('{id}','{DateTime.Now}','BackupSeisPower','{state}');"; sql = $"insert into switch_info_his(StationID,RecordTime,SwitchName,SwitchState) values('{id}','{DateTime.Now}','BackupSeisPower','{state}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
} }
break; break;
@ -540,6 +552,10 @@ namespace JiangsuEarthquake.Models
byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0); byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0);
if (byteLength != 45) //长度校验失败 if (byteLength != 45) //长度校验失败
{ {
string content = "接驳盒读取状态回复长度校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
try try
{ {
//发送失败信息 //发送失败信息
@ -556,8 +572,7 @@ namespace JiangsuEarthquake.Models
} }
catch (Exception ex) catch (Exception ex)
{ {
string content = "接驳盒状态数据长度校验失败信息发送失败," + ex.Message; content = "接驳盒状态数据长度校验失败信息发送失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');"; sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
} }
@ -650,7 +665,6 @@ namespace JiangsuEarthquake.Models
catch (Exception ex) catch (Exception ex)
{ {
string content = "接驳盒状态数据解析成功信息发送失败," + ex.Message; string content = "接驳盒状态数据解析成功信息发送失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');"; sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
} }
@ -658,7 +672,6 @@ namespace JiangsuEarthquake.Models
catch (Exception ex) catch (Exception ex)
{ {
string content = "接驳盒状态数据解析失败," + ex.Message; string content = "接驳盒状态数据解析失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据解析','{content}');"; sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据解析','{content}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
@ -699,6 +712,8 @@ namespace JiangsuEarthquake.Models
sql = $"insert into juncbox_monitor(StationID,RecordTime,Seis2_Voltage,Seis1_Current,Seis2_Current,Elect_Current,Seis1_Voltage,Out_Voltage12_Reserved1,Out_Voltage12_Reserved2,Reserved) values('{id}','{recordTime}','{Seis2_Voltage}','{Seis1_Current}','{Seis2_Current}','{Elect_Current}','{Seis1_Voltage}','{Out_Voltage12_Reserved1}','{Out_Voltage12_Reserved2}','{Reserved}');"; sql = $"insert into juncbox_monitor(StationID,RecordTime,Seis2_Voltage,Seis1_Current,Seis2_Current,Elect_Current,Seis1_Voltage,Out_Voltage12_Reserved1,Out_Voltage12_Reserved2,Reserved) values('{id}','{recordTime}','{Seis2_Voltage}','{Seis1_Current}','{Seis2_Current}','{Elect_Current}','{Seis1_Voltage}','{Out_Voltage12_Reserved1}','{Out_Voltage12_Reserved2}','{Reserved}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
#region
//更新到页面 //更新到页面
if (id == 1) if (id == 1)
{ {
@ -902,6 +917,8 @@ namespace JiangsuEarthquake.Models
MainViewModel.realTimeDataViewModel2.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleGray"); MainViewModel.realTimeDataViewModel2.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleGray");
}); });
} }
#endregion
break; break;
case 0x07: case 0x07:
@ -910,6 +927,11 @@ namespace JiangsuEarthquake.Models
byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0); byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0);
if (byteLength != 8) //长度校验失败 if (byteLength != 8) //长度校验失败
{ {
string content = "接驳盒请求读取上位机现在时间数据长度校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
try try
{ {
//发送失败信息 //发送失败信息
@ -926,7 +948,7 @@ namespace JiangsuEarthquake.Models
} }
catch (Exception ex) catch (Exception ex)
{ {
string content = "接驳盒读取上位机现在时间长度校验失败信息发送失败," + ex.Message; content = "接驳盒读取上位机现在时间长度校验失败信息发送失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');"; sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
@ -980,6 +1002,11 @@ namespace JiangsuEarthquake.Models
byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0); byteLength = BitConverter.ToInt16(new byte[] { byteList[3], byteList[2] }, 0);
if (byteLength != 18) //长度校验失败 if (byteLength != 18) //长度校验失败
{ {
string content = "接驳盒告警数据长度校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
try try
{ {
//发送失败信息 //发送失败信息
@ -996,7 +1023,7 @@ namespace JiangsuEarthquake.Models
} }
catch (Exception ex) catch (Exception ex)
{ {
string content = "接驳盒告警数据长度校验失败信息发送失败," + ex.Message; content = "接驳盒告警数据长度校验失败信息发送失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');"; sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','接驳盒数据发送','{content}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
@ -1045,6 +1072,8 @@ namespace JiangsuEarthquake.Models
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
} }
#region
//更新到前端 //更新到前端
App.Current.Dispatcher.Invoke(() => App.Current.Dispatcher.Invoke(() =>
{ {
@ -1082,6 +1111,8 @@ namespace JiangsuEarthquake.Models
} }
dataReader.Dispose(); dataReader.Dispose();
}); });
#endregion
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -16,6 +16,7 @@ using System.Windows.Media;
using Application = System.Windows.Application; using Application = System.Windows.Application;
using MySql.Data.MySqlClient; using MySql.Data.MySqlClient;
using Color = System.Windows.Media.Color; using Color = System.Windows.Media.Color;
using System.Reflection.Metadata;
namespace JiangsuEarthquake.Models namespace JiangsuEarthquake.Models
{ {
@ -72,7 +73,6 @@ namespace JiangsuEarthquake.Models
string sql = $"insert into boosterstationoriginaldata(StationID,RecordTime,OriginalData) values('{id}','{DateTime.Now}','{BitConverter.ToString(byteList.ToArray())}');"; string sql = $"insert into boosterstationoriginaldata(StationID,RecordTime,OriginalData) values('{id}','{DateTime.Now}','{BitConverter.ToString(byteList.ToArray())}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
checkByte.Clear(); checkByte.Clear();
//CRC校验 //CRC校验
for (int i = 0; i < byteList.Count - 2; i++) for (int i = 0; i < byteList.Count - 2; i++)
@ -80,7 +80,15 @@ namespace JiangsuEarthquake.Models
checkCodeCRC = Tools.CRCCalc(checkByte.ToArray()); checkCodeCRC = Tools.CRCCalc(checkByte.ToArray());
//CRC校验失败 //CRC校验失败
if (!Tools.CompareByte(checkCodeCRC, new byte[2] { byteList[byteList.Count - 2], byteList[byteList.Count - 1] })) if (!Tools.CompareByte(checkCodeCRC, new byte[2] { byteList[byteList.Count - 2], byteList[byteList.Count - 1] }))
{
string content = "升压站电控通信系统数据CRC校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
return; return;
}
if (byteList[1] == 0x03) //查询从设备寄存器内容 if (byteList[1] == 0x03) //查询从设备寄存器内容
{ {
@ -91,39 +99,51 @@ namespace JiangsuEarthquake.Models
{ {
string content = "升压站电控通信系统状态数据长度校验失败"; string content = "升压站电控通信系统状态数据长度校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据接收','{content}');"; sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
return; return;
} }
//获取电压电流的量程;
int VoltageRange = int.Parse(Tools.GetAppSetting("SYZVoltageRange"));
int CurrentRange = int.Parse(Tools.GetAppSetting("SYZCurrentRange"));
voltage = BitConverter.ToInt16(new byte[2] { byteList[4], byteList[3] }) / 10000f * VoltageRange;
current = BitConverter.ToInt16(new byte[2] { byteList[6], byteList[5] }) / 10000f * CurrentRange;
power = BitConverter.ToInt16(new byte[2] { byteList[7], byteList[8] }) / 10000f * VoltageRange * CurrentRange;
posEleDegree = BitConverter.ToUInt32(new byte[4] { byteList[9], byteList[10], byteList[11], byteList[12] }) * VoltageRange * CurrentRange / (1000 * 3600);
revEleDegree = BitConverter.ToUInt32(new byte[4] { byteList[13], byteList[14], byteList[15], byteList[16] }) * VoltageRange * CurrentRange / (1000 * 3600);
uVoltage = BitConverter.ToUInt16(new byte[2] { byteList[17], byteList[18] }) / 10000f * VoltageRange;
uCurrent = BitConverter.ToUInt16(new byte[2] { byteList[19], byteList[20] }) / 10000f * VoltageRange;
relayStatus = BitConverter.ToUInt16(new byte[2] { byteList[21], byteList[22] });
highResVoltage = BitConverter.ToInt16(new byte[2] { byteList[23], byteList[24] }) / 50000f * VoltageRange;
highResCurrent = BitConverter.ToInt16(new byte[2] { byteList[25], byteList[26] }) / 50000f * CurrentRange;
forAmpereHour = BitConverter.ToUInt32(new byte[4] { byteList[27], byteList[28], byteList[29], byteList[30] }) * CurrentRange / 3600;
revAmpereHour = BitConverter.ToUInt32(new byte[4] { byteList[31], byteList[32], byteList[33], byteList[34] }) * CurrentRange / 3600;
DateTime recordTime = DateTime.Now; DateTime recordTime = DateTime.Now;
sql = $"insert into boosterstation_state(StationID,RecordTime,In_Vol,In_Cur,Power,PosEleDegree," + try
$"RevEleDegree,uVoltage,uCurrent,RelayStatus,HighResVoltage,HighResCurrent,ForAmpereHour," + {
$"RevAmpereHour) values('{id}','{recordTime}','{voltage}','{current}','{power}','{posEleDegree}'," + //获取电压电流的量程;
$"'{revEleDegree}','{uVoltage}','{uCurrent}','{relayStatus}','{highResVoltage}'," + int VoltageRange = int.Parse(Tools.GetAppSetting("SYZVoltageRange"));
$"'{highResCurrent}','{forAmpereHour}','{revAmpereHour}');"; int CurrentRange = int.Parse(Tools.GetAppSetting("SYZCurrentRange"));
DBHelper.ExecuteNonQuery(sql, 1);
sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{id}','{DateTime.Now}','升压站电控通信系统','系统控制','请求升压站状态数据成功');"; voltage = BitConverter.ToInt16(new byte[2] { byteList[4], byteList[3] }) / 10000f * VoltageRange;
DBHelper.ExecuteNonQuery(sql, 1); current = BitConverter.ToInt16(new byte[2] { byteList[6], byteList[5] }) / 10000f * CurrentRange;
power = BitConverter.ToInt16(new byte[2] { byteList[7], byteList[8] }) / 10000f * VoltageRange * CurrentRange;
posEleDegree = BitConverter.ToUInt32(new byte[4] { byteList[9], byteList[10], byteList[11], byteList[12] }) * VoltageRange * CurrentRange / (1000 * 3600);
revEleDegree = BitConverter.ToUInt32(new byte[4] { byteList[13], byteList[14], byteList[15], byteList[16] }) * VoltageRange * CurrentRange / (1000 * 3600);
uVoltage = BitConverter.ToUInt16(new byte[2] { byteList[17], byteList[18] }) / 10000f * VoltageRange;
uCurrent = BitConverter.ToUInt16(new byte[2] { byteList[19], byteList[20] }) / 10000f * VoltageRange;
relayStatus = BitConverter.ToUInt16(new byte[2] { byteList[21], byteList[22] });
highResVoltage = BitConverter.ToInt16(new byte[2] { byteList[23], byteList[24] }) / 50000f * VoltageRange;
highResCurrent = BitConverter.ToInt16(new byte[2] { byteList[25], byteList[26] }) / 50000f * CurrentRange;
forAmpereHour = BitConverter.ToUInt32(new byte[4] { byteList[27], byteList[28], byteList[29], byteList[30] }) * CurrentRange / 3600;
revAmpereHour = BitConverter.ToUInt32(new byte[4] { byteList[31], byteList[32], byteList[33], byteList[34] }) * CurrentRange / 3600;
recordTime = DateTime.Now;
sql = $"insert into boosterstation_state(StationID,RecordTime,In_Vol,In_Cur,Power,PosEleDegree," +
$"RevEleDegree,uVoltage,uCurrent,RelayStatus,HighResVoltage,HighResCurrent,ForAmpereHour," +
$"RevAmpereHour) values('{id}','{recordTime}','{voltage}','{current}','{power}','{posEleDegree}'," +
$"'{revEleDegree}','{uVoltage}','{uCurrent}','{relayStatus}','{highResVoltage}'," +
$"'{highResCurrent}','{forAmpereHour}','{revAmpereHour}');";
DBHelper.ExecuteNonQuery(sql, 1);
sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{id}','{DateTime.Now}','升压站电控通信系统','数据请求','请求升压站状态数据成功');";
DBHelper.ExecuteNonQuery(sql, 1);
}
catch(Exception ex)
{
string content = "升压站电控通信系统状态数据解析失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据解析','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
}
App.Current.Dispatcher.Invoke(() => App.Current.Dispatcher.Invoke(() =>
{ {
@ -268,7 +288,7 @@ namespace JiangsuEarthquake.Models
{ {
string content = "升压站电控通信系统对从设备单个寄存器置数回复长度校验失败"; string content = "升压站电控通信系统对从设备单个寄存器置数回复长度校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据接收','{content}');"; sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1); DBHelper.ExecuteNonQuery(sql, 1);
return; return;
@ -361,6 +381,8 @@ namespace JiangsuEarthquake.Models
} }
else if (byteList[2] == 0x01 && byteList[3] == 0x30) //继电器输出 else if (byteList[2] == 0x01 && byteList[3] == 0x30) //继电器输出
{ {
string record = "";
//if (id == 1) //if (id == 1)
//{ //{
if (Tools.CompareByte(byteList.ToArray(), MainWindow.mainViewModel.RelayActivationRecv)) if (Tools.CompareByte(byteList.ToArray(), MainWindow.mainViewModel.RelayActivationRecv))
@ -381,6 +403,8 @@ namespace JiangsuEarthquake.Models
MainViewModel.baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn"); MainViewModel.baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn");
else else
MainViewModel.baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn"); MainViewModel.baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn");
record = "打开海底基站电源成功";
}); });
} }
else if (Tools.CompareByte(byteList.ToArray(), MainWindow.mainViewModel.RelayShutdownRecv)) else if (Tools.CompareByte(byteList.ToArray(), MainWindow.mainViewModel.RelayShutdownRecv))
@ -401,6 +425,8 @@ namespace JiangsuEarthquake.Models
MainViewModel.baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff"); MainViewModel.baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff");
else else
MainViewModel.baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff"); MainViewModel.baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff");
record = "关闭海底基站电源成功";
}); });
} }
else else
@ -416,8 +442,14 @@ namespace JiangsuEarthquake.Models
MainWindow.mainViewModel.BaseStationMsg = "继电开启/关闭失败!"; MainWindow.mainViewModel.BaseStationMsg = "继电开启/关闭失败!";
MainWindow.mainViewModel.timerBaseStationMsgHidden.Start(); MainWindow.mainViewModel.timerBaseStationMsgHidden.Start();
MainWindow.mainViewModel.BaseStationMsgForeground = new SolidColorBrush(Colors.Red); MainWindow.mainViewModel.BaseStationMsgForeground = new SolidColorBrush(Colors.Red);
record = "打开/关闭海底基站电源成功";
}); });
} }
sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{id}','{DateTime.Now}','升压站电控通信系统','系统控制','{record}');";
DBHelper.ExecuteNonQuery(sql, 1);
//} //}
//else //else
//{ //{