diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
index 60a403b..9be9718 100644
--- a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
+++ b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
@@ -7,8 +7,8 @@
{
public static Dictionary> devDataValueMap = new Dictionary>();
- public static Dictionary>
- devRangingDataValueMap = new Dictionary>(); //测距数据
+ public static Dictionary>
+ devRangingDataValueMap = new Dictionary>(); //测距数据
public static bool isNoFilter = true;
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
index 60a403b..9be9718 100644
--- a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
+++ b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
@@ -7,8 +7,8 @@
{
public static Dictionary> devDataValueMap = new Dictionary>();
- public static Dictionary>
- devRangingDataValueMap = new Dictionary>(); //测距数据
+ public static Dictionary>
+ devRangingDataValueMap = new Dictionary>(); //测距数据
public static bool isNoFilter = true;
diff --git a/PipeGallery/Correlator/ManipulateSerialPort.cs b/PipeGallery/Correlator/ManipulateSerialPort.cs
index 0715dbc..606dd84 100644
--- a/PipeGallery/Correlator/ManipulateSerialPort.cs
+++ b/PipeGallery/Correlator/ManipulateSerialPort.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.IO.Ports;
using System.Text;
using System.Threading;
@@ -6,20 +7,22 @@
using System.Windows;
using PipeGallery.Manage;
using PipeGallery.ViewModel;
+using Application = System.Windows.Forms.Application;
+using Timer = System.Timers.Timer;
namespace PipeGallery.Correlator
{
class ManipulateSerialPort
{
- public SerialPort sp = new SerialPort(); //实例化串口通讯类
- public System.Timers.Timer timer = new System.Timers.Timer();
- public bool collectData = true;
+ public readonly SerialPort Sp = new SerialPort(); //实例化串口通讯类
+ public readonly Timer timer = new Timer();
+ public bool CollectData = true;
//DevCode dev = new DevCode();
public ManipulateSerialPort()
{
- sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
+ Sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
@@ -32,12 +35,14 @@
{
try
{
- string strResult = "";
- byte[] bRequestInfo = getRequestInfo(ref strResult);
+ var strResult = "";
+ var bRequestInfo = GetRequestInfo(ref strResult);
if (bRequestInfo != null)
{
LogHelper.Info("接收到的数据:" + BitConverter.ToString(bRequestInfo).Replace("-", ""));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 接收到的数据: " +
+ BitConverter.ToString(bRequestInfo).Replace("-", ""));
}
else if (strResult != "")
{
@@ -50,15 +55,15 @@
if (bRequestInfo != null)
{
- if (sp == null)
+ if (Sp == null)
return;
else
- new CmdClass().analysisDataValue(bRequestInfo, sp);
+ new CmdClass().AnalysisDataValue(bRequestInfo, Sp);
}
else
{
if (strResult != "")
- new CmdClass().analysisSignalValue(strResult, sp);
+ new CmdClass().AnalysisSignalValue(strResult, Sp);
}
}
catch (Exception ex)
@@ -71,34 +76,34 @@
/// 数据接收
///
///
- private byte[] getRequestInfo(ref string strResult)
+ private byte[] GetRequestInfo(ref string strResult)
{
try
{
- while (sp.BytesToRead < 4) Thread.Sleep(5);
- byte[] headerBuff = new byte[2];
- sp.Read(headerBuff, 0, 2); //读取数据
+ while (Sp.BytesToRead < 4) Thread.Sleep(5);
+ var headerBuff = new byte[2];
+ Sp.Read(headerBuff, 0, 2); //读取数据
if (headerBuff[0] == 0xA3 && headerBuff[1] == 0x20) //符合规范
{
byte[] lengthBuffer = new byte[2];
- sp.Read(lengthBuffer, 0, 2);
+ Sp.Read(lengthBuffer, 0, 2);
int length = StringUtil.ConvertBytes2Int(lengthBuffer);
if (length < 12)
{
- sp.DiscardInBuffer(); //长度数据不符合,丢弃
+ Sp.DiscardInBuffer(); //长度数据不符合,丢弃
LogHelper.Info("上传数组长度不够,丢弃数据");
return null;
}
- while (sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
+ while (Sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
byte[] result = new byte[length + 6];
result[0] = headerBuff[0];
result[1] = headerBuff[1];
result[2] = lengthBuffer[0];
result[3] = lengthBuffer[1];
- sp.Read(result, 4, result.Length - 4);
+ Sp.Read(result, 4, result.Length - 4);
//if (result[result.Length - 1] != 0x00 || result[result.Length - 2] != 0x00 ||
// result[result.Length - 3] != 0x00 || result[result.Length - 4] != 0x00)
@@ -124,14 +129,14 @@
else
{
Thread.Sleep(10);
- String str = Encoding.UTF8.GetString(headerBuff) + sp.ReadExisting();
+ String str = Encoding.UTF8.GetString(headerBuff) + Sp.ReadExisting();
if (str != "" && str.Contains("\r\n"))
{
strResult = str;
}
else
{
- sp.DiscardInBuffer();
+ Sp.DiscardInBuffer();
}
}
@@ -140,9 +145,9 @@
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错提示");
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
return null;
}
}
@@ -150,25 +155,25 @@
///
/// 显示信号电量
///
- public void showSignal()
+ public void ShowSignal()
{
- double configItr = 20000;
- byte devid = 0x01;
+ const double configItr = 20000;
+ byte devId = 0x01;
try
{
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
if (CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMapx.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMapx.Signal));
HomePageViewModel.Instance.TransmitterAFault = devMapx.Status == "1" ? true : false;
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
}
catch (Exception e)
@@ -181,14 +186,14 @@
{
try
{
- devid = (byte)((devid == 0x01) ? 0x02 : 0x01);
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ devId = (byte)((devId == 0x01) ? 0x02 : 0x01);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
- if (devid.ToString() == DevCode.Dev1.Substring(11, 1) &&
+ if (devId.ToString() == DevCode.Dev1.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMap1.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap1.Signal));
@@ -207,10 +212,10 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1].Signal = "-121"; //初始化信号为0
}
- else if (devid.ToString() == DevCode.Dev2.Substring(11, 1) &&
+ else if (devId.ToString() == DevCode.Dev2.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev2))
{
- DevStatus devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
+ var devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
HomePageViewModel.Instance.TransmitterBBattery = Convert.ToDouble(devMap2.Cell);
HomePageViewModel.Instance.TransmitterBSignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap2.Signal));
@@ -230,7 +235,7 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2].Signal = "-121"; //初始化信号为0
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
//Thread.Sleep(10000);
@@ -252,9 +257,9 @@
catch (Exception e)
{
timer.Stop();
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
}
});
}
@@ -263,7 +268,7 @@
{
//System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = interval;
- timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e) { action(e); };
+ timer.Elapsed += delegate(object sender, ElapsedEventArgs e) { action(e); };
timer.Enabled = true;
}
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
index 60a403b..9be9718 100644
--- a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
+++ b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
@@ -7,8 +7,8 @@
{
public static Dictionary> devDataValueMap = new Dictionary>();
- public static Dictionary>
- devRangingDataValueMap = new Dictionary>(); //测距数据
+ public static Dictionary>
+ devRangingDataValueMap = new Dictionary>(); //测距数据
public static bool isNoFilter = true;
diff --git a/PipeGallery/Correlator/ManipulateSerialPort.cs b/PipeGallery/Correlator/ManipulateSerialPort.cs
index 0715dbc..606dd84 100644
--- a/PipeGallery/Correlator/ManipulateSerialPort.cs
+++ b/PipeGallery/Correlator/ManipulateSerialPort.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.IO.Ports;
using System.Text;
using System.Threading;
@@ -6,20 +7,22 @@
using System.Windows;
using PipeGallery.Manage;
using PipeGallery.ViewModel;
+using Application = System.Windows.Forms.Application;
+using Timer = System.Timers.Timer;
namespace PipeGallery.Correlator
{
class ManipulateSerialPort
{
- public SerialPort sp = new SerialPort(); //实例化串口通讯类
- public System.Timers.Timer timer = new System.Timers.Timer();
- public bool collectData = true;
+ public readonly SerialPort Sp = new SerialPort(); //实例化串口通讯类
+ public readonly Timer timer = new Timer();
+ public bool CollectData = true;
//DevCode dev = new DevCode();
public ManipulateSerialPort()
{
- sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
+ Sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
@@ -32,12 +35,14 @@
{
try
{
- string strResult = "";
- byte[] bRequestInfo = getRequestInfo(ref strResult);
+ var strResult = "";
+ var bRequestInfo = GetRequestInfo(ref strResult);
if (bRequestInfo != null)
{
LogHelper.Info("接收到的数据:" + BitConverter.ToString(bRequestInfo).Replace("-", ""));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 接收到的数据: " +
+ BitConverter.ToString(bRequestInfo).Replace("-", ""));
}
else if (strResult != "")
{
@@ -50,15 +55,15 @@
if (bRequestInfo != null)
{
- if (sp == null)
+ if (Sp == null)
return;
else
- new CmdClass().analysisDataValue(bRequestInfo, sp);
+ new CmdClass().AnalysisDataValue(bRequestInfo, Sp);
}
else
{
if (strResult != "")
- new CmdClass().analysisSignalValue(strResult, sp);
+ new CmdClass().AnalysisSignalValue(strResult, Sp);
}
}
catch (Exception ex)
@@ -71,34 +76,34 @@
/// 数据接收
///
///
- private byte[] getRequestInfo(ref string strResult)
+ private byte[] GetRequestInfo(ref string strResult)
{
try
{
- while (sp.BytesToRead < 4) Thread.Sleep(5);
- byte[] headerBuff = new byte[2];
- sp.Read(headerBuff, 0, 2); //读取数据
+ while (Sp.BytesToRead < 4) Thread.Sleep(5);
+ var headerBuff = new byte[2];
+ Sp.Read(headerBuff, 0, 2); //读取数据
if (headerBuff[0] == 0xA3 && headerBuff[1] == 0x20) //符合规范
{
byte[] lengthBuffer = new byte[2];
- sp.Read(lengthBuffer, 0, 2);
+ Sp.Read(lengthBuffer, 0, 2);
int length = StringUtil.ConvertBytes2Int(lengthBuffer);
if (length < 12)
{
- sp.DiscardInBuffer(); //长度数据不符合,丢弃
+ Sp.DiscardInBuffer(); //长度数据不符合,丢弃
LogHelper.Info("上传数组长度不够,丢弃数据");
return null;
}
- while (sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
+ while (Sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
byte[] result = new byte[length + 6];
result[0] = headerBuff[0];
result[1] = headerBuff[1];
result[2] = lengthBuffer[0];
result[3] = lengthBuffer[1];
- sp.Read(result, 4, result.Length - 4);
+ Sp.Read(result, 4, result.Length - 4);
//if (result[result.Length - 1] != 0x00 || result[result.Length - 2] != 0x00 ||
// result[result.Length - 3] != 0x00 || result[result.Length - 4] != 0x00)
@@ -124,14 +129,14 @@
else
{
Thread.Sleep(10);
- String str = Encoding.UTF8.GetString(headerBuff) + sp.ReadExisting();
+ String str = Encoding.UTF8.GetString(headerBuff) + Sp.ReadExisting();
if (str != "" && str.Contains("\r\n"))
{
strResult = str;
}
else
{
- sp.DiscardInBuffer();
+ Sp.DiscardInBuffer();
}
}
@@ -140,9 +145,9 @@
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错提示");
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
return null;
}
}
@@ -150,25 +155,25 @@
///
/// 显示信号电量
///
- public void showSignal()
+ public void ShowSignal()
{
- double configItr = 20000;
- byte devid = 0x01;
+ const double configItr = 20000;
+ byte devId = 0x01;
try
{
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
if (CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMapx.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMapx.Signal));
HomePageViewModel.Instance.TransmitterAFault = devMapx.Status == "1" ? true : false;
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
}
catch (Exception e)
@@ -181,14 +186,14 @@
{
try
{
- devid = (byte)((devid == 0x01) ? 0x02 : 0x01);
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ devId = (byte)((devId == 0x01) ? 0x02 : 0x01);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
- if (devid.ToString() == DevCode.Dev1.Substring(11, 1) &&
+ if (devId.ToString() == DevCode.Dev1.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMap1.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap1.Signal));
@@ -207,10 +212,10 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1].Signal = "-121"; //初始化信号为0
}
- else if (devid.ToString() == DevCode.Dev2.Substring(11, 1) &&
+ else if (devId.ToString() == DevCode.Dev2.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev2))
{
- DevStatus devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
+ var devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
HomePageViewModel.Instance.TransmitterBBattery = Convert.ToDouble(devMap2.Cell);
HomePageViewModel.Instance.TransmitterBSignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap2.Signal));
@@ -230,7 +235,7 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2].Signal = "-121"; //初始化信号为0
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
//Thread.Sleep(10000);
@@ -252,9 +257,9 @@
catch (Exception e)
{
timer.Stop();
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
}
});
}
@@ -263,7 +268,7 @@
{
//System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = interval;
- timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e) { action(e); };
+ timer.Elapsed += delegate(object sender, ElapsedEventArgs e) { action(e); };
timer.Enabled = true;
}
diff --git a/PipeGallery/Correlator/SenderClass.cs b/PipeGallery/Correlator/SenderClass.cs
index f01350b..16e0e86 100644
--- a/PipeGallery/Correlator/SenderClass.cs
+++ b/PipeGallery/Correlator/SenderClass.cs
@@ -9,9 +9,8 @@
///
/// 下发唤醒指令
///
- ///
///
- public static void sendCorrelatorWakeUpCmd(SerialPort sp)
+ public static void SendCorrelatorWakeUpCmd(SerialPort sp)
{
try
{
@@ -73,7 +72,8 @@
afcrc.CopyTo(reBt, 2);
*/
LogHelper.Info("下发相关仪唤醒信息:" + BitConverter.ToString(afcrc));
-
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发相关仪唤醒信息 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
@@ -87,7 +87,7 @@
///
///
///
- public static void sendCellAndStatusCollectCmd(SerialPort sp, byte devid)
+ public static void SendCellAndStatusCollectCmd(SerialPort sp, byte devid)
{
try
{
@@ -147,6 +147,8 @@
btcrc.CopyTo(afcrc, result.Length);
LogHelper.Info("下发状态采集指令:" + BitConverter.ToString(afcrc));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发状态采集指令 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
index 60a403b..9be9718 100644
--- a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
+++ b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
@@ -7,8 +7,8 @@
{
public static Dictionary> devDataValueMap = new Dictionary>();
- public static Dictionary>
- devRangingDataValueMap = new Dictionary>(); //测距数据
+ public static Dictionary>
+ devRangingDataValueMap = new Dictionary>(); //测距数据
public static bool isNoFilter = true;
diff --git a/PipeGallery/Correlator/ManipulateSerialPort.cs b/PipeGallery/Correlator/ManipulateSerialPort.cs
index 0715dbc..606dd84 100644
--- a/PipeGallery/Correlator/ManipulateSerialPort.cs
+++ b/PipeGallery/Correlator/ManipulateSerialPort.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.IO.Ports;
using System.Text;
using System.Threading;
@@ -6,20 +7,22 @@
using System.Windows;
using PipeGallery.Manage;
using PipeGallery.ViewModel;
+using Application = System.Windows.Forms.Application;
+using Timer = System.Timers.Timer;
namespace PipeGallery.Correlator
{
class ManipulateSerialPort
{
- public SerialPort sp = new SerialPort(); //实例化串口通讯类
- public System.Timers.Timer timer = new System.Timers.Timer();
- public bool collectData = true;
+ public readonly SerialPort Sp = new SerialPort(); //实例化串口通讯类
+ public readonly Timer timer = new Timer();
+ public bool CollectData = true;
//DevCode dev = new DevCode();
public ManipulateSerialPort()
{
- sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
+ Sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
@@ -32,12 +35,14 @@
{
try
{
- string strResult = "";
- byte[] bRequestInfo = getRequestInfo(ref strResult);
+ var strResult = "";
+ var bRequestInfo = GetRequestInfo(ref strResult);
if (bRequestInfo != null)
{
LogHelper.Info("接收到的数据:" + BitConverter.ToString(bRequestInfo).Replace("-", ""));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 接收到的数据: " +
+ BitConverter.ToString(bRequestInfo).Replace("-", ""));
}
else if (strResult != "")
{
@@ -50,15 +55,15 @@
if (bRequestInfo != null)
{
- if (sp == null)
+ if (Sp == null)
return;
else
- new CmdClass().analysisDataValue(bRequestInfo, sp);
+ new CmdClass().AnalysisDataValue(bRequestInfo, Sp);
}
else
{
if (strResult != "")
- new CmdClass().analysisSignalValue(strResult, sp);
+ new CmdClass().AnalysisSignalValue(strResult, Sp);
}
}
catch (Exception ex)
@@ -71,34 +76,34 @@
/// 数据接收
///
///
- private byte[] getRequestInfo(ref string strResult)
+ private byte[] GetRequestInfo(ref string strResult)
{
try
{
- while (sp.BytesToRead < 4) Thread.Sleep(5);
- byte[] headerBuff = new byte[2];
- sp.Read(headerBuff, 0, 2); //读取数据
+ while (Sp.BytesToRead < 4) Thread.Sleep(5);
+ var headerBuff = new byte[2];
+ Sp.Read(headerBuff, 0, 2); //读取数据
if (headerBuff[0] == 0xA3 && headerBuff[1] == 0x20) //符合规范
{
byte[] lengthBuffer = new byte[2];
- sp.Read(lengthBuffer, 0, 2);
+ Sp.Read(lengthBuffer, 0, 2);
int length = StringUtil.ConvertBytes2Int(lengthBuffer);
if (length < 12)
{
- sp.DiscardInBuffer(); //长度数据不符合,丢弃
+ Sp.DiscardInBuffer(); //长度数据不符合,丢弃
LogHelper.Info("上传数组长度不够,丢弃数据");
return null;
}
- while (sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
+ while (Sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
byte[] result = new byte[length + 6];
result[0] = headerBuff[0];
result[1] = headerBuff[1];
result[2] = lengthBuffer[0];
result[3] = lengthBuffer[1];
- sp.Read(result, 4, result.Length - 4);
+ Sp.Read(result, 4, result.Length - 4);
//if (result[result.Length - 1] != 0x00 || result[result.Length - 2] != 0x00 ||
// result[result.Length - 3] != 0x00 || result[result.Length - 4] != 0x00)
@@ -124,14 +129,14 @@
else
{
Thread.Sleep(10);
- String str = Encoding.UTF8.GetString(headerBuff) + sp.ReadExisting();
+ String str = Encoding.UTF8.GetString(headerBuff) + Sp.ReadExisting();
if (str != "" && str.Contains("\r\n"))
{
strResult = str;
}
else
{
- sp.DiscardInBuffer();
+ Sp.DiscardInBuffer();
}
}
@@ -140,9 +145,9 @@
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错提示");
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
return null;
}
}
@@ -150,25 +155,25 @@
///
/// 显示信号电量
///
- public void showSignal()
+ public void ShowSignal()
{
- double configItr = 20000;
- byte devid = 0x01;
+ const double configItr = 20000;
+ byte devId = 0x01;
try
{
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
if (CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMapx.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMapx.Signal));
HomePageViewModel.Instance.TransmitterAFault = devMapx.Status == "1" ? true : false;
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
}
catch (Exception e)
@@ -181,14 +186,14 @@
{
try
{
- devid = (byte)((devid == 0x01) ? 0x02 : 0x01);
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ devId = (byte)((devId == 0x01) ? 0x02 : 0x01);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
- if (devid.ToString() == DevCode.Dev1.Substring(11, 1) &&
+ if (devId.ToString() == DevCode.Dev1.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMap1.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap1.Signal));
@@ -207,10 +212,10 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1].Signal = "-121"; //初始化信号为0
}
- else if (devid.ToString() == DevCode.Dev2.Substring(11, 1) &&
+ else if (devId.ToString() == DevCode.Dev2.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev2))
{
- DevStatus devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
+ var devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
HomePageViewModel.Instance.TransmitterBBattery = Convert.ToDouble(devMap2.Cell);
HomePageViewModel.Instance.TransmitterBSignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap2.Signal));
@@ -230,7 +235,7 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2].Signal = "-121"; //初始化信号为0
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
//Thread.Sleep(10000);
@@ -252,9 +257,9 @@
catch (Exception e)
{
timer.Stop();
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
}
});
}
@@ -263,7 +268,7 @@
{
//System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = interval;
- timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e) { action(e); };
+ timer.Elapsed += delegate(object sender, ElapsedEventArgs e) { action(e); };
timer.Enabled = true;
}
diff --git a/PipeGallery/Correlator/SenderClass.cs b/PipeGallery/Correlator/SenderClass.cs
index f01350b..16e0e86 100644
--- a/PipeGallery/Correlator/SenderClass.cs
+++ b/PipeGallery/Correlator/SenderClass.cs
@@ -9,9 +9,8 @@
///
/// 下发唤醒指令
///
- ///
///
- public static void sendCorrelatorWakeUpCmd(SerialPort sp)
+ public static void SendCorrelatorWakeUpCmd(SerialPort sp)
{
try
{
@@ -73,7 +72,8 @@
afcrc.CopyTo(reBt, 2);
*/
LogHelper.Info("下发相关仪唤醒信息:" + BitConverter.ToString(afcrc));
-
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发相关仪唤醒信息 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
@@ -87,7 +87,7 @@
///
///
///
- public static void sendCellAndStatusCollectCmd(SerialPort sp, byte devid)
+ public static void SendCellAndStatusCollectCmd(SerialPort sp, byte devid)
{
try
{
@@ -147,6 +147,8 @@
btcrc.CopyTo(afcrc, result.Length);
LogHelper.Info("下发状态采集指令:" + BitConverter.ToString(afcrc));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发状态采集指令 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
diff --git a/PipeGallery/MainWindow.xaml b/PipeGallery/MainWindow.xaml
index 746bc2f..99d36e5 100644
--- a/PipeGallery/MainWindow.xaml
+++ b/PipeGallery/MainWindow.xaml
@@ -7,6 +7,7 @@
Left="0"
Top="0"
WindowStartupLocation="Manual"
- WindowState="Maximized">
+ WindowState="Maximized"
+ WindowStyle="None">
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
index 60a403b..9be9718 100644
--- a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
+++ b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
@@ -7,8 +7,8 @@
{
public static Dictionary> devDataValueMap = new Dictionary>();
- public static Dictionary>
- devRangingDataValueMap = new Dictionary>(); //测距数据
+ public static Dictionary>
+ devRangingDataValueMap = new Dictionary>(); //测距数据
public static bool isNoFilter = true;
diff --git a/PipeGallery/Correlator/ManipulateSerialPort.cs b/PipeGallery/Correlator/ManipulateSerialPort.cs
index 0715dbc..606dd84 100644
--- a/PipeGallery/Correlator/ManipulateSerialPort.cs
+++ b/PipeGallery/Correlator/ManipulateSerialPort.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.IO.Ports;
using System.Text;
using System.Threading;
@@ -6,20 +7,22 @@
using System.Windows;
using PipeGallery.Manage;
using PipeGallery.ViewModel;
+using Application = System.Windows.Forms.Application;
+using Timer = System.Timers.Timer;
namespace PipeGallery.Correlator
{
class ManipulateSerialPort
{
- public SerialPort sp = new SerialPort(); //实例化串口通讯类
- public System.Timers.Timer timer = new System.Timers.Timer();
- public bool collectData = true;
+ public readonly SerialPort Sp = new SerialPort(); //实例化串口通讯类
+ public readonly Timer timer = new Timer();
+ public bool CollectData = true;
//DevCode dev = new DevCode();
public ManipulateSerialPort()
{
- sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
+ Sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
@@ -32,12 +35,14 @@
{
try
{
- string strResult = "";
- byte[] bRequestInfo = getRequestInfo(ref strResult);
+ var strResult = "";
+ var bRequestInfo = GetRequestInfo(ref strResult);
if (bRequestInfo != null)
{
LogHelper.Info("接收到的数据:" + BitConverter.ToString(bRequestInfo).Replace("-", ""));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 接收到的数据: " +
+ BitConverter.ToString(bRequestInfo).Replace("-", ""));
}
else if (strResult != "")
{
@@ -50,15 +55,15 @@
if (bRequestInfo != null)
{
- if (sp == null)
+ if (Sp == null)
return;
else
- new CmdClass().analysisDataValue(bRequestInfo, sp);
+ new CmdClass().AnalysisDataValue(bRequestInfo, Sp);
}
else
{
if (strResult != "")
- new CmdClass().analysisSignalValue(strResult, sp);
+ new CmdClass().AnalysisSignalValue(strResult, Sp);
}
}
catch (Exception ex)
@@ -71,34 +76,34 @@
/// 数据接收
///
///
- private byte[] getRequestInfo(ref string strResult)
+ private byte[] GetRequestInfo(ref string strResult)
{
try
{
- while (sp.BytesToRead < 4) Thread.Sleep(5);
- byte[] headerBuff = new byte[2];
- sp.Read(headerBuff, 0, 2); //读取数据
+ while (Sp.BytesToRead < 4) Thread.Sleep(5);
+ var headerBuff = new byte[2];
+ Sp.Read(headerBuff, 0, 2); //读取数据
if (headerBuff[0] == 0xA3 && headerBuff[1] == 0x20) //符合规范
{
byte[] lengthBuffer = new byte[2];
- sp.Read(lengthBuffer, 0, 2);
+ Sp.Read(lengthBuffer, 0, 2);
int length = StringUtil.ConvertBytes2Int(lengthBuffer);
if (length < 12)
{
- sp.DiscardInBuffer(); //长度数据不符合,丢弃
+ Sp.DiscardInBuffer(); //长度数据不符合,丢弃
LogHelper.Info("上传数组长度不够,丢弃数据");
return null;
}
- while (sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
+ while (Sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
byte[] result = new byte[length + 6];
result[0] = headerBuff[0];
result[1] = headerBuff[1];
result[2] = lengthBuffer[0];
result[3] = lengthBuffer[1];
- sp.Read(result, 4, result.Length - 4);
+ Sp.Read(result, 4, result.Length - 4);
//if (result[result.Length - 1] != 0x00 || result[result.Length - 2] != 0x00 ||
// result[result.Length - 3] != 0x00 || result[result.Length - 4] != 0x00)
@@ -124,14 +129,14 @@
else
{
Thread.Sleep(10);
- String str = Encoding.UTF8.GetString(headerBuff) + sp.ReadExisting();
+ String str = Encoding.UTF8.GetString(headerBuff) + Sp.ReadExisting();
if (str != "" && str.Contains("\r\n"))
{
strResult = str;
}
else
{
- sp.DiscardInBuffer();
+ Sp.DiscardInBuffer();
}
}
@@ -140,9 +145,9 @@
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错提示");
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
return null;
}
}
@@ -150,25 +155,25 @@
///
/// 显示信号电量
///
- public void showSignal()
+ public void ShowSignal()
{
- double configItr = 20000;
- byte devid = 0x01;
+ const double configItr = 20000;
+ byte devId = 0x01;
try
{
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
if (CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMapx.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMapx.Signal));
HomePageViewModel.Instance.TransmitterAFault = devMapx.Status == "1" ? true : false;
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
}
catch (Exception e)
@@ -181,14 +186,14 @@
{
try
{
- devid = (byte)((devid == 0x01) ? 0x02 : 0x01);
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ devId = (byte)((devId == 0x01) ? 0x02 : 0x01);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
- if (devid.ToString() == DevCode.Dev1.Substring(11, 1) &&
+ if (devId.ToString() == DevCode.Dev1.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMap1.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap1.Signal));
@@ -207,10 +212,10 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1].Signal = "-121"; //初始化信号为0
}
- else if (devid.ToString() == DevCode.Dev2.Substring(11, 1) &&
+ else if (devId.ToString() == DevCode.Dev2.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev2))
{
- DevStatus devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
+ var devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
HomePageViewModel.Instance.TransmitterBBattery = Convert.ToDouble(devMap2.Cell);
HomePageViewModel.Instance.TransmitterBSignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap2.Signal));
@@ -230,7 +235,7 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2].Signal = "-121"; //初始化信号为0
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
//Thread.Sleep(10000);
@@ -252,9 +257,9 @@
catch (Exception e)
{
timer.Stop();
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
}
});
}
@@ -263,7 +268,7 @@
{
//System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = interval;
- timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e) { action(e); };
+ timer.Elapsed += delegate(object sender, ElapsedEventArgs e) { action(e); };
timer.Enabled = true;
}
diff --git a/PipeGallery/Correlator/SenderClass.cs b/PipeGallery/Correlator/SenderClass.cs
index f01350b..16e0e86 100644
--- a/PipeGallery/Correlator/SenderClass.cs
+++ b/PipeGallery/Correlator/SenderClass.cs
@@ -9,9 +9,8 @@
///
/// 下发唤醒指令
///
- ///
///
- public static void sendCorrelatorWakeUpCmd(SerialPort sp)
+ public static void SendCorrelatorWakeUpCmd(SerialPort sp)
{
try
{
@@ -73,7 +72,8 @@
afcrc.CopyTo(reBt, 2);
*/
LogHelper.Info("下发相关仪唤醒信息:" + BitConverter.ToString(afcrc));
-
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发相关仪唤醒信息 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
@@ -87,7 +87,7 @@
///
///
///
- public static void sendCellAndStatusCollectCmd(SerialPort sp, byte devid)
+ public static void SendCellAndStatusCollectCmd(SerialPort sp, byte devid)
{
try
{
@@ -147,6 +147,8 @@
btcrc.CopyTo(afcrc, result.Length);
LogHelper.Info("下发状态采集指令:" + BitConverter.ToString(afcrc));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发状态采集指令 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
diff --git a/PipeGallery/MainWindow.xaml b/PipeGallery/MainWindow.xaml
index 746bc2f..99d36e5 100644
--- a/PipeGallery/MainWindow.xaml
+++ b/PipeGallery/MainWindow.xaml
@@ -7,6 +7,7 @@
Left="0"
Top="0"
WindowStartupLocation="Manual"
- WindowState="Maximized">
+ WindowState="Maximized"
+ WindowStyle="None">
diff --git a/PipeGallery/PipeGallery.csproj b/PipeGallery/PipeGallery.csproj
index c277173..7a81a20 100644
--- a/PipeGallery/PipeGallery.csproj
+++ b/PipeGallery/PipeGallery.csproj
@@ -101,36 +101,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
index 60a403b..9be9718 100644
--- a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
+++ b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
@@ -7,8 +7,8 @@
{
public static Dictionary> devDataValueMap = new Dictionary>();
- public static Dictionary>
- devRangingDataValueMap = new Dictionary>(); //测距数据
+ public static Dictionary>
+ devRangingDataValueMap = new Dictionary>(); //测距数据
public static bool isNoFilter = true;
diff --git a/PipeGallery/Correlator/ManipulateSerialPort.cs b/PipeGallery/Correlator/ManipulateSerialPort.cs
index 0715dbc..606dd84 100644
--- a/PipeGallery/Correlator/ManipulateSerialPort.cs
+++ b/PipeGallery/Correlator/ManipulateSerialPort.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.IO.Ports;
using System.Text;
using System.Threading;
@@ -6,20 +7,22 @@
using System.Windows;
using PipeGallery.Manage;
using PipeGallery.ViewModel;
+using Application = System.Windows.Forms.Application;
+using Timer = System.Timers.Timer;
namespace PipeGallery.Correlator
{
class ManipulateSerialPort
{
- public SerialPort sp = new SerialPort(); //实例化串口通讯类
- public System.Timers.Timer timer = new System.Timers.Timer();
- public bool collectData = true;
+ public readonly SerialPort Sp = new SerialPort(); //实例化串口通讯类
+ public readonly Timer timer = new Timer();
+ public bool CollectData = true;
//DevCode dev = new DevCode();
public ManipulateSerialPort()
{
- sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
+ Sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
@@ -32,12 +35,14 @@
{
try
{
- string strResult = "";
- byte[] bRequestInfo = getRequestInfo(ref strResult);
+ var strResult = "";
+ var bRequestInfo = GetRequestInfo(ref strResult);
if (bRequestInfo != null)
{
LogHelper.Info("接收到的数据:" + BitConverter.ToString(bRequestInfo).Replace("-", ""));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 接收到的数据: " +
+ BitConverter.ToString(bRequestInfo).Replace("-", ""));
}
else if (strResult != "")
{
@@ -50,15 +55,15 @@
if (bRequestInfo != null)
{
- if (sp == null)
+ if (Sp == null)
return;
else
- new CmdClass().analysisDataValue(bRequestInfo, sp);
+ new CmdClass().AnalysisDataValue(bRequestInfo, Sp);
}
else
{
if (strResult != "")
- new CmdClass().analysisSignalValue(strResult, sp);
+ new CmdClass().AnalysisSignalValue(strResult, Sp);
}
}
catch (Exception ex)
@@ -71,34 +76,34 @@
/// 数据接收
///
///
- private byte[] getRequestInfo(ref string strResult)
+ private byte[] GetRequestInfo(ref string strResult)
{
try
{
- while (sp.BytesToRead < 4) Thread.Sleep(5);
- byte[] headerBuff = new byte[2];
- sp.Read(headerBuff, 0, 2); //读取数据
+ while (Sp.BytesToRead < 4) Thread.Sleep(5);
+ var headerBuff = new byte[2];
+ Sp.Read(headerBuff, 0, 2); //读取数据
if (headerBuff[0] == 0xA3 && headerBuff[1] == 0x20) //符合规范
{
byte[] lengthBuffer = new byte[2];
- sp.Read(lengthBuffer, 0, 2);
+ Sp.Read(lengthBuffer, 0, 2);
int length = StringUtil.ConvertBytes2Int(lengthBuffer);
if (length < 12)
{
- sp.DiscardInBuffer(); //长度数据不符合,丢弃
+ Sp.DiscardInBuffer(); //长度数据不符合,丢弃
LogHelper.Info("上传数组长度不够,丢弃数据");
return null;
}
- while (sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
+ while (Sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
byte[] result = new byte[length + 6];
result[0] = headerBuff[0];
result[1] = headerBuff[1];
result[2] = lengthBuffer[0];
result[3] = lengthBuffer[1];
- sp.Read(result, 4, result.Length - 4);
+ Sp.Read(result, 4, result.Length - 4);
//if (result[result.Length - 1] != 0x00 || result[result.Length - 2] != 0x00 ||
// result[result.Length - 3] != 0x00 || result[result.Length - 4] != 0x00)
@@ -124,14 +129,14 @@
else
{
Thread.Sleep(10);
- String str = Encoding.UTF8.GetString(headerBuff) + sp.ReadExisting();
+ String str = Encoding.UTF8.GetString(headerBuff) + Sp.ReadExisting();
if (str != "" && str.Contains("\r\n"))
{
strResult = str;
}
else
{
- sp.DiscardInBuffer();
+ Sp.DiscardInBuffer();
}
}
@@ -140,9 +145,9 @@
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错提示");
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
return null;
}
}
@@ -150,25 +155,25 @@
///
/// 显示信号电量
///
- public void showSignal()
+ public void ShowSignal()
{
- double configItr = 20000;
- byte devid = 0x01;
+ const double configItr = 20000;
+ byte devId = 0x01;
try
{
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
if (CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMapx.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMapx.Signal));
HomePageViewModel.Instance.TransmitterAFault = devMapx.Status == "1" ? true : false;
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
}
catch (Exception e)
@@ -181,14 +186,14 @@
{
try
{
- devid = (byte)((devid == 0x01) ? 0x02 : 0x01);
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ devId = (byte)((devId == 0x01) ? 0x02 : 0x01);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
- if (devid.ToString() == DevCode.Dev1.Substring(11, 1) &&
+ if (devId.ToString() == DevCode.Dev1.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMap1.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap1.Signal));
@@ -207,10 +212,10 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1].Signal = "-121"; //初始化信号为0
}
- else if (devid.ToString() == DevCode.Dev2.Substring(11, 1) &&
+ else if (devId.ToString() == DevCode.Dev2.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev2))
{
- DevStatus devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
+ var devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
HomePageViewModel.Instance.TransmitterBBattery = Convert.ToDouble(devMap2.Cell);
HomePageViewModel.Instance.TransmitterBSignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap2.Signal));
@@ -230,7 +235,7 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2].Signal = "-121"; //初始化信号为0
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
//Thread.Sleep(10000);
@@ -252,9 +257,9 @@
catch (Exception e)
{
timer.Stop();
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
}
});
}
@@ -263,7 +268,7 @@
{
//System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = interval;
- timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e) { action(e); };
+ timer.Elapsed += delegate(object sender, ElapsedEventArgs e) { action(e); };
timer.Enabled = true;
}
diff --git a/PipeGallery/Correlator/SenderClass.cs b/PipeGallery/Correlator/SenderClass.cs
index f01350b..16e0e86 100644
--- a/PipeGallery/Correlator/SenderClass.cs
+++ b/PipeGallery/Correlator/SenderClass.cs
@@ -9,9 +9,8 @@
///
/// 下发唤醒指令
///
- ///
///
- public static void sendCorrelatorWakeUpCmd(SerialPort sp)
+ public static void SendCorrelatorWakeUpCmd(SerialPort sp)
{
try
{
@@ -73,7 +72,8 @@
afcrc.CopyTo(reBt, 2);
*/
LogHelper.Info("下发相关仪唤醒信息:" + BitConverter.ToString(afcrc));
-
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发相关仪唤醒信息 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
@@ -87,7 +87,7 @@
///
///
///
- public static void sendCellAndStatusCollectCmd(SerialPort sp, byte devid)
+ public static void SendCellAndStatusCollectCmd(SerialPort sp, byte devid)
{
try
{
@@ -147,6 +147,8 @@
btcrc.CopyTo(afcrc, result.Length);
LogHelper.Info("下发状态采集指令:" + BitConverter.ToString(afcrc));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发状态采集指令 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
diff --git a/PipeGallery/MainWindow.xaml b/PipeGallery/MainWindow.xaml
index 746bc2f..99d36e5 100644
--- a/PipeGallery/MainWindow.xaml
+++ b/PipeGallery/MainWindow.xaml
@@ -7,6 +7,7 @@
Left="0"
Top="0"
WindowStartupLocation="Manual"
- WindowState="Maximized">
+ WindowState="Maximized"
+ WindowStyle="None">
diff --git a/PipeGallery/PipeGallery.csproj b/PipeGallery/PipeGallery.csproj
index c277173..7a81a20 100644
--- a/PipeGallery/PipeGallery.csproj
+++ b/PipeGallery/PipeGallery.csproj
@@ -101,36 +101,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs b/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
index 1764d65..a214289 100644
--- a/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
+++ b/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using PipeGallery.Correlator;
+using PipeGallery.Manage;
namespace PipeGallery.SensorHubTag
{
@@ -15,51 +16,45 @@
return false;
}
- UploadTag uploadTag = tag as UploadTag;
+ var uploadTag = tag as UploadTag;
return uploadTag.BizType == 4; //噪声
}
//0000 0071 前四个字节暂时不用
- public override void execute(Tag tag, String devCode, CellTag cellTag,
+ public override void execute(Tag tag, string devCode, CellTag cellTag,
SystemDateTag systemDateTag)
{
- double[] clobData = new double[3750]; //3750个采样点
+ var clobData = new double[3750]; //3750个采样点
//TODO LIST:解析噪声数据保存噪声数据
- UploadTag noiseTag = tag as UploadTag;
- int itv = noiseTag.CollectInter;
+ var noiseTag = tag as UploadTag;
+ var itv = noiseTag?.CollectInter;
//String collecTime = systemDateTag.CollectDate;
- int len = noiseTag.Len;
- byte[] dataValue = noiseTag.DataValue;
+ var len = noiseTag?.Len;
+ var dataValue = noiseTag?.DataValue;
+ //保存原始16进制数据
+ CmdClass.SaveHexData(devCode, dataValue);
//int validCount = dataValue.Length / 6;
//bool flag = true;//是否有数据缺失标志位
// LogHelper.Info("相关仪数据上传TAG:oid:" + noiseTag.Oid + " 采集间隔: " +
//itv + "采集时间:" + collecTime + "上传数值:" + dataValue);
- int num = len / 3; //上传的噪声数据个数,修改末3个字节
- for (int i = 0; i < num; i++)
+ var num = len / 3; //上传的噪声数据个数,修改末3个字节
+ for (var i = 0; i < num; i++)
{
- byte[] dStr = new byte[3];
+ var dStr = new byte[3];
Array.Copy(dataValue, i * 3, dStr, 0, 3);
clobData[i] = strHexToDouble(dStr);
}
- string devCodeOther;
- if (devCode == DevCode.Dev1)
- {
- devCodeOther = DevCode.Dev2;
- }
- else
- {
- devCodeOther = DevCode.Dev1;
- }
+ var devCodeOther = devCode == DevCode.Dev1 ? DevCode.Dev2 : DevCode.Dev1;
if (CorrelatorDataSaveThread.devDataValueMap.ContainsKey(devCode))
{
- int devCodeLength = CorrelatorDataSaveThread.devDataValueMap[devCode].Count;
- int devCodeOtherLength = CorrelatorDataSaveThread.devDataValueMap[devCodeOther].Count;
+ var devCodeLength = CorrelatorDataSaveThread.devDataValueMap[devCode].Count;
+ var devCodeOtherLength = CorrelatorDataSaveThread.devDataValueMap[devCodeOther].Count;
if (devCodeLength == devCodeOtherLength && devCode == DevCode.Dev1)
{
@@ -82,14 +77,13 @@
else if (devCode == DevCode.Dev1 || (devCode == DevCode.Dev2 &&
CorrelatorDataSaveThread.devDataValueMap.ContainsKey(devCodeOther)))
{
- List clobDataDoubleArray = new List();
- clobDataDoubleArray.Add(clobData);
+ var clobDataDoubleArray = new List { clobData };
CorrelatorDataSaveThread.devDataValueMap.Add(devCode, clobDataDoubleArray);
//LogHelper.Info("设备【" + devCode + "】添加到Map");
}
else
{
- //LogHelper.Info("将设备【" + devCode + "】数据丢弃");
+ LogHelper.Info("将设备【" + devCode + "】数据丢弃");
}
////////////////////////////////////////////////////////////////////////////////////////
@@ -101,9 +95,9 @@
if (src.Length != 3)
return 0;
- Int16 result1 = src[0];
- Int16 result2 = src[1];
- Int16 result3 = src[2];
+ short result1 = src[0];
+ short result2 = src[1];
+ short result3 = src[2];
if ((result1 & 0x80) == 0x80)
{
@@ -112,7 +106,7 @@
result3 = Convert.ToInt16(result3 - 255);
}
- double data = (((result1 * 65536 + result2 * 256 + result3) * 5) / 83.88607) / 100000;
+ var data = (result1 * 65536 + result2 * 256 + result3) * 5 / 83.88607 / 100000;
//String strData = ((decimal)Math.Round(data, 8)).ToString();
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
index 60a403b..9be9718 100644
--- a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
+++ b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
@@ -7,8 +7,8 @@
{
public static Dictionary> devDataValueMap = new Dictionary>();
- public static Dictionary>
- devRangingDataValueMap = new Dictionary>(); //测距数据
+ public static Dictionary>
+ devRangingDataValueMap = new Dictionary>(); //测距数据
public static bool isNoFilter = true;
diff --git a/PipeGallery/Correlator/ManipulateSerialPort.cs b/PipeGallery/Correlator/ManipulateSerialPort.cs
index 0715dbc..606dd84 100644
--- a/PipeGallery/Correlator/ManipulateSerialPort.cs
+++ b/PipeGallery/Correlator/ManipulateSerialPort.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.IO.Ports;
using System.Text;
using System.Threading;
@@ -6,20 +7,22 @@
using System.Windows;
using PipeGallery.Manage;
using PipeGallery.ViewModel;
+using Application = System.Windows.Forms.Application;
+using Timer = System.Timers.Timer;
namespace PipeGallery.Correlator
{
class ManipulateSerialPort
{
- public SerialPort sp = new SerialPort(); //实例化串口通讯类
- public System.Timers.Timer timer = new System.Timers.Timer();
- public bool collectData = true;
+ public readonly SerialPort Sp = new SerialPort(); //实例化串口通讯类
+ public readonly Timer timer = new Timer();
+ public bool CollectData = true;
//DevCode dev = new DevCode();
public ManipulateSerialPort()
{
- sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
+ Sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
@@ -32,12 +35,14 @@
{
try
{
- string strResult = "";
- byte[] bRequestInfo = getRequestInfo(ref strResult);
+ var strResult = "";
+ var bRequestInfo = GetRequestInfo(ref strResult);
if (bRequestInfo != null)
{
LogHelper.Info("接收到的数据:" + BitConverter.ToString(bRequestInfo).Replace("-", ""));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 接收到的数据: " +
+ BitConverter.ToString(bRequestInfo).Replace("-", ""));
}
else if (strResult != "")
{
@@ -50,15 +55,15 @@
if (bRequestInfo != null)
{
- if (sp == null)
+ if (Sp == null)
return;
else
- new CmdClass().analysisDataValue(bRequestInfo, sp);
+ new CmdClass().AnalysisDataValue(bRequestInfo, Sp);
}
else
{
if (strResult != "")
- new CmdClass().analysisSignalValue(strResult, sp);
+ new CmdClass().AnalysisSignalValue(strResult, Sp);
}
}
catch (Exception ex)
@@ -71,34 +76,34 @@
/// 数据接收
///
///
- private byte[] getRequestInfo(ref string strResult)
+ private byte[] GetRequestInfo(ref string strResult)
{
try
{
- while (sp.BytesToRead < 4) Thread.Sleep(5);
- byte[] headerBuff = new byte[2];
- sp.Read(headerBuff, 0, 2); //读取数据
+ while (Sp.BytesToRead < 4) Thread.Sleep(5);
+ var headerBuff = new byte[2];
+ Sp.Read(headerBuff, 0, 2); //读取数据
if (headerBuff[0] == 0xA3 && headerBuff[1] == 0x20) //符合规范
{
byte[] lengthBuffer = new byte[2];
- sp.Read(lengthBuffer, 0, 2);
+ Sp.Read(lengthBuffer, 0, 2);
int length = StringUtil.ConvertBytes2Int(lengthBuffer);
if (length < 12)
{
- sp.DiscardInBuffer(); //长度数据不符合,丢弃
+ Sp.DiscardInBuffer(); //长度数据不符合,丢弃
LogHelper.Info("上传数组长度不够,丢弃数据");
return null;
}
- while (sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
+ while (Sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
byte[] result = new byte[length + 6];
result[0] = headerBuff[0];
result[1] = headerBuff[1];
result[2] = lengthBuffer[0];
result[3] = lengthBuffer[1];
- sp.Read(result, 4, result.Length - 4);
+ Sp.Read(result, 4, result.Length - 4);
//if (result[result.Length - 1] != 0x00 || result[result.Length - 2] != 0x00 ||
// result[result.Length - 3] != 0x00 || result[result.Length - 4] != 0x00)
@@ -124,14 +129,14 @@
else
{
Thread.Sleep(10);
- String str = Encoding.UTF8.GetString(headerBuff) + sp.ReadExisting();
+ String str = Encoding.UTF8.GetString(headerBuff) + Sp.ReadExisting();
if (str != "" && str.Contains("\r\n"))
{
strResult = str;
}
else
{
- sp.DiscardInBuffer();
+ Sp.DiscardInBuffer();
}
}
@@ -140,9 +145,9 @@
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错提示");
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
return null;
}
}
@@ -150,25 +155,25 @@
///
/// 显示信号电量
///
- public void showSignal()
+ public void ShowSignal()
{
- double configItr = 20000;
- byte devid = 0x01;
+ const double configItr = 20000;
+ byte devId = 0x01;
try
{
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
if (CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMapx.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMapx.Signal));
HomePageViewModel.Instance.TransmitterAFault = devMapx.Status == "1" ? true : false;
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
}
catch (Exception e)
@@ -181,14 +186,14 @@
{
try
{
- devid = (byte)((devid == 0x01) ? 0x02 : 0x01);
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ devId = (byte)((devId == 0x01) ? 0x02 : 0x01);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
- if (devid.ToString() == DevCode.Dev1.Substring(11, 1) &&
+ if (devId.ToString() == DevCode.Dev1.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMap1.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap1.Signal));
@@ -207,10 +212,10 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1].Signal = "-121"; //初始化信号为0
}
- else if (devid.ToString() == DevCode.Dev2.Substring(11, 1) &&
+ else if (devId.ToString() == DevCode.Dev2.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev2))
{
- DevStatus devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
+ var devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
HomePageViewModel.Instance.TransmitterBBattery = Convert.ToDouble(devMap2.Cell);
HomePageViewModel.Instance.TransmitterBSignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap2.Signal));
@@ -230,7 +235,7 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2].Signal = "-121"; //初始化信号为0
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
//Thread.Sleep(10000);
@@ -252,9 +257,9 @@
catch (Exception e)
{
timer.Stop();
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
}
});
}
@@ -263,7 +268,7 @@
{
//System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = interval;
- timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e) { action(e); };
+ timer.Elapsed += delegate(object sender, ElapsedEventArgs e) { action(e); };
timer.Enabled = true;
}
diff --git a/PipeGallery/Correlator/SenderClass.cs b/PipeGallery/Correlator/SenderClass.cs
index f01350b..16e0e86 100644
--- a/PipeGallery/Correlator/SenderClass.cs
+++ b/PipeGallery/Correlator/SenderClass.cs
@@ -9,9 +9,8 @@
///
/// 下发唤醒指令
///
- ///
///
- public static void sendCorrelatorWakeUpCmd(SerialPort sp)
+ public static void SendCorrelatorWakeUpCmd(SerialPort sp)
{
try
{
@@ -73,7 +72,8 @@
afcrc.CopyTo(reBt, 2);
*/
LogHelper.Info("下发相关仪唤醒信息:" + BitConverter.ToString(afcrc));
-
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发相关仪唤醒信息 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
@@ -87,7 +87,7 @@
///
///
///
- public static void sendCellAndStatusCollectCmd(SerialPort sp, byte devid)
+ public static void SendCellAndStatusCollectCmd(SerialPort sp, byte devid)
{
try
{
@@ -147,6 +147,8 @@
btcrc.CopyTo(afcrc, result.Length);
LogHelper.Info("下发状态采集指令:" + BitConverter.ToString(afcrc));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发状态采集指令 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
diff --git a/PipeGallery/MainWindow.xaml b/PipeGallery/MainWindow.xaml
index 746bc2f..99d36e5 100644
--- a/PipeGallery/MainWindow.xaml
+++ b/PipeGallery/MainWindow.xaml
@@ -7,6 +7,7 @@
Left="0"
Top="0"
WindowStartupLocation="Manual"
- WindowState="Maximized">
+ WindowState="Maximized"
+ WindowStyle="None">
diff --git a/PipeGallery/PipeGallery.csproj b/PipeGallery/PipeGallery.csproj
index c277173..7a81a20 100644
--- a/PipeGallery/PipeGallery.csproj
+++ b/PipeGallery/PipeGallery.csproj
@@ -101,36 +101,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs b/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
index 1764d65..a214289 100644
--- a/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
+++ b/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using PipeGallery.Correlator;
+using PipeGallery.Manage;
namespace PipeGallery.SensorHubTag
{
@@ -15,51 +16,45 @@
return false;
}
- UploadTag uploadTag = tag as UploadTag;
+ var uploadTag = tag as UploadTag;
return uploadTag.BizType == 4; //噪声
}
//0000 0071 前四个字节暂时不用
- public override void execute(Tag tag, String devCode, CellTag cellTag,
+ public override void execute(Tag tag, string devCode, CellTag cellTag,
SystemDateTag systemDateTag)
{
- double[] clobData = new double[3750]; //3750个采样点
+ var clobData = new double[3750]; //3750个采样点
//TODO LIST:解析噪声数据保存噪声数据
- UploadTag noiseTag = tag as UploadTag;
- int itv = noiseTag.CollectInter;
+ var noiseTag = tag as UploadTag;
+ var itv = noiseTag?.CollectInter;
//String collecTime = systemDateTag.CollectDate;
- int len = noiseTag.Len;
- byte[] dataValue = noiseTag.DataValue;
+ var len = noiseTag?.Len;
+ var dataValue = noiseTag?.DataValue;
+ //保存原始16进制数据
+ CmdClass.SaveHexData(devCode, dataValue);
//int validCount = dataValue.Length / 6;
//bool flag = true;//是否有数据缺失标志位
// LogHelper.Info("相关仪数据上传TAG:oid:" + noiseTag.Oid + " 采集间隔: " +
//itv + "采集时间:" + collecTime + "上传数值:" + dataValue);
- int num = len / 3; //上传的噪声数据个数,修改末3个字节
- for (int i = 0; i < num; i++)
+ var num = len / 3; //上传的噪声数据个数,修改末3个字节
+ for (var i = 0; i < num; i++)
{
- byte[] dStr = new byte[3];
+ var dStr = new byte[3];
Array.Copy(dataValue, i * 3, dStr, 0, 3);
clobData[i] = strHexToDouble(dStr);
}
- string devCodeOther;
- if (devCode == DevCode.Dev1)
- {
- devCodeOther = DevCode.Dev2;
- }
- else
- {
- devCodeOther = DevCode.Dev1;
- }
+ var devCodeOther = devCode == DevCode.Dev1 ? DevCode.Dev2 : DevCode.Dev1;
if (CorrelatorDataSaveThread.devDataValueMap.ContainsKey(devCode))
{
- int devCodeLength = CorrelatorDataSaveThread.devDataValueMap[devCode].Count;
- int devCodeOtherLength = CorrelatorDataSaveThread.devDataValueMap[devCodeOther].Count;
+ var devCodeLength = CorrelatorDataSaveThread.devDataValueMap[devCode].Count;
+ var devCodeOtherLength = CorrelatorDataSaveThread.devDataValueMap[devCodeOther].Count;
if (devCodeLength == devCodeOtherLength && devCode == DevCode.Dev1)
{
@@ -82,14 +77,13 @@
else if (devCode == DevCode.Dev1 || (devCode == DevCode.Dev2 &&
CorrelatorDataSaveThread.devDataValueMap.ContainsKey(devCodeOther)))
{
- List clobDataDoubleArray = new List();
- clobDataDoubleArray.Add(clobData);
+ var clobDataDoubleArray = new List { clobData };
CorrelatorDataSaveThread.devDataValueMap.Add(devCode, clobDataDoubleArray);
//LogHelper.Info("设备【" + devCode + "】添加到Map");
}
else
{
- //LogHelper.Info("将设备【" + devCode + "】数据丢弃");
+ LogHelper.Info("将设备【" + devCode + "】数据丢弃");
}
////////////////////////////////////////////////////////////////////////////////////////
@@ -101,9 +95,9 @@
if (src.Length != 3)
return 0;
- Int16 result1 = src[0];
- Int16 result2 = src[1];
- Int16 result3 = src[2];
+ short result1 = src[0];
+ short result2 = src[1];
+ short result3 = src[2];
if ((result1 & 0x80) == 0x80)
{
@@ -112,7 +106,7 @@
result3 = Convert.ToInt16(result3 - 255);
}
- double data = (((result1 * 65536 + result2 * 256 + result3) * 5) / 83.88607) / 100000;
+ var data = (result1 * 65536 + result2 * 256 + result3) * 5 / 83.88607 / 100000;
//String strData = ((decimal)Math.Round(data, 8)).ToString();
diff --git a/PipeGallery/View/AuditionView.xaml.cs b/PipeGallery/View/AuditionView.xaml.cs
index 875e1f4..6021caf 100644
--- a/PipeGallery/View/AuditionView.xaml.cs
+++ b/PipeGallery/View/AuditionView.xaml.cs
@@ -56,12 +56,12 @@
if (this.btnRed.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev1);
}
if (this.btnBlue.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev2);
}
}
@@ -93,7 +93,7 @@
private void btnRed_Click(object sender, RoutedEventArgs e)
{
- if (!CalculteSatus.msp.sp.IsOpen)
+ if (!CalculteSatus.msp.Sp.IsOpen)
{
this.btnRed.IsChecked = false;
new PopupWindow("未插入串口!").ShowDialog();
@@ -102,7 +102,7 @@
if (this.btnRed.IsChecked == false || this.btnRed.IsChecked == null)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev1);
String josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "number.json",
Encoding.UTF8);
@@ -118,7 +118,7 @@
{
if (this.btnBlue.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev2);
this.btnBlue.IsChecked = false;
}
@@ -131,7 +131,7 @@
private void btnBlue_Click(object sender, RoutedEventArgs e)
{
- if (!CalculteSatus.msp.sp.IsOpen)
+ if (!CalculteSatus.msp.Sp.IsOpen)
{
this.btnBlue.IsChecked = false;
new PopupWindow("未插入串口!").ShowDialog();
@@ -140,7 +140,7 @@
if (this.btnBlue.IsChecked == false || this.btnBlue.IsChecked == null)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev2);
String josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "number.json",
Encoding.UTF8);
@@ -156,7 +156,7 @@
{
if (this.btnRed.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev1);
this.btnRed.IsChecked = false;
}
@@ -175,7 +175,7 @@
Correlator.CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
Thread.Sleep(3000);
- SenderClass.sendSoundCollectCmd(CalculteSatus.msp.sp, devcode as string);
+ SenderClass.sendSoundCollectCmd(CalculteSatus.msp.Sp, devcode as string);
Thread.Sleep(2000);
CalculteSatus.isListening = true;
new Thread(new ThreadStart(timer)) { IsBackground = true }.Start();
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
index 60a403b..9be9718 100644
--- a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
+++ b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
@@ -7,8 +7,8 @@
{
public static Dictionary> devDataValueMap = new Dictionary>();
- public static Dictionary>
- devRangingDataValueMap = new Dictionary>(); //测距数据
+ public static Dictionary>
+ devRangingDataValueMap = new Dictionary>(); //测距数据
public static bool isNoFilter = true;
diff --git a/PipeGallery/Correlator/ManipulateSerialPort.cs b/PipeGallery/Correlator/ManipulateSerialPort.cs
index 0715dbc..606dd84 100644
--- a/PipeGallery/Correlator/ManipulateSerialPort.cs
+++ b/PipeGallery/Correlator/ManipulateSerialPort.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.IO.Ports;
using System.Text;
using System.Threading;
@@ -6,20 +7,22 @@
using System.Windows;
using PipeGallery.Manage;
using PipeGallery.ViewModel;
+using Application = System.Windows.Forms.Application;
+using Timer = System.Timers.Timer;
namespace PipeGallery.Correlator
{
class ManipulateSerialPort
{
- public SerialPort sp = new SerialPort(); //实例化串口通讯类
- public System.Timers.Timer timer = new System.Timers.Timer();
- public bool collectData = true;
+ public readonly SerialPort Sp = new SerialPort(); //实例化串口通讯类
+ public readonly Timer timer = new Timer();
+ public bool CollectData = true;
//DevCode dev = new DevCode();
public ManipulateSerialPort()
{
- sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
+ Sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
@@ -32,12 +35,14 @@
{
try
{
- string strResult = "";
- byte[] bRequestInfo = getRequestInfo(ref strResult);
+ var strResult = "";
+ var bRequestInfo = GetRequestInfo(ref strResult);
if (bRequestInfo != null)
{
LogHelper.Info("接收到的数据:" + BitConverter.ToString(bRequestInfo).Replace("-", ""));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 接收到的数据: " +
+ BitConverter.ToString(bRequestInfo).Replace("-", ""));
}
else if (strResult != "")
{
@@ -50,15 +55,15 @@
if (bRequestInfo != null)
{
- if (sp == null)
+ if (Sp == null)
return;
else
- new CmdClass().analysisDataValue(bRequestInfo, sp);
+ new CmdClass().AnalysisDataValue(bRequestInfo, Sp);
}
else
{
if (strResult != "")
- new CmdClass().analysisSignalValue(strResult, sp);
+ new CmdClass().AnalysisSignalValue(strResult, Sp);
}
}
catch (Exception ex)
@@ -71,34 +76,34 @@
/// 数据接收
///
///
- private byte[] getRequestInfo(ref string strResult)
+ private byte[] GetRequestInfo(ref string strResult)
{
try
{
- while (sp.BytesToRead < 4) Thread.Sleep(5);
- byte[] headerBuff = new byte[2];
- sp.Read(headerBuff, 0, 2); //读取数据
+ while (Sp.BytesToRead < 4) Thread.Sleep(5);
+ var headerBuff = new byte[2];
+ Sp.Read(headerBuff, 0, 2); //读取数据
if (headerBuff[0] == 0xA3 && headerBuff[1] == 0x20) //符合规范
{
byte[] lengthBuffer = new byte[2];
- sp.Read(lengthBuffer, 0, 2);
+ Sp.Read(lengthBuffer, 0, 2);
int length = StringUtil.ConvertBytes2Int(lengthBuffer);
if (length < 12)
{
- sp.DiscardInBuffer(); //长度数据不符合,丢弃
+ Sp.DiscardInBuffer(); //长度数据不符合,丢弃
LogHelper.Info("上传数组长度不够,丢弃数据");
return null;
}
- while (sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
+ while (Sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
byte[] result = new byte[length + 6];
result[0] = headerBuff[0];
result[1] = headerBuff[1];
result[2] = lengthBuffer[0];
result[3] = lengthBuffer[1];
- sp.Read(result, 4, result.Length - 4);
+ Sp.Read(result, 4, result.Length - 4);
//if (result[result.Length - 1] != 0x00 || result[result.Length - 2] != 0x00 ||
// result[result.Length - 3] != 0x00 || result[result.Length - 4] != 0x00)
@@ -124,14 +129,14 @@
else
{
Thread.Sleep(10);
- String str = Encoding.UTF8.GetString(headerBuff) + sp.ReadExisting();
+ String str = Encoding.UTF8.GetString(headerBuff) + Sp.ReadExisting();
if (str != "" && str.Contains("\r\n"))
{
strResult = str;
}
else
{
- sp.DiscardInBuffer();
+ Sp.DiscardInBuffer();
}
}
@@ -140,9 +145,9 @@
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错提示");
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
return null;
}
}
@@ -150,25 +155,25 @@
///
/// 显示信号电量
///
- public void showSignal()
+ public void ShowSignal()
{
- double configItr = 20000;
- byte devid = 0x01;
+ const double configItr = 20000;
+ byte devId = 0x01;
try
{
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
if (CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMapx.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMapx.Signal));
HomePageViewModel.Instance.TransmitterAFault = devMapx.Status == "1" ? true : false;
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
}
catch (Exception e)
@@ -181,14 +186,14 @@
{
try
{
- devid = (byte)((devid == 0x01) ? 0x02 : 0x01);
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ devId = (byte)((devId == 0x01) ? 0x02 : 0x01);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
- if (devid.ToString() == DevCode.Dev1.Substring(11, 1) &&
+ if (devId.ToString() == DevCode.Dev1.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMap1.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap1.Signal));
@@ -207,10 +212,10 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1].Signal = "-121"; //初始化信号为0
}
- else if (devid.ToString() == DevCode.Dev2.Substring(11, 1) &&
+ else if (devId.ToString() == DevCode.Dev2.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev2))
{
- DevStatus devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
+ var devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
HomePageViewModel.Instance.TransmitterBBattery = Convert.ToDouble(devMap2.Cell);
HomePageViewModel.Instance.TransmitterBSignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap2.Signal));
@@ -230,7 +235,7 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2].Signal = "-121"; //初始化信号为0
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
//Thread.Sleep(10000);
@@ -252,9 +257,9 @@
catch (Exception e)
{
timer.Stop();
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
}
});
}
@@ -263,7 +268,7 @@
{
//System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = interval;
- timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e) { action(e); };
+ timer.Elapsed += delegate(object sender, ElapsedEventArgs e) { action(e); };
timer.Enabled = true;
}
diff --git a/PipeGallery/Correlator/SenderClass.cs b/PipeGallery/Correlator/SenderClass.cs
index f01350b..16e0e86 100644
--- a/PipeGallery/Correlator/SenderClass.cs
+++ b/PipeGallery/Correlator/SenderClass.cs
@@ -9,9 +9,8 @@
///
/// 下发唤醒指令
///
- ///
///
- public static void sendCorrelatorWakeUpCmd(SerialPort sp)
+ public static void SendCorrelatorWakeUpCmd(SerialPort sp)
{
try
{
@@ -73,7 +72,8 @@
afcrc.CopyTo(reBt, 2);
*/
LogHelper.Info("下发相关仪唤醒信息:" + BitConverter.ToString(afcrc));
-
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发相关仪唤醒信息 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
@@ -87,7 +87,7 @@
///
///
///
- public static void sendCellAndStatusCollectCmd(SerialPort sp, byte devid)
+ public static void SendCellAndStatusCollectCmd(SerialPort sp, byte devid)
{
try
{
@@ -147,6 +147,8 @@
btcrc.CopyTo(afcrc, result.Length);
LogHelper.Info("下发状态采集指令:" + BitConverter.ToString(afcrc));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发状态采集指令 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
diff --git a/PipeGallery/MainWindow.xaml b/PipeGallery/MainWindow.xaml
index 746bc2f..99d36e5 100644
--- a/PipeGallery/MainWindow.xaml
+++ b/PipeGallery/MainWindow.xaml
@@ -7,6 +7,7 @@
Left="0"
Top="0"
WindowStartupLocation="Manual"
- WindowState="Maximized">
+ WindowState="Maximized"
+ WindowStyle="None">
diff --git a/PipeGallery/PipeGallery.csproj b/PipeGallery/PipeGallery.csproj
index c277173..7a81a20 100644
--- a/PipeGallery/PipeGallery.csproj
+++ b/PipeGallery/PipeGallery.csproj
@@ -101,36 +101,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs b/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
index 1764d65..a214289 100644
--- a/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
+++ b/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using PipeGallery.Correlator;
+using PipeGallery.Manage;
namespace PipeGallery.SensorHubTag
{
@@ -15,51 +16,45 @@
return false;
}
- UploadTag uploadTag = tag as UploadTag;
+ var uploadTag = tag as UploadTag;
return uploadTag.BizType == 4; //噪声
}
//0000 0071 前四个字节暂时不用
- public override void execute(Tag tag, String devCode, CellTag cellTag,
+ public override void execute(Tag tag, string devCode, CellTag cellTag,
SystemDateTag systemDateTag)
{
- double[] clobData = new double[3750]; //3750个采样点
+ var clobData = new double[3750]; //3750个采样点
//TODO LIST:解析噪声数据保存噪声数据
- UploadTag noiseTag = tag as UploadTag;
- int itv = noiseTag.CollectInter;
+ var noiseTag = tag as UploadTag;
+ var itv = noiseTag?.CollectInter;
//String collecTime = systemDateTag.CollectDate;
- int len = noiseTag.Len;
- byte[] dataValue = noiseTag.DataValue;
+ var len = noiseTag?.Len;
+ var dataValue = noiseTag?.DataValue;
+ //保存原始16进制数据
+ CmdClass.SaveHexData(devCode, dataValue);
//int validCount = dataValue.Length / 6;
//bool flag = true;//是否有数据缺失标志位
// LogHelper.Info("相关仪数据上传TAG:oid:" + noiseTag.Oid + " 采集间隔: " +
//itv + "采集时间:" + collecTime + "上传数值:" + dataValue);
- int num = len / 3; //上传的噪声数据个数,修改末3个字节
- for (int i = 0; i < num; i++)
+ var num = len / 3; //上传的噪声数据个数,修改末3个字节
+ for (var i = 0; i < num; i++)
{
- byte[] dStr = new byte[3];
+ var dStr = new byte[3];
Array.Copy(dataValue, i * 3, dStr, 0, 3);
clobData[i] = strHexToDouble(dStr);
}
- string devCodeOther;
- if (devCode == DevCode.Dev1)
- {
- devCodeOther = DevCode.Dev2;
- }
- else
- {
- devCodeOther = DevCode.Dev1;
- }
+ var devCodeOther = devCode == DevCode.Dev1 ? DevCode.Dev2 : DevCode.Dev1;
if (CorrelatorDataSaveThread.devDataValueMap.ContainsKey(devCode))
{
- int devCodeLength = CorrelatorDataSaveThread.devDataValueMap[devCode].Count;
- int devCodeOtherLength = CorrelatorDataSaveThread.devDataValueMap[devCodeOther].Count;
+ var devCodeLength = CorrelatorDataSaveThread.devDataValueMap[devCode].Count;
+ var devCodeOtherLength = CorrelatorDataSaveThread.devDataValueMap[devCodeOther].Count;
if (devCodeLength == devCodeOtherLength && devCode == DevCode.Dev1)
{
@@ -82,14 +77,13 @@
else if (devCode == DevCode.Dev1 || (devCode == DevCode.Dev2 &&
CorrelatorDataSaveThread.devDataValueMap.ContainsKey(devCodeOther)))
{
- List clobDataDoubleArray = new List();
- clobDataDoubleArray.Add(clobData);
+ var clobDataDoubleArray = new List { clobData };
CorrelatorDataSaveThread.devDataValueMap.Add(devCode, clobDataDoubleArray);
//LogHelper.Info("设备【" + devCode + "】添加到Map");
}
else
{
- //LogHelper.Info("将设备【" + devCode + "】数据丢弃");
+ LogHelper.Info("将设备【" + devCode + "】数据丢弃");
}
////////////////////////////////////////////////////////////////////////////////////////
@@ -101,9 +95,9 @@
if (src.Length != 3)
return 0;
- Int16 result1 = src[0];
- Int16 result2 = src[1];
- Int16 result3 = src[2];
+ short result1 = src[0];
+ short result2 = src[1];
+ short result3 = src[2];
if ((result1 & 0x80) == 0x80)
{
@@ -112,7 +106,7 @@
result3 = Convert.ToInt16(result3 - 255);
}
- double data = (((result1 * 65536 + result2 * 256 + result3) * 5) / 83.88607) / 100000;
+ var data = (result1 * 65536 + result2 * 256 + result3) * 5 / 83.88607 / 100000;
//String strData = ((decimal)Math.Round(data, 8)).ToString();
diff --git a/PipeGallery/View/AuditionView.xaml.cs b/PipeGallery/View/AuditionView.xaml.cs
index 875e1f4..6021caf 100644
--- a/PipeGallery/View/AuditionView.xaml.cs
+++ b/PipeGallery/View/AuditionView.xaml.cs
@@ -56,12 +56,12 @@
if (this.btnRed.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev1);
}
if (this.btnBlue.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev2);
}
}
@@ -93,7 +93,7 @@
private void btnRed_Click(object sender, RoutedEventArgs e)
{
- if (!CalculteSatus.msp.sp.IsOpen)
+ if (!CalculteSatus.msp.Sp.IsOpen)
{
this.btnRed.IsChecked = false;
new PopupWindow("未插入串口!").ShowDialog();
@@ -102,7 +102,7 @@
if (this.btnRed.IsChecked == false || this.btnRed.IsChecked == null)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev1);
String josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "number.json",
Encoding.UTF8);
@@ -118,7 +118,7 @@
{
if (this.btnBlue.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev2);
this.btnBlue.IsChecked = false;
}
@@ -131,7 +131,7 @@
private void btnBlue_Click(object sender, RoutedEventArgs e)
{
- if (!CalculteSatus.msp.sp.IsOpen)
+ if (!CalculteSatus.msp.Sp.IsOpen)
{
this.btnBlue.IsChecked = false;
new PopupWindow("未插入串口!").ShowDialog();
@@ -140,7 +140,7 @@
if (this.btnBlue.IsChecked == false || this.btnBlue.IsChecked == null)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev2);
String josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "number.json",
Encoding.UTF8);
@@ -156,7 +156,7 @@
{
if (this.btnRed.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev1);
this.btnRed.IsChecked = false;
}
@@ -175,7 +175,7 @@
Correlator.CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
Thread.Sleep(3000);
- SenderClass.sendSoundCollectCmd(CalculteSatus.msp.sp, devcode as string);
+ SenderClass.sendSoundCollectCmd(CalculteSatus.msp.Sp, devcode as string);
Thread.Sleep(2000);
CalculteSatus.isListening = true;
new Thread(new ThreadStart(timer)) { IsBackground = true }.Start();
diff --git a/PipeGallery/View/FilterEditView.xaml.cs b/PipeGallery/View/FilterEditView.xaml.cs
index cc418d7..19f259d 100644
--- a/PipeGallery/View/FilterEditView.xaml.cs
+++ b/PipeGallery/View/FilterEditView.xaml.cs
@@ -217,7 +217,7 @@
Correlator.CalculteSatus.cutFreHigh = high;
}
- if (!Correlator.CalculteSatus.msp.sp.IsOpen)
+ if (!Correlator.CalculteSatus.msp.Sp.IsOpen)
{
new PopupWindow("未插入串口!", "警告").ShowDialog();
return;
@@ -245,7 +245,7 @@
else
{
Correlator.CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
LogHelper.Info("定位计算前数据清除!!!");
CorrelatorDataSaveThread.devDataValueMap.Clear();
diff --git a/PipeGallery/Correlator/CalculteThread.cs b/PipeGallery/Correlator/CalculteThread.cs
index ff1ae03..6a02ff4 100644
--- a/PipeGallery/Correlator/CalculteThread.cs
+++ b/PipeGallery/Correlator/CalculteThread.cs
@@ -20,21 +20,21 @@
{
class CalculteThread
{
- Timer timer = new Timer();
+ private readonly Timer _timer = new Timer();
//private DispatcherTimer passTimer = new DispatcherTimer();
- private int passTime = 0; //经过的时间
+ private int _passTime = 0; //经过的时间
public void exe()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//计时器过程
- timer.Enabled = true;
- timer.Interval = 900;
- timer.Start();
- timer.Elapsed += new ElapsedEventHandler(showTimer);
+ _timer.Enabled = true;
+ _timer.Interval = 900;
+ _timer.Start();
+ _timer.Elapsed += new ElapsedEventHandler(ShowTimer);
////启动一个定时器,改变绑定时间数值
//App.Current.Dispatcher.Invoke((Action)(() =>
@@ -72,7 +72,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(CollectData);
saveThread.Start();
//Mtable计算过程
@@ -81,7 +81,7 @@
calThread.IsBackground = true;
calThread.Start();
*/
- Task calThread = new Task(() => caculate());
+ var calThread = new Task(Calculate);
calThread.Start();
//HomePageViewModel.Instance.PipeDiameter = CalculteSatus.diameterData + "mm";
@@ -121,7 +121,7 @@
public void exe1()
{
CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
//数据采集过程
/* 线程优化1
@@ -129,7 +129,7 @@
saveThread.IsBackground = true;
saveThread.Start();
*/
- Task saveThread = new Task(() => collectData());
+ var saveThread = new Task(() => CollectData());
saveThread.Start();
@@ -139,24 +139,26 @@
freThread.IsBackground = true;
freThread.Start();
*/
- Task freThread = new Task(() => getFreWave());
+ var freThread = new Task(() => GetFreWave());
freThread.Start();
}
- private void showTimer(object source, ElapsedEventArgs e)
+ private void ShowTimer(object source, ElapsedEventArgs e)
{
- HomePageViewModel.Instance.Pass = passTime.ToString() + "s";
- passTime++;
+ HomePageViewModel.Instance.Pass = _passTime.ToString() + "s";
+ _passTime++;
}
///
/// 下发唤醒指令
///
- private void collectData()
+ private void CollectData()
{
- while (CalculteSatus.msp.collectData)
+ while (CalculteSatus.msp.CollectData)
{
- SenderClass.sendCorrelatorWakeUpCmd(CalculteSatus.msp.sp);
+ CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" => 数据清除");
+ SenderClass.SendCorrelatorWakeUpCmd(CalculteSatus.msp.Sp);
Thread.Sleep(10000);
}
}
@@ -164,9 +166,9 @@
///
/// 调用滤波器接口
///
- private void getFreWave()
+ private void GetFreWave()
{
- int num = 0;
+ var num = 0;
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
@@ -181,14 +183,14 @@
}
}
- CalculteSatus.msp.collectData = false; //停止下发采集指令
+ CalculteSatus.msp.CollectData = false; //停止下发采集指令
CalculteSatus.msp.timer.Start(); //开始状态采集指令的发送
ClassCalculate calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.getFreWave();
+ calculate.GetFreWave();
CalculteSatus.isRedCollectComplete = true;
CalculteSatus.isBlueCollectComplete = true;
@@ -197,13 +199,13 @@
///
/// 计算过程
///
- private void caculate()
+ private void Calculate()
{
while (!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev1) ||
!CorrelatorDataSaveThread.devDataValueMap.ContainsKey(DevCode.Dev2))
{
Thread.Sleep(100);
- if (passTime >= 60)
+ if (_passTime >= 60)
{
CalculteSatus.isCalculateStop = true;
MessageBox.Show("接收不到数据,请重启软件");
@@ -217,20 +219,20 @@
}
}
- ClassCalculate calculate = ClassCalculate.Instance;
+ var calculate = ClassCalculate.Instance;
calculate.Device1 = DevCode.Dev1;
calculate.Device2 = DevCode.Dev2;
- calculate.execute();
+ CalculteSatus.msp.CollectData = false;
+ calculate.Execute();
Label:
//passTimer.Stop();
- timer.Stop();
- passTime = 0;
+ _timer.Stop();
+ _passTime = 0;
Thread.Sleep(1000);
HomePageViewModel.Instance.StartState = false;
- CalculteSatus.msp.collectData = false;
HomePageViewModel.Instance.BtnFilterIsEnabled = false;
HomePageViewModel.Instance.BtnSaveIsEnabled = false;
@@ -244,70 +246,71 @@
CorrelatorDataSaveThread.devDataValueMap.Clear();
////////////////////截图/////////////////////////////
- int width = Screen.PrimaryScreen.Bounds.Width;
- int height = Screen.PrimaryScreen.Bounds.Height;
+ var width = Screen.PrimaryScreen.Bounds.Width;
+ var height = Screen.PrimaryScreen.Bounds.Height;
- Bitmap memoryImage = new Bitmap(width, height);
- Graphics memoryGraphics = Graphics.FromImage(memoryImage);
+ var memoryImage = new Bitmap(width, height);
+ var memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
- MemoryStream data = new MemoryStream();
+ var data = new MemoryStream();
memoryImage.Save(data, ImageFormat.Png);
- String strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\快照."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".png";
+ var strPath = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\快照."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".png";
- FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate);
- BinaryWriter w = new BinaryWriter(fs);
+ var fs = new FileStream(strPath, FileMode.OpenOrCreate);
+ var w = new BinaryWriter(fs);
w.Write(data.ToArray());
fs.Close();
data.Close();
//测试序号+1
- String josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8);
+ var jo = JObject.Parse(jsonString);
- int locate = Convert.ToInt32(jo["locate"].ToString());
- int count = locate; //一轮计算次数
+ var locate = Convert.ToInt32(jo["locate"].ToString());
+ var count = locate; //一轮计算次数
locate = locate >= 6 ? 1 : ++locate;
jo["locate"] = locate;
//jo["locate"] = ++locate;
CorrelatorDataSaveThread.Locate = locate;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
if (CalculteSatus.isCalculateStop) //定位计算中途停止
{
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
if (count <= 6)
{
- ColumnGroupInfo snapshot =
- DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
- ColumnGroupInfo snapshot_copy = new ColumnGroupInfo();
- snapshot_copy.ColumnListInfo = snapshot.ColumnListInfo;
- snapshot_copy.ID = Guid.NewGuid().ToString();
- DataFactory.SnapshotList.Add(snapshot_copy.ID);
- DataFactory.ChartBaseDictionary[snapshot_copy.ID] = snapshot_copy;
+ var snapshot = DataFactory.ChartBaseDictionary[DataFactory.HomePageChartId] as ColumnGroupInfo;
+ var snapshotCopy = new ColumnGroupInfo
+ {
+ ColumnListInfo = snapshot.ColumnListInfo,
+ ID = Guid.NewGuid().ToString()
+ };
+ DataFactory.SnapshotList.Add(snapshotCopy.ID);
+ DataFactory.ChartBaseDictionary[snapshotCopy.ID] = snapshotCopy;
if (count == 3) //完成3次测试,进行第一轮判断
{
- App.Current.Dispatcher.Invoke((Action)(() =>
+ App.Current.Dispatcher.Invoke(() =>
{
CalculteSatus.disAs.Sort();
if (CalculteSatus.disAs[2] - CalculteSatus.disAs[1] < 2 ||
CalculteSatus.disAs[1] - CalculteSatus.disAs[0] < 2)
{
- bool? b = new PopupWindow("需要再测试3次").ShowDialog();
+ var b = new PopupWindow("需要再测试3次").ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1; //取消
@@ -315,7 +318,7 @@
}
else
{
- bool? b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
+ var b = new PopupWindow("这段管线不存在泄漏").ShowDialog();
CalculteSatus.createView = 2; //创建对比视图
@@ -331,9 +334,9 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
}
- }));
+ });
return;
}
@@ -342,7 +345,7 @@
CalculteSatus.disAs.Sort();
CalculteSatus.disBs.Sort();
- String txt = "";
+ var txt = "";
double disA = 0;
double disB = 0;
@@ -375,7 +378,7 @@
}
else if (CalculteSatus.disAs[5] - CalculteSatus.disAs[1] < 2)
{
- for (int i = 1; i < 6; i++)
+ for (var i = 1; i < 6; i++)
{
disA += CalculteSatus.disAs[i];
disB += CalculteSatus.disBs[5 - i];
@@ -413,14 +416,14 @@
//测试序号复位
jo["locate"] = 1;
- writeJsonFile(jo);
+ WriteJsonFile(jo);
return;
}
App.Current.Dispatcher.Invoke((Action)(() =>
{
- String txt = "";
+ var txt = "";
if (count <= 3)
{
txt += "需进行第" + (++count) + "次测试(至少测3次)";
@@ -430,7 +433,7 @@
txt += "需进行第" + (++count) + "次测试(共6次)";
}
- bool? b = new PopupWindow(txt).ShowDialog();
+ var b = new PopupWindow(txt).ShowDialog();
if (b != true)
{
CalculteSatus.createView = 1;
@@ -439,9 +442,9 @@
}
}
- private void writeJsonFile(JObject jo)
+ private void WriteJsonFile(JObject jo)
{
- StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
+ var sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "number.json");
sw.Write(JsonConvert.SerializeObject(jo));
sw.Flush();
sw.Close();
diff --git a/PipeGallery/Correlator/ClassCalculate.cs b/PipeGallery/Correlator/ClassCalculate.cs
index 9a56005..cfbb8be 100644
--- a/PipeGallery/Correlator/ClassCalculate.cs
+++ b/PipeGallery/Correlator/ClassCalculate.cs
@@ -1,35 +1,23 @@
using System;
-using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Newtonsoft.Json.Linq;
-using PipeGallery.Manage;
using PipeGallery.ViewModel;
namespace PipeGallery.Correlator
{
public class ClassCalculate
{
- private static double[] vec1 = null;
- private static double[] vec2 = null;
- private string device1;
- private string device2;
- CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
+ private static double[] _vec1 = null;
+ private static double[] _vec2 = null;
+ private readonly CorrelatorSingle.Correlator _correlator = new CorrelatorSingle.Correlator();
- public string Device1
- {
- get { return device1; }
- set { device1 = value; }
- }
+ public string Device1 { get; set; }
- public string Device2
- {
- get { return device2; }
- set { device2 = value; }
- }
-
+ public string Device2 { get; set; }
private static ClassCalculate _instance;
@@ -50,57 +38,56 @@
}
}
- public void getFreWave()
+ public void GetFreWave()
{
//if (vec1 == null || vec2 == null)
// return;
- int count = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- Object[] filterOutList = correlator.getFreWave(3,
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device1][count - 1],
- (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[device2][count - 1], 7500);
+ var filterOutList = _correlator.getFreWave(3,
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device1][count - 1],
+ (MWNumericArray)CorrelatorDataSaveThread.devDataValueMap[Device2][count - 1], 7500);
- CalculteSatus.fx = getFreArray((MWNumericArray)filterOutList[0]); //横坐标
- CalculteSatus.freA = getFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
- CalculteSatus.freB = getFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
+ CalculteSatus.fx = GetFreArray((MWNumericArray)filterOutList[0]); //横坐标
+ CalculteSatus.freA = GetFreArray((MWNumericArray)filterOutList[1]); //红色传感器曲线图纵坐标
+ CalculteSatus.freB = GetFreArray((MWNumericArray)filterOutList[2]); //蓝色传感器曲线图纵坐标
CorrelatorDataSaveThread.devDataValueMap.Clear(); //将接收到的数据清除
}
- public void execute()
+ public void Execute()
{
try
{
- //int i = CorrelatorDataSaveThread.devDataValueMap[device1].Count;
- int count_1 = CorrelatorDataSaveThread.devDataValueMap[device2].Count;
+ var count1 = CorrelatorDataSaveThread.devDataValueMap[Device2].Count;
- vec1 = CorrelatorDataSaveThread.devDataValueMap[device1][count_1 - 1]; //采集数据
- vec2 = CorrelatorDataSaveThread.devDataValueMap[device2][count_1 - 1];
+ _vec1 = CorrelatorDataSaveThread.devDataValueMap[Device1][count1 - 1]; //采集数据
+ _vec2 = CorrelatorDataSaveThread.devDataValueMap[Device2][count1 - 1];
//保存定位计算的数据
- String filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
- + CorrelatorDataSaveThread.Pipe + "\\测试数据."
- + CorrelatorDataSaveThread.Locate + "."
- + DateTime.Now.ToString("HHmmss") + ".txt";
- FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var filename = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\测试数据."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss") + ".txt";
+ var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
- String locateData = DateTime.Now.ToString();
- foreach (double d in vec1)
+ var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ foreach (var d in _vec1)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- locateData += "?";
+ locateData += "===============" + "\r\n";
- foreach (double d in vec2)
+ foreach (var d in _vec2)
{
- locateData += ((decimal)d).ToString("G") + "#";
+ locateData += AppendEndZero(d) + "\r\n";
}
- byte[] data = Encoding.Default.GetBytes(locateData);
+ var data = Encoding.Default.GetBytes(locateData);
fileStream.Position = fileStream.Length;
fileStream.Write(data, 0, data.Length);
fileStream.Flush();
@@ -121,18 +108,18 @@
//HomePageViewModel.Instance.BtnFilterIsEnabled = true;
- MWNumericArray[] dis = new MWNumericArray[3] { 0, 0, 0 };
- MWNumericArray[] velo = new MWNumericArray[3] { 1, 0, 0 };
+ var dis = new MWNumericArray[3] { 0, 0, 0 };
+ var velo = new MWNumericArray[3] { 1, 0, 0 };
- for (int i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
+ for (var i = 0; i < CalculteSatus.MaterialDatas.Count && i < 3; i++)
{
dis[i] = CalculteSatus.MaterialDatas[i].Length;
velo[i] = CalculteSatus.MaterialDatas[i].Soundspeed;
}
//TODO 2022-11-29 暂时只测试一次,方便定位
- Caculator((MWNumericArray)vec1, (MWNumericArray)vec2, fs, dis, velo);
+ Calculator((MWNumericArray)_vec1, (MWNumericArray)_vec2, fs, dis, velo);
// while (CalculteSatus.currNum <= CalculteSatus.totalNum)
// {
// if (CorrelatorDataSaveThread.isNoFilter)
@@ -198,9 +185,16 @@
}
}
+ //数据补零,保持长度一致
+ private static string AppendEndZero(double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
//private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray dis,
// MWNumericArray material, MWNumericArray diamLow, MWNumericArray diamHigh, MWNumericArray velo)
- private void Caculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
+ private void Calculator(MWNumericArray vecAMW, MWNumericArray vecBMW, MWNumericArray fs, MWNumericArray[] dis,
MWNumericArray[] velo)
{
//CorrelatorSingle.Correlator correlator = new CorrelatorSingle.Correlator();
@@ -223,20 +217,19 @@
MWNumericArray cutFreHigh = CalculteSatus.cutFreHigh;
//接口调用:
- Object[] outList = correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
+ var outList = _correlator.locating(11, vecAMW, vecBMW, fs, dis[0], velo[0], dis[1], velo[1], dis[2],
velo[2], material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow,
cutFreHigh);
- LogHelper.Info("算法结果数据:" + outList);
//Object[] outList = CorrelatorDataSaveThread.isNoFilter ? correlator.locating(11, vecAMW, vecBMW, fs, dis, velo, material, diamLow, diamHigh, currNum, maxSnrIn, maxFreLowIn, maxFreHighIn, cutFreLow, cutFreHigh) :
//correlator.typicalFreInter(7, vecAMW, vecBMW, fs, CorrelatorDataSaveThread.filterInfo.LowPass, CorrelatorDataSaveThread.filterInfo.HighPass, dis, velo);
- double snr = Convert.ToDouble(outList[0].ToString()); //信噪比
- double disA = Convert.ToDouble(outList[1].ToString()); //距离A
- double disB = Convert.ToDouble(outList[2].ToString()); //距离B
- double correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
+ var snr = Convert.ToDouble(outList[0].ToString()); //信噪比
+ var disA = Convert.ToDouble(outList[1].ToString()); //距离A
+ var disB = Convert.ToDouble(outList[2].ToString()); //距离B
+ var correCoeff = Convert.ToDouble(outList[3].ToString()); //最大相关系数
- MWNumericArray corrCoeffVecAbsMW = (MWNumericArray)outList[4];
- MWNumericArray disVecMW = (MWNumericArray)outList[5];
+ var corrCoeffVecAbsMw = (MWNumericArray)outList[4];
+ var disVecMw = (MWNumericArray)outList[5];
CalculteSatus.timeDiff = CorrelatorDataSaveThread.isNoFilter
? Convert.ToDouble(outList[10].ToString())
@@ -244,8 +237,8 @@
//double[] corrCoeffVecAbs = getArray(corrCoeffVecAbsMW);//柱状图纵坐标集合
//double[] disVec = getArray(disVecMW);//柱状图横坐标集合
- CalculteSatus.corrCoeffVecAbs = getArray(corrCoeffVecAbsMW); //柱状图纵坐标集合
- CalculteSatus.disVec = getArray(disVecMW); //柱状图横坐标集合
+ CalculteSatus.corrCoeffVecAbs = GetArray(corrCoeffVecAbsMw); //柱状图纵坐标集合
+ CalculteSatus.disVec = GetArray(disVecMw); //柱状图横坐标集合
//CalculteSatus.fx = getArray((MWNumericArray)filterOutList[0]);//横坐标
//CalculteSatus.freA = getArray((MWNumericArray)filterOutList[1]);//红色传感器曲线图纵坐标
@@ -253,17 +246,16 @@
if (CorrelatorDataSaveThread.isNoFilter)
{
- int maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
- int maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
- bool flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
- int totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
+ var maxFreLowOut = Convert.ToInt32(outList[6].ToString()); //低频
+ var maxFreHighOut = Convert.ToInt32(outList[7].ToString()); //高频
+ var flag = Convert.ToBoolean(Convert.ToInt32(outList[8].ToString())); //是否泄漏
+ var totalNum = Convert.ToInt32(outList[9].ToString()); //总的调用次数
CalculteSatus.totalNum = totalNum;
CalculteSatus.maxFreLowIn = maxFreLowOut;
CalculteSatus.maxFreHighIn = maxFreHighOut;
- HomePageViewModel.Instance.FilterValue =
- maxFreLowOut.ToString() + "-" + maxFreHighOut.ToString() + "Hz";
+ HomePageViewModel.Instance.FilterValue = maxFreLowOut + "-" + maxFreHighOut + "Hz";
}
CalculteSatus.currNum++;
@@ -276,15 +268,16 @@
//CalculteSatus.disAs.Add(disA);
//CalculteSatus.disBs.Add(disB);
- //HomePageViewModel.Instance.SpeedDistance = timeDiff;
- //HomePageViewModel.Instance.SpeedValue = timeDiff.ToString() + "ms";
+ HomePageViewModel.Instance.SpeedDistance = CalculteSatus.timeDiff;
+ HomePageViewModel.Instance.SpeedValue =
+ CalculteSatus.timeDiff.ToString(CultureInfo.InvariantCulture) + "ms";
}
- private double[] getArray(MWNumericArray inMW)
+ private double[] GetArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 1].ToString());
}
@@ -293,11 +286,11 @@
}
- private double[] getFreArray(MWNumericArray inMW)
+ private double[] GetFreArray(MWNumericArray inMW)
{
- int num = inMW.NumberOfElements;
- double[] outArray = new double[num];
- for (int i = 0; i < num - 1; i++)
+ var num = inMW.NumberOfElements;
+ var outArray = new double[num];
+ for (var i = 0; i < num - 1; i++)
{
outArray[i] = Convert.ToDouble(inMW[i + 2].ToString());
}
@@ -312,13 +305,13 @@
///
///
///
- private static int getVelo(string material, int diamLow, int diamHigh)
+ private static int GetVelo(string material, int diamLow, int diamHigh)
{
if (CorrelatorDataSaveThread.materialVeloMaps.ContainsKey(material))
{
- List materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
+ var materialVelo = CorrelatorDataSaveThread.materialVeloMaps[material];
- foreach (MaterialVelo mv in materialVelo)
+ foreach (var mv in materialVelo)
{
if (mv.LowDiameter == diamLow && (mv.HighDiameter == diamHigh || mv.HighDiameter == -1))
{
@@ -328,17 +321,17 @@
}
else
{
- string josnString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
+ var jsonString = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "config.json",
Encoding.UTF8);
- JObject jo = JObject.Parse(josnString);
+ var jo = JObject.Parse(jsonString);
foreach (var v in jo["CustomMaterial"])
{
if (material == v["name"].ToString())
{
- string[] diameterArr = v["range"].ToString().Split('-');
- int lowDiameter = int.Parse(diameterArr[0]);
- int highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
+ var diameterArr = v["range"].ToString().Split('-');
+ var lowDiameter = int.Parse(diameterArr[0]);
+ var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
if (lowDiameter == diamLow && highDiameter == diamHigh)
{
diff --git a/PipeGallery/Correlator/CmdClass.cs b/PipeGallery/Correlator/CmdClass.cs
index 381657e..ee857c8 100644
--- a/PipeGallery/Correlator/CmdClass.cs
+++ b/PipeGallery/Correlator/CmdClass.cs
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
using System.IO.Ports;
+using System.Text;
using PipeGallery.Manage;
using PipeGallery.SensorHubTag;
@@ -8,7 +11,7 @@
{
public class CmdClass
{
- private static string devCode = "";
+ private static string _devCode = "";
///
/// 数据解析
@@ -22,24 +25,24 @@
// else
// analysisDataValue(receiveData, sp);
//}
- public void analysisDataValue(byte[] receiveData, SerialPort sp)
+ public void AnalysisDataValue(byte[] receiveData, SerialPort sp)
{
- byte[] deviceId = new byte[6];
+ var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- String strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
- byte[] pduType = new byte[2];
+ var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
- byte[] settings = new byte[receiveData.Length - 18];
+ var settings = new byte[receiveData.Length - 18];
Array.Copy(receiveData, 16, settings, 0, receiveData.Length - 18);
//String devType = SensorHubClass.getDeviceTypeByPdu(pduType);
- String operType = SensorHubClass.getOpeTypeByPdu(pduType);
+ var operType = SensorHubClass.getOpeTypeByPdu(pduType);
- List tags = this.getTags(settings);
- CellTag cellTag = this.getCellTag(tags);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
+ var tags = this.GetTags(settings);
+ var cellTag = this.GetCellTag(tags);
+ var systemDateTag = this.GetSystemDateTag(tags);
try
{
@@ -66,7 +69,7 @@
if (operType == "WakeupResponse")
{
- devCode = strDeviceId;
+ _devCode = strDeviceId;
sp.Write("+++");
LogHelper.Info("发送“+++”指令");
}
@@ -77,7 +80,7 @@
}
}
- public void analysisSignalValue(String receiveDate, SerialPort sp)
+ public void AnalysisSignalValue(string receiveDate, SerialPort sp)
{
if (receiveDate.Contains("NO CARRIER"))
{
@@ -87,37 +90,37 @@
else if (receiveDate.Contains("ATS124?"))
{
//ATS124?\r\nN/A\r\nOK\r\n
- string strReceiveDate = receiveDate.Replace("\r\n", ",");
- string[] signalArray = strReceiveDate.Split(',');
- DevStatus devStatus = CorrelatorDataSaveThread.devStatusMaps[devCode];
+ var strReceiveDate = receiveDate.Replace("\r\n", ",");
+ var signalArray = strReceiveDate.Split(',');
+ var devStatus = CorrelatorDataSaveThread.devStatusMaps[_devCode];
devStatus.Signal = signalArray[1];
}
}
- private List getTags(byte[] strTags)
+ private List GetTags(byte[] strTags)
{
- List tags = new List();
+ var tags = new List();
try
{
- int i = 0;
+ var i = 0;
while (i < strTags.Length)
{
//get each tag from strTag and construct tag list;
- byte[] oid = new byte[4];
- byte[] len = new byte[2];
+ var oid = new byte[4];
+ var len = new byte[2];
Array.Copy(strTags, i, oid, 0, 4);
Array.Copy(strTags, i + 4, len, 0, 2);
Array.Reverse(len);
- int iLen = System.BitConverter.ToInt16(len, 0);
- string strOid = StringUtil.ConvertBytes2String(oid);
+ int iLen = BitConverter.ToInt16(len, 0);
+ var strOid = StringUtil.ConvertBytes2String(oid);
- byte[] value = new byte[iLen];
+ var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
i = i + 6 + iLen;
//TODO LIST:Construct a tag according to oid
- Tag tag = TagFactory.create(strOid, iLen, value);
+ var tag = TagFactory.create(strOid, iLen, value);
tags.Add(tag);
}
}
@@ -129,30 +132,50 @@
return tags;
}
- private CellTag getCellTag(List tags)
+ private CellTag GetCellTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is CellTag)
+ if (tag is CellTag cellTag)
{
- return (CellTag)tag;
+ return cellTag;
}
}
return null;
}
- private SystemDateTag getSystemDateTag(List tags)
+ private SystemDateTag GetSystemDateTag(List tags)
{
- foreach (Tag tag in tags)
+ foreach (var tag in tags)
{
- if (tag != null && tag is SystemDateTag)
+ if (tag is SystemDateTag dateTag)
{
- return (SystemDateTag)tag;
+ return dateTag;
}
}
return null;
}
+
+ public static void SaveHexData(string devCode, byte[] receiveData)
+ {
+ var hexFileName = "data\\locate\\测试报告" + CorrelatorDataSaveThread.Date + "."
+ + CorrelatorDataSaveThread.Pipe + "\\" + devCode + "."
+ + CorrelatorDataSaveThread.Locate + "."
+ + DateTime.Now.ToString("HHmmss")
+ + ".txt";
+
+ var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ var hexVec = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
+ hexVec += devCode + "\r\n";
+ hexVec += BitConverter.ToString(receiveData).Replace("-", ""); //采集数据
+
+ var hexData = Encoding.Default.GetBytes(hexVec);
+ hexFileStream.Position = hexFileStream.Length;
+ hexFileStream.Write(hexData, 0, hexData.Length);
+ hexFileStream.Flush();
+ hexFileStream.Close();
+ }
}
}
\ No newline at end of file
diff --git a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
index 60a403b..9be9718 100644
--- a/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
+++ b/PipeGallery/Correlator/CorrelatorDataSaveThread.cs
@@ -7,8 +7,8 @@
{
public static Dictionary> devDataValueMap = new Dictionary>();
- public static Dictionary>
- devRangingDataValueMap = new Dictionary>(); //测距数据
+ public static Dictionary>
+ devRangingDataValueMap = new Dictionary>(); //测距数据
public static bool isNoFilter = true;
diff --git a/PipeGallery/Correlator/ManipulateSerialPort.cs b/PipeGallery/Correlator/ManipulateSerialPort.cs
index 0715dbc..606dd84 100644
--- a/PipeGallery/Correlator/ManipulateSerialPort.cs
+++ b/PipeGallery/Correlator/ManipulateSerialPort.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.IO.Ports;
using System.Text;
using System.Threading;
@@ -6,20 +7,22 @@
using System.Windows;
using PipeGallery.Manage;
using PipeGallery.ViewModel;
+using Application = System.Windows.Forms.Application;
+using Timer = System.Timers.Timer;
namespace PipeGallery.Correlator
{
class ManipulateSerialPort
{
- public SerialPort sp = new SerialPort(); //实例化串口通讯类
- public System.Timers.Timer timer = new System.Timers.Timer();
- public bool collectData = true;
+ public readonly SerialPort Sp = new SerialPort(); //实例化串口通讯类
+ public readonly Timer timer = new Timer();
+ public bool CollectData = true;
//DevCode dev = new DevCode();
public ManipulateSerialPort()
{
- sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
+ Sp.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
@@ -32,12 +35,14 @@
{
try
{
- string strResult = "";
- byte[] bRequestInfo = getRequestInfo(ref strResult);
+ var strResult = "";
+ var bRequestInfo = GetRequestInfo(ref strResult);
if (bRequestInfo != null)
{
LogHelper.Info("接收到的数据:" + BitConverter.ToString(bRequestInfo).Replace("-", ""));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 接收到的数据: " +
+ BitConverter.ToString(bRequestInfo).Replace("-", ""));
}
else if (strResult != "")
{
@@ -50,15 +55,15 @@
if (bRequestInfo != null)
{
- if (sp == null)
+ if (Sp == null)
return;
else
- new CmdClass().analysisDataValue(bRequestInfo, sp);
+ new CmdClass().AnalysisDataValue(bRequestInfo, Sp);
}
else
{
if (strResult != "")
- new CmdClass().analysisSignalValue(strResult, sp);
+ new CmdClass().AnalysisSignalValue(strResult, Sp);
}
}
catch (Exception ex)
@@ -71,34 +76,34 @@
/// 数据接收
///
///
- private byte[] getRequestInfo(ref string strResult)
+ private byte[] GetRequestInfo(ref string strResult)
{
try
{
- while (sp.BytesToRead < 4) Thread.Sleep(5);
- byte[] headerBuff = new byte[2];
- sp.Read(headerBuff, 0, 2); //读取数据
+ while (Sp.BytesToRead < 4) Thread.Sleep(5);
+ var headerBuff = new byte[2];
+ Sp.Read(headerBuff, 0, 2); //读取数据
if (headerBuff[0] == 0xA3 && headerBuff[1] == 0x20) //符合规范
{
byte[] lengthBuffer = new byte[2];
- sp.Read(lengthBuffer, 0, 2);
+ Sp.Read(lengthBuffer, 0, 2);
int length = StringUtil.ConvertBytes2Int(lengthBuffer);
if (length < 12)
{
- sp.DiscardInBuffer(); //长度数据不符合,丢弃
+ Sp.DiscardInBuffer(); //长度数据不符合,丢弃
LogHelper.Info("上传数组长度不够,丢弃数据");
return null;
}
- while (sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
+ while (Sp.BytesToRead < length + 2) Thread.Sleep(20); //数据不够,要等待
byte[] result = new byte[length + 6];
result[0] = headerBuff[0];
result[1] = headerBuff[1];
result[2] = lengthBuffer[0];
result[3] = lengthBuffer[1];
- sp.Read(result, 4, result.Length - 4);
+ Sp.Read(result, 4, result.Length - 4);
//if (result[result.Length - 1] != 0x00 || result[result.Length - 2] != 0x00 ||
// result[result.Length - 3] != 0x00 || result[result.Length - 4] != 0x00)
@@ -124,14 +129,14 @@
else
{
Thread.Sleep(10);
- String str = Encoding.UTF8.GetString(headerBuff) + sp.ReadExisting();
+ String str = Encoding.UTF8.GetString(headerBuff) + Sp.ReadExisting();
if (str != "" && str.Contains("\r\n"))
{
strResult = str;
}
else
{
- sp.DiscardInBuffer();
+ Sp.DiscardInBuffer();
}
}
@@ -140,9 +145,9 @@
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错提示");
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
return null;
}
}
@@ -150,25 +155,25 @@
///
/// 显示信号电量
///
- public void showSignal()
+ public void ShowSignal()
{
- double configItr = 20000;
- byte devid = 0x01;
+ const double configItr = 20000;
+ byte devId = 0x01;
try
{
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
if (CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMapx = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMapx.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMapx.Signal));
HomePageViewModel.Instance.TransmitterAFault = devMapx.Status == "1" ? true : false;
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
}
catch (Exception e)
@@ -181,14 +186,14 @@
{
try
{
- devid = (byte)((devid == 0x01) ? 0x02 : 0x01);
- SenderClass.sendCellAndStatusCollectCmd(sp, devid);
+ devId = (byte)((devId == 0x01) ? 0x02 : 0x01);
+ SenderClass.SendCellAndStatusCollectCmd(Sp, devId);
Thread.Sleep(7000);
- if (devid.ToString() == DevCode.Dev1.Substring(11, 1) &&
+ if (devId.ToString() == DevCode.Dev1.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev1))
{
- DevStatus devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
+ var devMap1 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1];
HomePageViewModel.Instance.TransmitterABattery = Convert.ToDouble(devMap1.Cell);
HomePageViewModel.Instance.TransmitterASignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap1.Signal));
@@ -207,10 +212,10 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev1].Signal = "-121"; //初始化信号为0
}
- else if (devid.ToString() == DevCode.Dev2.Substring(11, 1) &&
+ else if (devId.ToString() == DevCode.Dev2.Substring(11, 1) &&
CorrelatorDataSaveThread.devStatusMaps.ContainsKey(DevCode.Dev2))
{
- DevStatus devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
+ var devMap2 = CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2];
HomePageViewModel.Instance.TransmitterBBattery = Convert.ToDouble(devMap2.Cell);
HomePageViewModel.Instance.TransmitterBSignalIntensity =
SetSignalIntensity(Convert.ToInt32(devMap2.Signal));
@@ -230,7 +235,7 @@
CorrelatorDataSaveThread.devStatusMaps[DevCode.Dev2].Signal = "-121"; //初始化信号为0
}
- sp.Write("ATA" + Environment.NewLine);
+ Sp.Write("ATA" + Environment.NewLine);
LogHelper.Info("发送“ATA+回车”指令");
//Thread.Sleep(10000);
@@ -252,9 +257,9 @@
catch (Exception e)
{
timer.Stop();
- System.Windows.Forms.Application.Restart(); //重启当前程序
+ Application.Restart(); //重启当前程序
Thread.Sleep(2000);
- System.Diagnostics.Process.GetCurrentProcess().Kill();
+ Process.GetCurrentProcess().Kill();
}
});
}
@@ -263,7 +268,7 @@
{
//System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = interval;
- timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e) { action(e); };
+ timer.Elapsed += delegate(object sender, ElapsedEventArgs e) { action(e); };
timer.Enabled = true;
}
diff --git a/PipeGallery/Correlator/SenderClass.cs b/PipeGallery/Correlator/SenderClass.cs
index f01350b..16e0e86 100644
--- a/PipeGallery/Correlator/SenderClass.cs
+++ b/PipeGallery/Correlator/SenderClass.cs
@@ -9,9 +9,8 @@
///
/// 下发唤醒指令
///
- ///
///
- public static void sendCorrelatorWakeUpCmd(SerialPort sp)
+ public static void SendCorrelatorWakeUpCmd(SerialPort sp)
{
try
{
@@ -73,7 +72,8 @@
afcrc.CopyTo(reBt, 2);
*/
LogHelper.Info("下发相关仪唤醒信息:" + BitConverter.ToString(afcrc));
-
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发相关仪唤醒信息 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
@@ -87,7 +87,7 @@
///
///
///
- public static void sendCellAndStatusCollectCmd(SerialPort sp, byte devid)
+ public static void SendCellAndStatusCollectCmd(SerialPort sp, byte devid)
{
try
{
@@ -147,6 +147,8 @@
btcrc.CopyTo(afcrc, result.Length);
LogHelper.Info("下发状态采集指令:" + BitConverter.ToString(afcrc));
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @" 下发状态采集指令 => " +
+ BitConverter.ToString(afcrc));
sp.Write(afcrc, 0, afcrc.Length);
}
catch (Exception e)
diff --git a/PipeGallery/MainWindow.xaml b/PipeGallery/MainWindow.xaml
index 746bc2f..99d36e5 100644
--- a/PipeGallery/MainWindow.xaml
+++ b/PipeGallery/MainWindow.xaml
@@ -7,6 +7,7 @@
Left="0"
Top="0"
WindowStartupLocation="Manual"
- WindowState="Maximized">
+ WindowState="Maximized"
+ WindowStyle="None">
diff --git a/PipeGallery/PipeGallery.csproj b/PipeGallery/PipeGallery.csproj
index c277173..7a81a20 100644
--- a/PipeGallery/PipeGallery.csproj
+++ b/PipeGallery/PipeGallery.csproj
@@ -101,36 +101,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs b/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
index 1764d65..a214289 100644
--- a/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
+++ b/PipeGallery/SensorHubTag/CorrelatorTagHandler.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using PipeGallery.Correlator;
+using PipeGallery.Manage;
namespace PipeGallery.SensorHubTag
{
@@ -15,51 +16,45 @@
return false;
}
- UploadTag uploadTag = tag as UploadTag;
+ var uploadTag = tag as UploadTag;
return uploadTag.BizType == 4; //噪声
}
//0000 0071 前四个字节暂时不用
- public override void execute(Tag tag, String devCode, CellTag cellTag,
+ public override void execute(Tag tag, string devCode, CellTag cellTag,
SystemDateTag systemDateTag)
{
- double[] clobData = new double[3750]; //3750个采样点
+ var clobData = new double[3750]; //3750个采样点
//TODO LIST:解析噪声数据保存噪声数据
- UploadTag noiseTag = tag as UploadTag;
- int itv = noiseTag.CollectInter;
+ var noiseTag = tag as UploadTag;
+ var itv = noiseTag?.CollectInter;
//String collecTime = systemDateTag.CollectDate;
- int len = noiseTag.Len;
- byte[] dataValue = noiseTag.DataValue;
+ var len = noiseTag?.Len;
+ var dataValue = noiseTag?.DataValue;
+ //保存原始16进制数据
+ CmdClass.SaveHexData(devCode, dataValue);
//int validCount = dataValue.Length / 6;
//bool flag = true;//是否有数据缺失标志位
// LogHelper.Info("相关仪数据上传TAG:oid:" + noiseTag.Oid + " 采集间隔: " +
//itv + "采集时间:" + collecTime + "上传数值:" + dataValue);
- int num = len / 3; //上传的噪声数据个数,修改末3个字节
- for (int i = 0; i < num; i++)
+ var num = len / 3; //上传的噪声数据个数,修改末3个字节
+ for (var i = 0; i < num; i++)
{
- byte[] dStr = new byte[3];
+ var dStr = new byte[3];
Array.Copy(dataValue, i * 3, dStr, 0, 3);
clobData[i] = strHexToDouble(dStr);
}
- string devCodeOther;
- if (devCode == DevCode.Dev1)
- {
- devCodeOther = DevCode.Dev2;
- }
- else
- {
- devCodeOther = DevCode.Dev1;
- }
+ var devCodeOther = devCode == DevCode.Dev1 ? DevCode.Dev2 : DevCode.Dev1;
if (CorrelatorDataSaveThread.devDataValueMap.ContainsKey(devCode))
{
- int devCodeLength = CorrelatorDataSaveThread.devDataValueMap[devCode].Count;
- int devCodeOtherLength = CorrelatorDataSaveThread.devDataValueMap[devCodeOther].Count;
+ var devCodeLength = CorrelatorDataSaveThread.devDataValueMap[devCode].Count;
+ var devCodeOtherLength = CorrelatorDataSaveThread.devDataValueMap[devCodeOther].Count;
if (devCodeLength == devCodeOtherLength && devCode == DevCode.Dev1)
{
@@ -82,14 +77,13 @@
else if (devCode == DevCode.Dev1 || (devCode == DevCode.Dev2 &&
CorrelatorDataSaveThread.devDataValueMap.ContainsKey(devCodeOther)))
{
- List clobDataDoubleArray = new List();
- clobDataDoubleArray.Add(clobData);
+ var clobDataDoubleArray = new List { clobData };
CorrelatorDataSaveThread.devDataValueMap.Add(devCode, clobDataDoubleArray);
//LogHelper.Info("设备【" + devCode + "】添加到Map");
}
else
{
- //LogHelper.Info("将设备【" + devCode + "】数据丢弃");
+ LogHelper.Info("将设备【" + devCode + "】数据丢弃");
}
////////////////////////////////////////////////////////////////////////////////////////
@@ -101,9 +95,9 @@
if (src.Length != 3)
return 0;
- Int16 result1 = src[0];
- Int16 result2 = src[1];
- Int16 result3 = src[2];
+ short result1 = src[0];
+ short result2 = src[1];
+ short result3 = src[2];
if ((result1 & 0x80) == 0x80)
{
@@ -112,7 +106,7 @@
result3 = Convert.ToInt16(result3 - 255);
}
- double data = (((result1 * 65536 + result2 * 256 + result3) * 5) / 83.88607) / 100000;
+ var data = (result1 * 65536 + result2 * 256 + result3) * 5 / 83.88607 / 100000;
//String strData = ((decimal)Math.Round(data, 8)).ToString();
diff --git a/PipeGallery/View/AuditionView.xaml.cs b/PipeGallery/View/AuditionView.xaml.cs
index 875e1f4..6021caf 100644
--- a/PipeGallery/View/AuditionView.xaml.cs
+++ b/PipeGallery/View/AuditionView.xaml.cs
@@ -56,12 +56,12 @@
if (this.btnRed.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev1);
}
if (this.btnBlue.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev2);
}
}
@@ -93,7 +93,7 @@
private void btnRed_Click(object sender, RoutedEventArgs e)
{
- if (!CalculteSatus.msp.sp.IsOpen)
+ if (!CalculteSatus.msp.Sp.IsOpen)
{
this.btnRed.IsChecked = false;
new PopupWindow("未插入串口!").ShowDialog();
@@ -102,7 +102,7 @@
if (this.btnRed.IsChecked == false || this.btnRed.IsChecked == null)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev1);
String josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "number.json",
Encoding.UTF8);
@@ -118,7 +118,7 @@
{
if (this.btnBlue.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev2);
this.btnBlue.IsChecked = false;
}
@@ -131,7 +131,7 @@
private void btnBlue_Click(object sender, RoutedEventArgs e)
{
- if (!CalculteSatus.msp.sp.IsOpen)
+ if (!CalculteSatus.msp.Sp.IsOpen)
{
this.btnBlue.IsChecked = false;
new PopupWindow("未插入串口!").ShowDialog();
@@ -140,7 +140,7 @@
if (this.btnBlue.IsChecked == false || this.btnBlue.IsChecked == null)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev2);
String josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "number.json",
Encoding.UTF8);
@@ -156,7 +156,7 @@
{
if (this.btnRed.IsChecked == true)
{
- SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1);
+ SenderClass.sendSoundStopCmd(CalculteSatus.msp.Sp, DevCode.Dev1);
this.btnRed.IsChecked = false;
}
@@ -175,7 +175,7 @@
Correlator.CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
Thread.Sleep(3000);
- SenderClass.sendSoundCollectCmd(CalculteSatus.msp.sp, devcode as string);
+ SenderClass.sendSoundCollectCmd(CalculteSatus.msp.Sp, devcode as string);
Thread.Sleep(2000);
CalculteSatus.isListening = true;
new Thread(new ThreadStart(timer)) { IsBackground = true }.Start();
diff --git a/PipeGallery/View/FilterEditView.xaml.cs b/PipeGallery/View/FilterEditView.xaml.cs
index cc418d7..19f259d 100644
--- a/PipeGallery/View/FilterEditView.xaml.cs
+++ b/PipeGallery/View/FilterEditView.xaml.cs
@@ -217,7 +217,7 @@
Correlator.CalculteSatus.cutFreHigh = high;
}
- if (!Correlator.CalculteSatus.msp.sp.IsOpen)
+ if (!Correlator.CalculteSatus.msp.Sp.IsOpen)
{
new PopupWindow("未插入串口!", "警告").ShowDialog();
return;
@@ -245,7 +245,7 @@
else
{
Correlator.CalculteSatus.msp.timer.Stop(); //停止状态采集指令的发送
- CalculteSatus.msp.collectData = true;
+ CalculteSatus.msp.CollectData = true;
LogHelper.Info("定位计算前数据清除!!!");
CorrelatorDataSaveThread.devDataValueMap.Clear();
diff --git a/PipeGallery/View/HomePageView.xaml b/PipeGallery/View/HomePageView.xaml
index d6e37d1..7ebfd51 100644
--- a/PipeGallery/View/HomePageView.xaml
+++ b/PipeGallery/View/HomePageView.xaml
@@ -553,7 +553,6 @@
Margin="0,2"
HorizontalAlignment="Left"
Content="干扰采集"
- IsEnabled="{Binding BtnFilterIsEnabled}"
Style="{StaticResource BtnHomepageStyle}">
@@ -569,7 +568,6 @@
Margin="0,2"
HorizontalAlignment="Left"
Content="听音"
- IsEnabled="{Binding BtnAuditionIsEnabled}"
Style="{StaticResource BtnHomepageStyle}">
@@ -585,7 +583,6 @@
Margin="0,2"
HorizontalAlignment="Left"
Content="快照"
- IsEnabled="{Binding BtnSnapshotIsEnabled}"
Style="{StaticResource BtnHomepageStyle}">
@@ -602,7 +599,6 @@
Margin="0,2"
HorizontalAlignment="Right"
Content="复位"
- IsEnabled="{Binding BtnResetIsEnabled}"
Style="{StaticResource BtnHomepageStyle}">
@@ -619,7 +615,6 @@
Margin="0,2"
HorizontalAlignment="Right"
Content="{Binding StartState, Converter={StaticResource pipeMaterialContentConverter}}"
- IsEnabled="{Binding BtnStartIsEnabled}"
Style="{StaticResource BtnHomepageStartStyle}"
Tag="{Binding StartState, Converter={StaticResource pipeMaterialStateConverter}}" />