diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/MethodExtensions.cs b/Correlator/Util/MethodExtensions.cs
new file mode 100644
index 0000000..3b7b48c
--- /dev/null
+++ b/Correlator/Util/MethodExtensions.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Correlator.Util
+{
+ public static class MethodExtensions
+ {
+ public static string FormatFileSize(this long size)
+ {
+ string fileSize;
+ if (size == 0)
+ {
+ fileSize = "0B";
+ }
+ else if (size < 1024)
+ {
+ fileSize = $"{size:#.0}" + "B";
+ }
+ else if (size < 1048576)
+ {
+ fileSize = $"{(double)size / 1024:#.0}" + "K";
+ }
+ else if (size < 1073741824)
+ {
+ fileSize = $"{(double)size / 1048576:#.0}" + "M";
+ }
+ else
+ {
+ fileSize = $"{(double)size / 1073741824:#.0}" + "G";
+ }
+
+ return fileSize;
+ }
+
+ public static int ConvertBytes2Int(this IEnumerable bytes)
+ {
+ return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
+ }
+
+ public static string ConvertBytes2String(this IEnumerable bytes)
+ {
+ return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
+ }
+
+ ///
+ /// 数据补零,保持长度一致
+ ///
+ ///
+ ///
+ public static string AppendEndZero(this double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
+ public static string To16HexString(this string src)
+ {
+ if (src.Length == 4)
+ {
+ return src;
+ }
+
+ var temp = "";
+ for (var i = 0; i < 4 - src.Length; i++)
+ {
+ temp += "0";
+ }
+
+ return temp + src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/MethodExtensions.cs b/Correlator/Util/MethodExtensions.cs
new file mode 100644
index 0000000..3b7b48c
--- /dev/null
+++ b/Correlator/Util/MethodExtensions.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Correlator.Util
+{
+ public static class MethodExtensions
+ {
+ public static string FormatFileSize(this long size)
+ {
+ string fileSize;
+ if (size == 0)
+ {
+ fileSize = "0B";
+ }
+ else if (size < 1024)
+ {
+ fileSize = $"{size:#.0}" + "B";
+ }
+ else if (size < 1048576)
+ {
+ fileSize = $"{(double)size / 1024:#.0}" + "K";
+ }
+ else if (size < 1073741824)
+ {
+ fileSize = $"{(double)size / 1048576:#.0}" + "M";
+ }
+ else
+ {
+ fileSize = $"{(double)size / 1073741824:#.0}" + "G";
+ }
+
+ return fileSize;
+ }
+
+ public static int ConvertBytes2Int(this IEnumerable bytes)
+ {
+ return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
+ }
+
+ public static string ConvertBytes2String(this IEnumerable bytes)
+ {
+ return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
+ }
+
+ ///
+ /// 数据补零,保持长度一致
+ ///
+ ///
+ ///
+ public static string AppendEndZero(this double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
+ public static string To16HexString(this string src)
+ {
+ if (src.Length == 4)
+ {
+ return src;
+ }
+
+ var temp = "";
+ for (var i = 0; i < 4 - src.Length; i++)
+ {
+ temp += "0";
+ }
+
+ return temp + src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Util/SenderClass.cs b/Correlator/Util/SenderClass.cs
index 77f96cd..699eada 100644
--- a/Correlator/Util/SenderClass.cs
+++ b/Correlator/Util/SenderClass.cs
@@ -55,8 +55,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -129,8 +128,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -216,8 +214,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -301,8 +298,7 @@
sysTag.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -376,8 +372,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/MethodExtensions.cs b/Correlator/Util/MethodExtensions.cs
new file mode 100644
index 0000000..3b7b48c
--- /dev/null
+++ b/Correlator/Util/MethodExtensions.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Correlator.Util
+{
+ public static class MethodExtensions
+ {
+ public static string FormatFileSize(this long size)
+ {
+ string fileSize;
+ if (size == 0)
+ {
+ fileSize = "0B";
+ }
+ else if (size < 1024)
+ {
+ fileSize = $"{size:#.0}" + "B";
+ }
+ else if (size < 1048576)
+ {
+ fileSize = $"{(double)size / 1024:#.0}" + "K";
+ }
+ else if (size < 1073741824)
+ {
+ fileSize = $"{(double)size / 1048576:#.0}" + "M";
+ }
+ else
+ {
+ fileSize = $"{(double)size / 1073741824:#.0}" + "G";
+ }
+
+ return fileSize;
+ }
+
+ public static int ConvertBytes2Int(this IEnumerable bytes)
+ {
+ return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
+ }
+
+ public static string ConvertBytes2String(this IEnumerable bytes)
+ {
+ return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
+ }
+
+ ///
+ /// 数据补零,保持长度一致
+ ///
+ ///
+ ///
+ public static string AppendEndZero(this double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
+ public static string To16HexString(this string src)
+ {
+ if (src.Length == 4)
+ {
+ return src;
+ }
+
+ var temp = "";
+ for (var i = 0; i < 4 - src.Length; i++)
+ {
+ temp += "0";
+ }
+
+ return temp + src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Util/SenderClass.cs b/Correlator/Util/SenderClass.cs
index 77f96cd..699eada 100644
--- a/Correlator/Util/SenderClass.cs
+++ b/Correlator/Util/SenderClass.cs
@@ -55,8 +55,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -129,8 +128,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -216,8 +214,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -301,8 +298,7 @@
sysTag.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -376,8 +372,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
diff --git a/Correlator/Util/SerialPortManager.cs b/Correlator/Util/SerialPortManager.cs
index 048118d..5548941 100644
--- a/Correlator/Util/SerialPortManager.cs
+++ b/Correlator/Util/SerialPortManager.cs
@@ -41,7 +41,7 @@
var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = deviceId.ConvertBytes2String();
var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
@@ -122,7 +122,7 @@
{
var lengthBuffer = new byte[2];
SerialPort.Read(lengthBuffer, 0, 2);
- var length = StringUtil.ConvertBytes2Int(lengthBuffer);
+ var length = lengthBuffer.ConvertBytes2Int();
if (length < 12)
{
@@ -343,7 +343,7 @@
Array.Reverse(len);
int iLen = BitConverter.ToInt16(len, 0);
- var strOid = StringUtil.ConvertBytes2String(oid);
+ var strOid = oid.ConvertBytes2String();
var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/MethodExtensions.cs b/Correlator/Util/MethodExtensions.cs
new file mode 100644
index 0000000..3b7b48c
--- /dev/null
+++ b/Correlator/Util/MethodExtensions.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Correlator.Util
+{
+ public static class MethodExtensions
+ {
+ public static string FormatFileSize(this long size)
+ {
+ string fileSize;
+ if (size == 0)
+ {
+ fileSize = "0B";
+ }
+ else if (size < 1024)
+ {
+ fileSize = $"{size:#.0}" + "B";
+ }
+ else if (size < 1048576)
+ {
+ fileSize = $"{(double)size / 1024:#.0}" + "K";
+ }
+ else if (size < 1073741824)
+ {
+ fileSize = $"{(double)size / 1048576:#.0}" + "M";
+ }
+ else
+ {
+ fileSize = $"{(double)size / 1073741824:#.0}" + "G";
+ }
+
+ return fileSize;
+ }
+
+ public static int ConvertBytes2Int(this IEnumerable bytes)
+ {
+ return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
+ }
+
+ public static string ConvertBytes2String(this IEnumerable bytes)
+ {
+ return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
+ }
+
+ ///
+ /// 数据补零,保持长度一致
+ ///
+ ///
+ ///
+ public static string AppendEndZero(this double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
+ public static string To16HexString(this string src)
+ {
+ if (src.Length == 4)
+ {
+ return src;
+ }
+
+ var temp = "";
+ for (var i = 0; i < 4 - src.Length; i++)
+ {
+ temp += "0";
+ }
+
+ return temp + src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Util/SenderClass.cs b/Correlator/Util/SenderClass.cs
index 77f96cd..699eada 100644
--- a/Correlator/Util/SenderClass.cs
+++ b/Correlator/Util/SenderClass.cs
@@ -55,8 +55,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -129,8 +128,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -216,8 +214,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -301,8 +298,7 @@
sysTag.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -376,8 +372,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
diff --git a/Correlator/Util/SerialPortManager.cs b/Correlator/Util/SerialPortManager.cs
index 048118d..5548941 100644
--- a/Correlator/Util/SerialPortManager.cs
+++ b/Correlator/Util/SerialPortManager.cs
@@ -41,7 +41,7 @@
var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = deviceId.ConvertBytes2String();
var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
@@ -122,7 +122,7 @@
{
var lengthBuffer = new byte[2];
SerialPort.Read(lengthBuffer, 0, 2);
- var length = StringUtil.ConvertBytes2Int(lengthBuffer);
+ var length = lengthBuffer.ConvertBytes2Int();
if (length < 12)
{
@@ -343,7 +343,7 @@
Array.Reverse(len);
int iLen = BitConverter.ToInt16(len, 0);
- var strOid = StringUtil.ConvertBytes2String(oid);
+ var strOid = oid.ConvertBytes2String();
var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
diff --git a/Correlator/Util/SizeUtil.cs b/Correlator/Util/SizeUtil.cs
deleted file mode 100644
index 2303a19..0000000
--- a/Correlator/Util/SizeUtil.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-namespace Correlator.Util
-{
- public static class SizeUtil
- {
- public static string FormatFileSize(long size)
- {
- string fileSize;
- if (size == 0)
- {
- fileSize = "0B";
- }
- else if (size < 1024)
- {
- fileSize = $"{size:#.0}" + "B";
- }
- else if (size < 1048576)
- {
- fileSize = $"{(double)size / 1024:#.0}" + "K";
- }
- else if (size < 1073741824)
- {
- fileSize = $"{(double)size / 1048576:#.0}" + "M";
- }
- else
- {
- fileSize = $"{(double)size / 1073741824:#.0}" + "G";
- }
-
- return fileSize;
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/MethodExtensions.cs b/Correlator/Util/MethodExtensions.cs
new file mode 100644
index 0000000..3b7b48c
--- /dev/null
+++ b/Correlator/Util/MethodExtensions.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Correlator.Util
+{
+ public static class MethodExtensions
+ {
+ public static string FormatFileSize(this long size)
+ {
+ string fileSize;
+ if (size == 0)
+ {
+ fileSize = "0B";
+ }
+ else if (size < 1024)
+ {
+ fileSize = $"{size:#.0}" + "B";
+ }
+ else if (size < 1048576)
+ {
+ fileSize = $"{(double)size / 1024:#.0}" + "K";
+ }
+ else if (size < 1073741824)
+ {
+ fileSize = $"{(double)size / 1048576:#.0}" + "M";
+ }
+ else
+ {
+ fileSize = $"{(double)size / 1073741824:#.0}" + "G";
+ }
+
+ return fileSize;
+ }
+
+ public static int ConvertBytes2Int(this IEnumerable bytes)
+ {
+ return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
+ }
+
+ public static string ConvertBytes2String(this IEnumerable bytes)
+ {
+ return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
+ }
+
+ ///
+ /// 数据补零,保持长度一致
+ ///
+ ///
+ ///
+ public static string AppendEndZero(this double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
+ public static string To16HexString(this string src)
+ {
+ if (src.Length == 4)
+ {
+ return src;
+ }
+
+ var temp = "";
+ for (var i = 0; i < 4 - src.Length; i++)
+ {
+ temp += "0";
+ }
+
+ return temp + src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Util/SenderClass.cs b/Correlator/Util/SenderClass.cs
index 77f96cd..699eada 100644
--- a/Correlator/Util/SenderClass.cs
+++ b/Correlator/Util/SenderClass.cs
@@ -55,8 +55,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -129,8 +128,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -216,8 +214,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -301,8 +298,7 @@
sysTag.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -376,8 +372,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
diff --git a/Correlator/Util/SerialPortManager.cs b/Correlator/Util/SerialPortManager.cs
index 048118d..5548941 100644
--- a/Correlator/Util/SerialPortManager.cs
+++ b/Correlator/Util/SerialPortManager.cs
@@ -41,7 +41,7 @@
var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = deviceId.ConvertBytes2String();
var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
@@ -122,7 +122,7 @@
{
var lengthBuffer = new byte[2];
SerialPort.Read(lengthBuffer, 0, 2);
- var length = StringUtil.ConvertBytes2Int(lengthBuffer);
+ var length = lengthBuffer.ConvertBytes2Int();
if (length < 12)
{
@@ -343,7 +343,7 @@
Array.Reverse(len);
int iLen = BitConverter.ToInt16(len, 0);
- var strOid = StringUtil.ConvertBytes2String(oid);
+ var strOid = oid.ConvertBytes2String();
var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
diff --git a/Correlator/Util/SizeUtil.cs b/Correlator/Util/SizeUtil.cs
deleted file mode 100644
index 2303a19..0000000
--- a/Correlator/Util/SizeUtil.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-namespace Correlator.Util
-{
- public static class SizeUtil
- {
- public static string FormatFileSize(long size)
- {
- string fileSize;
- if (size == 0)
- {
- fileSize = "0B";
- }
- else if (size < 1024)
- {
- fileSize = $"{size:#.0}" + "B";
- }
- else if (size < 1048576)
- {
- fileSize = $"{(double)size / 1024:#.0}" + "K";
- }
- else if (size < 1073741824)
- {
- fileSize = $"{(double)size / 1048576:#.0}" + "M";
- }
- else
- {
- fileSize = $"{(double)size / 1073741824:#.0}" + "G";
- }
-
- return fileSize;
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/StringUtil.cs b/Correlator/Util/StringUtil.cs
index 4be3963..bab8bbf 100644
--- a/Correlator/Util/StringUtil.cs
+++ b/Correlator/Util/StringUtil.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Globalization;
using System.IO;
-using System.Linq;
using System.Text;
using Correlator.Model;
@@ -10,32 +8,6 @@
{
public static class StringUtil
{
- public static int ConvertBytes2Int(IEnumerable bytes)
- {
- return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
- }
-
- public static string To16HexString(string src)
- {
- if (src.Length == 4)
- {
- return src;
- }
-
- var temp = "";
- for (var i = 0; i < 4 - src.Length; i++)
- {
- temp += "0";
- }
-
- return temp + src;
- }
-
- public static string ConvertBytes2String(IEnumerable bytes)
- {
- return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
- }
-
public static void SaveHexData(string devCode, byte[] receiveData, string hexFileName)
{
var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
@@ -60,13 +32,13 @@
var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
foreach (var d in it.LeftDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
locateData += "===============" + "\r\n";
foreach (var d in it.RightDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
var data = Encoding.Default.GetBytes(locateData);
@@ -77,13 +49,6 @@
fileStream.Close();
}
- //数据补零,保持长度一致
- public static string AppendEndZero(double d)
- {
- //数据固定长度16
- return ((decimal)d).ToString("G").PadRight(16, '0');
- }
-
public static byte Year => byte.Parse(DateTime.Now.ToString("yy"));
public static byte Mon => byte.Parse(DateTime.Now.ToString("MM"));
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/MethodExtensions.cs b/Correlator/Util/MethodExtensions.cs
new file mode 100644
index 0000000..3b7b48c
--- /dev/null
+++ b/Correlator/Util/MethodExtensions.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Correlator.Util
+{
+ public static class MethodExtensions
+ {
+ public static string FormatFileSize(this long size)
+ {
+ string fileSize;
+ if (size == 0)
+ {
+ fileSize = "0B";
+ }
+ else if (size < 1024)
+ {
+ fileSize = $"{size:#.0}" + "B";
+ }
+ else if (size < 1048576)
+ {
+ fileSize = $"{(double)size / 1024:#.0}" + "K";
+ }
+ else if (size < 1073741824)
+ {
+ fileSize = $"{(double)size / 1048576:#.0}" + "M";
+ }
+ else
+ {
+ fileSize = $"{(double)size / 1073741824:#.0}" + "G";
+ }
+
+ return fileSize;
+ }
+
+ public static int ConvertBytes2Int(this IEnumerable bytes)
+ {
+ return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
+ }
+
+ public static string ConvertBytes2String(this IEnumerable bytes)
+ {
+ return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
+ }
+
+ ///
+ /// 数据补零,保持长度一致
+ ///
+ ///
+ ///
+ public static string AppendEndZero(this double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
+ public static string To16HexString(this string src)
+ {
+ if (src.Length == 4)
+ {
+ return src;
+ }
+
+ var temp = "";
+ for (var i = 0; i < 4 - src.Length; i++)
+ {
+ temp += "0";
+ }
+
+ return temp + src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Util/SenderClass.cs b/Correlator/Util/SenderClass.cs
index 77f96cd..699eada 100644
--- a/Correlator/Util/SenderClass.cs
+++ b/Correlator/Util/SenderClass.cs
@@ -55,8 +55,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -129,8 +128,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -216,8 +214,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -301,8 +298,7 @@
sysTag.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -376,8 +372,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
diff --git a/Correlator/Util/SerialPortManager.cs b/Correlator/Util/SerialPortManager.cs
index 048118d..5548941 100644
--- a/Correlator/Util/SerialPortManager.cs
+++ b/Correlator/Util/SerialPortManager.cs
@@ -41,7 +41,7 @@
var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = deviceId.ConvertBytes2String();
var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
@@ -122,7 +122,7 @@
{
var lengthBuffer = new byte[2];
SerialPort.Read(lengthBuffer, 0, 2);
- var length = StringUtil.ConvertBytes2Int(lengthBuffer);
+ var length = lengthBuffer.ConvertBytes2Int();
if (length < 12)
{
@@ -343,7 +343,7 @@
Array.Reverse(len);
int iLen = BitConverter.ToInt16(len, 0);
- var strOid = StringUtil.ConvertBytes2String(oid);
+ var strOid = oid.ConvertBytes2String();
var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
diff --git a/Correlator/Util/SizeUtil.cs b/Correlator/Util/SizeUtil.cs
deleted file mode 100644
index 2303a19..0000000
--- a/Correlator/Util/SizeUtil.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-namespace Correlator.Util
-{
- public static class SizeUtil
- {
- public static string FormatFileSize(long size)
- {
- string fileSize;
- if (size == 0)
- {
- fileSize = "0B";
- }
- else if (size < 1024)
- {
- fileSize = $"{size:#.0}" + "B";
- }
- else if (size < 1048576)
- {
- fileSize = $"{(double)size / 1024:#.0}" + "K";
- }
- else if (size < 1073741824)
- {
- fileSize = $"{(double)size / 1048576:#.0}" + "M";
- }
- else
- {
- fileSize = $"{(double)size / 1073741824:#.0}" + "G";
- }
-
- return fileSize;
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/StringUtil.cs b/Correlator/Util/StringUtil.cs
index 4be3963..bab8bbf 100644
--- a/Correlator/Util/StringUtil.cs
+++ b/Correlator/Util/StringUtil.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Globalization;
using System.IO;
-using System.Linq;
using System.Text;
using Correlator.Model;
@@ -10,32 +8,6 @@
{
public static class StringUtil
{
- public static int ConvertBytes2Int(IEnumerable bytes)
- {
- return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
- }
-
- public static string To16HexString(string src)
- {
- if (src.Length == 4)
- {
- return src;
- }
-
- var temp = "";
- for (var i = 0; i < 4 - src.Length; i++)
- {
- temp += "0";
- }
-
- return temp + src;
- }
-
- public static string ConvertBytes2String(IEnumerable bytes)
- {
- return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
- }
-
public static void SaveHexData(string devCode, byte[] receiveData, string hexFileName)
{
var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
@@ -60,13 +32,13 @@
var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
foreach (var d in it.LeftDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
locateData += "===============" + "\r\n";
foreach (var d in it.RightDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
var data = Encoding.Default.GetBytes(locateData);
@@ -77,13 +49,6 @@
fileStream.Close();
}
- //数据补零,保持长度一致
- public static string AppendEndZero(double d)
- {
- //数据固定长度16
- return ((decimal)d).ToString("G").PadRight(16, '0');
- }
-
public static byte Year => byte.Parse(DateTime.Now.ToString("yy"));
public static byte Mon => byte.Parse(DateTime.Now.ToString("MM"));
diff --git a/Correlator/ViewModel/AudioFileViewModel.cs b/Correlator/ViewModel/AudioFileViewModel.cs
index d8b3c95..081a75e 100644
--- a/Correlator/ViewModel/AudioFileViewModel.cs
+++ b/Correlator/ViewModel/AudioFileViewModel.cs
@@ -125,7 +125,7 @@
FileName = file.Name.Substring(0, file.Name.IndexOf(".", StringComparison.Ordinal)),
PersonLiable = "",
FullPath = Constant.GetAudioDir() + "\\" + file.Name,
- FileSize = SizeUtil.FormatFileSize(file.Length),
+ FileSize = file.Length.FormatFileSize(),
CreationTime = file.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")
}).ToList();
}
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/MethodExtensions.cs b/Correlator/Util/MethodExtensions.cs
new file mode 100644
index 0000000..3b7b48c
--- /dev/null
+++ b/Correlator/Util/MethodExtensions.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Correlator.Util
+{
+ public static class MethodExtensions
+ {
+ public static string FormatFileSize(this long size)
+ {
+ string fileSize;
+ if (size == 0)
+ {
+ fileSize = "0B";
+ }
+ else if (size < 1024)
+ {
+ fileSize = $"{size:#.0}" + "B";
+ }
+ else if (size < 1048576)
+ {
+ fileSize = $"{(double)size / 1024:#.0}" + "K";
+ }
+ else if (size < 1073741824)
+ {
+ fileSize = $"{(double)size / 1048576:#.0}" + "M";
+ }
+ else
+ {
+ fileSize = $"{(double)size / 1073741824:#.0}" + "G";
+ }
+
+ return fileSize;
+ }
+
+ public static int ConvertBytes2Int(this IEnumerable bytes)
+ {
+ return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
+ }
+
+ public static string ConvertBytes2String(this IEnumerable bytes)
+ {
+ return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
+ }
+
+ ///
+ /// 数据补零,保持长度一致
+ ///
+ ///
+ ///
+ public static string AppendEndZero(this double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
+ public static string To16HexString(this string src)
+ {
+ if (src.Length == 4)
+ {
+ return src;
+ }
+
+ var temp = "";
+ for (var i = 0; i < 4 - src.Length; i++)
+ {
+ temp += "0";
+ }
+
+ return temp + src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Util/SenderClass.cs b/Correlator/Util/SenderClass.cs
index 77f96cd..699eada 100644
--- a/Correlator/Util/SenderClass.cs
+++ b/Correlator/Util/SenderClass.cs
@@ -55,8 +55,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -129,8 +128,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -216,8 +214,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -301,8 +298,7 @@
sysTag.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -376,8 +372,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
diff --git a/Correlator/Util/SerialPortManager.cs b/Correlator/Util/SerialPortManager.cs
index 048118d..5548941 100644
--- a/Correlator/Util/SerialPortManager.cs
+++ b/Correlator/Util/SerialPortManager.cs
@@ -41,7 +41,7 @@
var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = deviceId.ConvertBytes2String();
var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
@@ -122,7 +122,7 @@
{
var lengthBuffer = new byte[2];
SerialPort.Read(lengthBuffer, 0, 2);
- var length = StringUtil.ConvertBytes2Int(lengthBuffer);
+ var length = lengthBuffer.ConvertBytes2Int();
if (length < 12)
{
@@ -343,7 +343,7 @@
Array.Reverse(len);
int iLen = BitConverter.ToInt16(len, 0);
- var strOid = StringUtil.ConvertBytes2String(oid);
+ var strOid = oid.ConvertBytes2String();
var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
diff --git a/Correlator/Util/SizeUtil.cs b/Correlator/Util/SizeUtil.cs
deleted file mode 100644
index 2303a19..0000000
--- a/Correlator/Util/SizeUtil.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-namespace Correlator.Util
-{
- public static class SizeUtil
- {
- public static string FormatFileSize(long size)
- {
- string fileSize;
- if (size == 0)
- {
- fileSize = "0B";
- }
- else if (size < 1024)
- {
- fileSize = $"{size:#.0}" + "B";
- }
- else if (size < 1048576)
- {
- fileSize = $"{(double)size / 1024:#.0}" + "K";
- }
- else if (size < 1073741824)
- {
- fileSize = $"{(double)size / 1048576:#.0}" + "M";
- }
- else
- {
- fileSize = $"{(double)size / 1073741824:#.0}" + "G";
- }
-
- return fileSize;
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/StringUtil.cs b/Correlator/Util/StringUtil.cs
index 4be3963..bab8bbf 100644
--- a/Correlator/Util/StringUtil.cs
+++ b/Correlator/Util/StringUtil.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Globalization;
using System.IO;
-using System.Linq;
using System.Text;
using Correlator.Model;
@@ -10,32 +8,6 @@
{
public static class StringUtil
{
- public static int ConvertBytes2Int(IEnumerable bytes)
- {
- return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
- }
-
- public static string To16HexString(string src)
- {
- if (src.Length == 4)
- {
- return src;
- }
-
- var temp = "";
- for (var i = 0; i < 4 - src.Length; i++)
- {
- temp += "0";
- }
-
- return temp + src;
- }
-
- public static string ConvertBytes2String(IEnumerable bytes)
- {
- return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
- }
-
public static void SaveHexData(string devCode, byte[] receiveData, string hexFileName)
{
var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
@@ -60,13 +32,13 @@
var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
foreach (var d in it.LeftDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
locateData += "===============" + "\r\n";
foreach (var d in it.RightDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
var data = Encoding.Default.GetBytes(locateData);
@@ -77,13 +49,6 @@
fileStream.Close();
}
- //数据补零,保持长度一致
- public static string AppendEndZero(double d)
- {
- //数据固定长度16
- return ((decimal)d).ToString("G").PadRight(16, '0');
- }
-
public static byte Year => byte.Parse(DateTime.Now.ToString("yy"));
public static byte Mon => byte.Parse(DateTime.Now.ToString("MM"));
diff --git a/Correlator/ViewModel/AudioFileViewModel.cs b/Correlator/ViewModel/AudioFileViewModel.cs
index d8b3c95..081a75e 100644
--- a/Correlator/ViewModel/AudioFileViewModel.cs
+++ b/Correlator/ViewModel/AudioFileViewModel.cs
@@ -125,7 +125,7 @@
FileName = file.Name.Substring(0, file.Name.IndexOf(".", StringComparison.Ordinal)),
PersonLiable = "",
FullPath = Constant.GetAudioDir() + "\\" + file.Name,
- FileSize = SizeUtil.FormatFileSize(file.Length),
+ FileSize = file.Length.FormatFileSize(),
CreationTime = file.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")
}).ToList();
}
diff --git a/Correlator/ViewModel/EditFilterViewModel.cs b/Correlator/ViewModel/EditFilterViewModel.cs
index 134344c..c78e813 100644
--- a/Correlator/ViewModel/EditFilterViewModel.cs
+++ b/Correlator/ViewModel/EditFilterViewModel.cs
@@ -4,6 +4,7 @@
using System.Windows;
using Correlator.Dialog;
using Correlator.Model;
+using Correlator.Service;
using Correlator.Util;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
@@ -16,6 +17,7 @@
{
public RelayCommand DetermineParamCommand { get; set; }
+ private readonly ISoundSpeedDataService _dataService;
private PipeMaterialModel _materialModel;
private string _materialName;
@@ -78,8 +80,9 @@
}
}
- public EditFilterViewModel()
+ public EditFilterViewModel(ISoundSpeedDataService dataService)
{
+ _dataService = dataService;
Messenger.Default.Register(this, MessengerToken.EditFilter, it =>
{
MaterialName = it.ChineseMaterial;
@@ -88,49 +91,48 @@
_materialModel = it;
});
- DetermineParamCommand = new RelayCommand(it =>
+ DetermineParamCommand = new RelayCommand(EditFilter);
+ }
+
+ private void EditFilter(EditFilterDialog it)
+ {
+ if (string.IsNullOrEmpty(_lowFrequency) || string.IsNullOrEmpty(_highFrequency))
{
- if (string.IsNullOrEmpty(_lowFrequency) || string.IsNullOrEmpty(_highFrequency))
- {
- MessageBox.Show("请输入完整的干扰频段",
- "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
+ MessageBox.Show("请输入完整的干扰频段", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
- if (!(Regex.IsMatch(_lowFrequency, "^([1-9][0-9]*)$") &&
- Regex.IsMatch(_highFrequency, "^([1-9][0-9]*)$")))
- {
- MessageBox.Show("输入格式错误,请重新输入",
- "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
+ if (!(Regex.IsMatch(_lowFrequency, "^([1-9][0-9]*)$") &&
+ Regex.IsMatch(_highFrequency, "^([1-9][0-9]*)$")))
+ {
+ MessageBox.Show("输入格式错误,请重新输入", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
- var low = Convert.ToInt32(_lowFrequency);
- var high = Convert.ToInt32(_highFrequency);
+ var low = Convert.ToInt32(_lowFrequency);
+ var high = Convert.ToInt32(_highFrequency);
- if (low < 100 || low > 3000 || high < 100 || high > 3000 || low >= high)
- {
- MessageBox.Show("频段范围100-3000Hz,请重新输入",
- "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
+ if (low < 100 || low > 3000 || high < 100 || high > 3000 || low >= high)
+ {
+ MessageBox.Show("频段范围100-3000Hz,请重新输入", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
- //声速
- var soundVelocity = MaterialManager.GetSoundVelocity(
- _materialModel.ChineseMaterial, Convert.ToInt32(_materialModel.Diameter)
- );
- LogWithConsole.WriteLine("正在修改的管材是:" + _materialModel.Diameter + "m的" + _materialModel.ChineseMaterial +
- "声速是 => " + soundVelocity, "EditFilterViewModel");
+ //声速
+ var soundVelocity = _dataService.GetSoundVelocity(
+ _materialModel.ChineseMaterial, Convert.ToInt32(_materialModel.Diameter)
+ );
+ LogWithConsole.WriteLine("正在修改的管材是:" + _materialModel.Diameter + "m的" + _materialModel.ChineseMaterial +
+ "声速是 => " + soundVelocity, "EditFilterViewModel");
- _materialModel.SoundSpeed = soundVelocity;
- _materialModel.LowFrequency = low;
- _materialModel.HighFrequency = high;
- _materialModel.IsReady = true;
+ _materialModel.SoundSpeed = soundVelocity;
+ _materialModel.LowFrequency = low;
+ _materialModel.HighFrequency = high;
+ _materialModel.IsReady = true;
- Messenger.Default.Send(_materialModel, MessengerToken.StartCalculate);
- // 参数确定好之后,关闭自身和上一级窗口
- it.Close();
- });
+ Messenger.Default.Send(_materialModel, MessengerToken.StartCalculate);
+ // 参数确定好之后,关闭自身和上一级窗口
+ it.Close();
}
}
}
\ No newline at end of file
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/MethodExtensions.cs b/Correlator/Util/MethodExtensions.cs
new file mode 100644
index 0000000..3b7b48c
--- /dev/null
+++ b/Correlator/Util/MethodExtensions.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Correlator.Util
+{
+ public static class MethodExtensions
+ {
+ public static string FormatFileSize(this long size)
+ {
+ string fileSize;
+ if (size == 0)
+ {
+ fileSize = "0B";
+ }
+ else if (size < 1024)
+ {
+ fileSize = $"{size:#.0}" + "B";
+ }
+ else if (size < 1048576)
+ {
+ fileSize = $"{(double)size / 1024:#.0}" + "K";
+ }
+ else if (size < 1073741824)
+ {
+ fileSize = $"{(double)size / 1048576:#.0}" + "M";
+ }
+ else
+ {
+ fileSize = $"{(double)size / 1073741824:#.0}" + "G";
+ }
+
+ return fileSize;
+ }
+
+ public static int ConvertBytes2Int(this IEnumerable bytes)
+ {
+ return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
+ }
+
+ public static string ConvertBytes2String(this IEnumerable bytes)
+ {
+ return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
+ }
+
+ ///
+ /// 数据补零,保持长度一致
+ ///
+ ///
+ ///
+ public static string AppendEndZero(this double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
+ public static string To16HexString(this string src)
+ {
+ if (src.Length == 4)
+ {
+ return src;
+ }
+
+ var temp = "";
+ for (var i = 0; i < 4 - src.Length; i++)
+ {
+ temp += "0";
+ }
+
+ return temp + src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Util/SenderClass.cs b/Correlator/Util/SenderClass.cs
index 77f96cd..699eada 100644
--- a/Correlator/Util/SenderClass.cs
+++ b/Correlator/Util/SenderClass.cs
@@ -55,8 +55,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -129,8 +128,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -216,8 +214,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -301,8 +298,7 @@
sysTag.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -376,8 +372,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
diff --git a/Correlator/Util/SerialPortManager.cs b/Correlator/Util/SerialPortManager.cs
index 048118d..5548941 100644
--- a/Correlator/Util/SerialPortManager.cs
+++ b/Correlator/Util/SerialPortManager.cs
@@ -41,7 +41,7 @@
var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = deviceId.ConvertBytes2String();
var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
@@ -122,7 +122,7 @@
{
var lengthBuffer = new byte[2];
SerialPort.Read(lengthBuffer, 0, 2);
- var length = StringUtil.ConvertBytes2Int(lengthBuffer);
+ var length = lengthBuffer.ConvertBytes2Int();
if (length < 12)
{
@@ -343,7 +343,7 @@
Array.Reverse(len);
int iLen = BitConverter.ToInt16(len, 0);
- var strOid = StringUtil.ConvertBytes2String(oid);
+ var strOid = oid.ConvertBytes2String();
var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
diff --git a/Correlator/Util/SizeUtil.cs b/Correlator/Util/SizeUtil.cs
deleted file mode 100644
index 2303a19..0000000
--- a/Correlator/Util/SizeUtil.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-namespace Correlator.Util
-{
- public static class SizeUtil
- {
- public static string FormatFileSize(long size)
- {
- string fileSize;
- if (size == 0)
- {
- fileSize = "0B";
- }
- else if (size < 1024)
- {
- fileSize = $"{size:#.0}" + "B";
- }
- else if (size < 1048576)
- {
- fileSize = $"{(double)size / 1024:#.0}" + "K";
- }
- else if (size < 1073741824)
- {
- fileSize = $"{(double)size / 1048576:#.0}" + "M";
- }
- else
- {
- fileSize = $"{(double)size / 1073741824:#.0}" + "G";
- }
-
- return fileSize;
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/StringUtil.cs b/Correlator/Util/StringUtil.cs
index 4be3963..bab8bbf 100644
--- a/Correlator/Util/StringUtil.cs
+++ b/Correlator/Util/StringUtil.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Globalization;
using System.IO;
-using System.Linq;
using System.Text;
using Correlator.Model;
@@ -10,32 +8,6 @@
{
public static class StringUtil
{
- public static int ConvertBytes2Int(IEnumerable bytes)
- {
- return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
- }
-
- public static string To16HexString(string src)
- {
- if (src.Length == 4)
- {
- return src;
- }
-
- var temp = "";
- for (var i = 0; i < 4 - src.Length; i++)
- {
- temp += "0";
- }
-
- return temp + src;
- }
-
- public static string ConvertBytes2String(IEnumerable bytes)
- {
- return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
- }
-
public static void SaveHexData(string devCode, byte[] receiveData, string hexFileName)
{
var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
@@ -60,13 +32,13 @@
var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
foreach (var d in it.LeftDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
locateData += "===============" + "\r\n";
foreach (var d in it.RightDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
var data = Encoding.Default.GetBytes(locateData);
@@ -77,13 +49,6 @@
fileStream.Close();
}
- //数据补零,保持长度一致
- public static string AppendEndZero(double d)
- {
- //数据固定长度16
- return ((decimal)d).ToString("G").PadRight(16, '0');
- }
-
public static byte Year => byte.Parse(DateTime.Now.ToString("yy"));
public static byte Mon => byte.Parse(DateTime.Now.ToString("MM"));
diff --git a/Correlator/ViewModel/AudioFileViewModel.cs b/Correlator/ViewModel/AudioFileViewModel.cs
index d8b3c95..081a75e 100644
--- a/Correlator/ViewModel/AudioFileViewModel.cs
+++ b/Correlator/ViewModel/AudioFileViewModel.cs
@@ -125,7 +125,7 @@
FileName = file.Name.Substring(0, file.Name.IndexOf(".", StringComparison.Ordinal)),
PersonLiable = "",
FullPath = Constant.GetAudioDir() + "\\" + file.Name,
- FileSize = SizeUtil.FormatFileSize(file.Length),
+ FileSize = file.Length.FormatFileSize(),
CreationTime = file.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")
}).ToList();
}
diff --git a/Correlator/ViewModel/EditFilterViewModel.cs b/Correlator/ViewModel/EditFilterViewModel.cs
index 134344c..c78e813 100644
--- a/Correlator/ViewModel/EditFilterViewModel.cs
+++ b/Correlator/ViewModel/EditFilterViewModel.cs
@@ -4,6 +4,7 @@
using System.Windows;
using Correlator.Dialog;
using Correlator.Model;
+using Correlator.Service;
using Correlator.Util;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
@@ -16,6 +17,7 @@
{
public RelayCommand DetermineParamCommand { get; set; }
+ private readonly ISoundSpeedDataService _dataService;
private PipeMaterialModel _materialModel;
private string _materialName;
@@ -78,8 +80,9 @@
}
}
- public EditFilterViewModel()
+ public EditFilterViewModel(ISoundSpeedDataService dataService)
{
+ _dataService = dataService;
Messenger.Default.Register(this, MessengerToken.EditFilter, it =>
{
MaterialName = it.ChineseMaterial;
@@ -88,49 +91,48 @@
_materialModel = it;
});
- DetermineParamCommand = new RelayCommand(it =>
+ DetermineParamCommand = new RelayCommand(EditFilter);
+ }
+
+ private void EditFilter(EditFilterDialog it)
+ {
+ if (string.IsNullOrEmpty(_lowFrequency) || string.IsNullOrEmpty(_highFrequency))
{
- if (string.IsNullOrEmpty(_lowFrequency) || string.IsNullOrEmpty(_highFrequency))
- {
- MessageBox.Show("请输入完整的干扰频段",
- "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
+ MessageBox.Show("请输入完整的干扰频段", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
- if (!(Regex.IsMatch(_lowFrequency, "^([1-9][0-9]*)$") &&
- Regex.IsMatch(_highFrequency, "^([1-9][0-9]*)$")))
- {
- MessageBox.Show("输入格式错误,请重新输入",
- "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
+ if (!(Regex.IsMatch(_lowFrequency, "^([1-9][0-9]*)$") &&
+ Regex.IsMatch(_highFrequency, "^([1-9][0-9]*)$")))
+ {
+ MessageBox.Show("输入格式错误,请重新输入", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
- var low = Convert.ToInt32(_lowFrequency);
- var high = Convert.ToInt32(_highFrequency);
+ var low = Convert.ToInt32(_lowFrequency);
+ var high = Convert.ToInt32(_highFrequency);
- if (low < 100 || low > 3000 || high < 100 || high > 3000 || low >= high)
- {
- MessageBox.Show("频段范围100-3000Hz,请重新输入",
- "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
+ if (low < 100 || low > 3000 || high < 100 || high > 3000 || low >= high)
+ {
+ MessageBox.Show("频段范围100-3000Hz,请重新输入", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
- //声速
- var soundVelocity = MaterialManager.GetSoundVelocity(
- _materialModel.ChineseMaterial, Convert.ToInt32(_materialModel.Diameter)
- );
- LogWithConsole.WriteLine("正在修改的管材是:" + _materialModel.Diameter + "m的" + _materialModel.ChineseMaterial +
- "声速是 => " + soundVelocity, "EditFilterViewModel");
+ //声速
+ var soundVelocity = _dataService.GetSoundVelocity(
+ _materialModel.ChineseMaterial, Convert.ToInt32(_materialModel.Diameter)
+ );
+ LogWithConsole.WriteLine("正在修改的管材是:" + _materialModel.Diameter + "m的" + _materialModel.ChineseMaterial +
+ "声速是 => " + soundVelocity, "EditFilterViewModel");
- _materialModel.SoundSpeed = soundVelocity;
- _materialModel.LowFrequency = low;
- _materialModel.HighFrequency = high;
- _materialModel.IsReady = true;
+ _materialModel.SoundSpeed = soundVelocity;
+ _materialModel.LowFrequency = low;
+ _materialModel.HighFrequency = high;
+ _materialModel.IsReady = true;
- Messenger.Default.Send(_materialModel, MessengerToken.StartCalculate);
- // 参数确定好之后,关闭自身和上一级窗口
- it.Close();
- });
+ Messenger.Default.Send(_materialModel, MessengerToken.StartCalculate);
+ // 参数确定好之后,关闭自身和上一级窗口
+ it.Close();
}
}
}
\ No newline at end of file
diff --git a/Correlator/ViewModel/EditMaterialNameViewModel.cs b/Correlator/ViewModel/EditMaterialNameViewModel.cs
index 4127a57..b9aa02c 100644
--- a/Correlator/ViewModel/EditMaterialNameViewModel.cs
+++ b/Correlator/ViewModel/EditMaterialNameViewModel.cs
@@ -13,6 +13,7 @@
public class EditMaterialNameViewModel : ViewModelBase
{
private readonly IMaterialNameDataService _dataService;
+ private readonly IPipeMaterialDataService _materialDataService;
private int _materialId;
private string _materialNewName;
@@ -29,9 +30,11 @@
public RelayCommand DetermineParamCommand { get; set; }
- public EditMaterialNameViewModel(IMaterialNameDataService dataService)
+ public EditMaterialNameViewModel(IMaterialNameDataService dataService,
+ IPipeMaterialDataService materialDataService)
{
_dataService = dataService;
+ _materialDataService = materialDataService;
Messenger.Default.Register(this, MessengerToken.EditMaterialName, it => { _materialId = it; });
DetermineParamCommand = new RelayCommand(DetermineParam);
@@ -46,8 +49,10 @@
return;
}
- if (MaterialManager.InitPipeMaterial().Any(
- material => _materialNewName.Equals(material.ChineseMaterial) || _materialNewName.Equals(material.EnglishMaterial))
+ var materialModels = _materialDataService.GetPipeMaterial();
+ if (materialModels.Any(
+ material => _materialNewName.Equals(material.ChineseMaterial) ||
+ _materialNewName.Equals(material.EnglishMaterial))
)
{
MessageBox.Show("该名称已存在,请重新输入",
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 1846fee..0d9a844 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -249,12 +249,11 @@
+
-
-
diff --git a/Correlator/Service/ISoundSpeedDataService.cs b/Correlator/Service/ISoundSpeedDataService.cs
index 38408cf..8a2927e 100644
--- a/Correlator/Service/ISoundSpeedDataService.cs
+++ b/Correlator/Service/ISoundSpeedDataService.cs
@@ -19,5 +19,13 @@
void InsertVelocity(string materialName, string minDiameter, string maxDiameter, string soundSpeed);
void UpdateVelocity(MaterialVelocity velocity, string minDiameter, string maxDiameter, string soundSpeed);
+
+ ///
+ /// 根据管材和管径大小获取声速
+ ///
+ ///
+ ///
+ ///
+ int GetSoundVelocity(string material, int pipeDiameter);
}
}
\ No newline at end of file
diff --git a/Correlator/ServiceImpl/SoundSpeedDataService.cs b/Correlator/ServiceImpl/SoundSpeedDataService.cs
index 1d79b46..959dabe 100644
--- a/Correlator/ServiceImpl/SoundSpeedDataService.cs
+++ b/Correlator/ServiceImpl/SoundSpeedDataService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using Correlator.Model;
@@ -145,5 +146,26 @@
manager.Update(velocity);
}
}
+
+ public int GetSoundVelocity(string material, int pipeDiameter)
+ {
+ using (var manager = new DataBaseManager())
+ {
+ //多条件查询
+ var materialVelocities = manager
+ .Table()
+ .Where(mv =>
+ mv.MaterialName == material &&
+ mv.LowDiameter <= pipeDiameter &&
+ mv.HighDiameter >= pipeDiameter
+ );
+ if (materialVelocities.Any())
+ {
+ return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
+ }
+
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Correlator/Util/MaterialManager.cs b/Correlator/Util/MaterialManager.cs
deleted file mode 100644
index 4ffd67a..0000000
--- a/Correlator/Util/MaterialManager.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using Correlator.Model;
-using Newtonsoft.Json.Linq;
-
-namespace Correlator.Util
-{
- public class MaterialManager
- {
- ///
- /// 初始化管材数据
- ///
- ///
- public static ObservableCollection InitPipeMaterial()
- {
- var materialModels = new ObservableCollection();
- using (var manager = new DataBaseManager())
- {
- var configModels = manager.Table().ToList();
- foreach (var model in configModels)
- {
- materialModels.Add(model);
- }
-
- return materialModels;
- }
- }
-
- ///
- /// 根据管材和管径大小获取声速
- ///
- ///
- ///
- ///
- public static int GetSoundVelocity(string material, int pipeDiameter)
- {
- using (var manager = new DataBaseManager())
- {
- //多条件查询
- var materialVelocities = manager
- .Table()
- .Where(mv =>
- mv.MaterialName == material &&
- mv.LowDiameter <= pipeDiameter &&
- mv.HighDiameter >= pipeDiameter
- );
- if (materialVelocities.Any())
- {
- return materialVelocities.Select(mv => mv.Velocity).FirstOrDefault();
- }
- else
- {
- var fileStream = new FileStream(
- @"..\..\Config\config.json", FileMode.Open, FileAccess.Read
- );
- using (var streamReader = new StreamReader(fileStream))
- {
- var config = streamReader.ReadToEnd();
- var jo = JObject.Parse(config);
- var customMaterials = jo["CustomMaterial"];
- if (customMaterials == null)
- {
- return 0;
- }
-
- foreach (var customMaterial in customMaterials)
- {
- if (material != customMaterial["name"]?.ToString()) continue;
- var num = 0;
- foreach (var v in customMaterial["range"])
- {
- var diameterArr = v.ToString().Split('-');
- var lowDiameter = int.Parse(diameterArr[0]);
- var highDiameter = diameterArr.Length == 2 ? int.Parse(diameterArr[1]) : -1;
- if (lowDiameter < pipeDiameter && highDiameter > pipeDiameter)
- {
- return int.Parse(customMaterial["speed"][num].ToString());
- }
-
- num++;
- }
- }
- }
- }
-
- return 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/MethodExtensions.cs b/Correlator/Util/MethodExtensions.cs
new file mode 100644
index 0000000..3b7b48c
--- /dev/null
+++ b/Correlator/Util/MethodExtensions.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Correlator.Util
+{
+ public static class MethodExtensions
+ {
+ public static string FormatFileSize(this long size)
+ {
+ string fileSize;
+ if (size == 0)
+ {
+ fileSize = "0B";
+ }
+ else if (size < 1024)
+ {
+ fileSize = $"{size:#.0}" + "B";
+ }
+ else if (size < 1048576)
+ {
+ fileSize = $"{(double)size / 1024:#.0}" + "K";
+ }
+ else if (size < 1073741824)
+ {
+ fileSize = $"{(double)size / 1048576:#.0}" + "M";
+ }
+ else
+ {
+ fileSize = $"{(double)size / 1073741824:#.0}" + "G";
+ }
+
+ return fileSize;
+ }
+
+ public static int ConvertBytes2Int(this IEnumerable bytes)
+ {
+ return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
+ }
+
+ public static string ConvertBytes2String(this IEnumerable bytes)
+ {
+ return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
+ }
+
+ ///
+ /// 数据补零,保持长度一致
+ ///
+ ///
+ ///
+ public static string AppendEndZero(this double d)
+ {
+ //数据固定长度16
+ return ((decimal)d).ToString("G").PadRight(16, '0');
+ }
+
+ public static string To16HexString(this string src)
+ {
+ if (src.Length == 4)
+ {
+ return src;
+ }
+
+ var temp = "";
+ for (var i = 0; i < 4 - src.Length; i++)
+ {
+ temp += "0";
+ }
+
+ return temp + src;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Util/SenderClass.cs b/Correlator/Util/SenderClass.cs
index 77f96cd..699eada 100644
--- a/Correlator/Util/SenderClass.cs
+++ b/Correlator/Util/SenderClass.cs
@@ -55,8 +55,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -129,8 +128,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -216,8 +214,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -301,8 +298,7 @@
sysTag.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
@@ -376,8 +372,7 @@
oid.CopyTo(result, 16);
//增加CRC校验
- var strCrc =
- StringUtil.To16HexString($"{(int)CodeUtil.CRC16_AD(result):X}");
+ var strCrc = $"{(int)CodeUtil.CRC16_AD(result):X}".To16HexString();
byte[] crcByte =
{
CodeUtil.String2Byte(strCrc.Substring(0, 2)),
diff --git a/Correlator/Util/SerialPortManager.cs b/Correlator/Util/SerialPortManager.cs
index 048118d..5548941 100644
--- a/Correlator/Util/SerialPortManager.cs
+++ b/Correlator/Util/SerialPortManager.cs
@@ -41,7 +41,7 @@
var deviceId = new byte[6];
Array.Copy(receiveData, 4, deviceId, 0, 6);
- var strDeviceId = StringUtil.ConvertBytes2String(deviceId);
+ var strDeviceId = deviceId.ConvertBytes2String();
var pduType = new byte[2];
Array.Copy(receiveData, 13, pduType, 0, 2);
@@ -122,7 +122,7 @@
{
var lengthBuffer = new byte[2];
SerialPort.Read(lengthBuffer, 0, 2);
- var length = StringUtil.ConvertBytes2Int(lengthBuffer);
+ var length = lengthBuffer.ConvertBytes2Int();
if (length < 12)
{
@@ -343,7 +343,7 @@
Array.Reverse(len);
int iLen = BitConverter.ToInt16(len, 0);
- var strOid = StringUtil.ConvertBytes2String(oid);
+ var strOid = oid.ConvertBytes2String();
var value = new byte[iLen];
Array.Copy(strTags, i + 6, value, 0, iLen);
diff --git a/Correlator/Util/SizeUtil.cs b/Correlator/Util/SizeUtil.cs
deleted file mode 100644
index 2303a19..0000000
--- a/Correlator/Util/SizeUtil.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-namespace Correlator.Util
-{
- public static class SizeUtil
- {
- public static string FormatFileSize(long size)
- {
- string fileSize;
- if (size == 0)
- {
- fileSize = "0B";
- }
- else if (size < 1024)
- {
- fileSize = $"{size:#.0}" + "B";
- }
- else if (size < 1048576)
- {
- fileSize = $"{(double)size / 1024:#.0}" + "K";
- }
- else if (size < 1073741824)
- {
- fileSize = $"{(double)size / 1048576:#.0}" + "M";
- }
- else
- {
- fileSize = $"{(double)size / 1073741824:#.0}" + "G";
- }
-
- return fileSize;
- }
- }
-}
\ No newline at end of file
diff --git a/Correlator/Util/StringUtil.cs b/Correlator/Util/StringUtil.cs
index 4be3963..bab8bbf 100644
--- a/Correlator/Util/StringUtil.cs
+++ b/Correlator/Util/StringUtil.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Globalization;
using System.IO;
-using System.Linq;
using System.Text;
using Correlator.Model;
@@ -10,32 +8,6 @@
{
public static class StringUtil
{
- public static int ConvertBytes2Int(IEnumerable bytes)
- {
- return bytes.Aggregate(0, (current, b) => 16 * 16 * current + b);
- }
-
- public static string To16HexString(string src)
- {
- if (src.Length == 4)
- {
- return src;
- }
-
- var temp = "";
- for (var i = 0; i < 4 - src.Length; i++)
- {
- temp += "0";
- }
-
- return temp + src;
- }
-
- public static string ConvertBytes2String(IEnumerable bytes)
- {
- return bytes.Aggregate("", (current, t) => current + t.ToString("X2"));
- }
-
public static void SaveHexData(string devCode, byte[] receiveData, string hexFileName)
{
var hexFileStream = new FileStream(hexFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
@@ -60,13 +32,13 @@
var locateData = DateTime.Now.ToString(CultureInfo.InvariantCulture) + "\r\n";
foreach (var d in it.LeftDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
locateData += "===============" + "\r\n";
foreach (var d in it.RightDeviceDataArray)
{
- locateData += AppendEndZero(d) + "\r\n";
+ locateData += d.AppendEndZero() + "\r\n";
}
var data = Encoding.Default.GetBytes(locateData);
@@ -77,13 +49,6 @@
fileStream.Close();
}
- //数据补零,保持长度一致
- public static string AppendEndZero(double d)
- {
- //数据固定长度16
- return ((decimal)d).ToString("G").PadRight(16, '0');
- }
-
public static byte Year => byte.Parse(DateTime.Now.ToString("yy"));
public static byte Mon => byte.Parse(DateTime.Now.ToString("MM"));
diff --git a/Correlator/ViewModel/AudioFileViewModel.cs b/Correlator/ViewModel/AudioFileViewModel.cs
index d8b3c95..081a75e 100644
--- a/Correlator/ViewModel/AudioFileViewModel.cs
+++ b/Correlator/ViewModel/AudioFileViewModel.cs
@@ -125,7 +125,7 @@
FileName = file.Name.Substring(0, file.Name.IndexOf(".", StringComparison.Ordinal)),
PersonLiable = "",
FullPath = Constant.GetAudioDir() + "\\" + file.Name,
- FileSize = SizeUtil.FormatFileSize(file.Length),
+ FileSize = file.Length.FormatFileSize(),
CreationTime = file.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")
}).ToList();
}
diff --git a/Correlator/ViewModel/EditFilterViewModel.cs b/Correlator/ViewModel/EditFilterViewModel.cs
index 134344c..c78e813 100644
--- a/Correlator/ViewModel/EditFilterViewModel.cs
+++ b/Correlator/ViewModel/EditFilterViewModel.cs
@@ -4,6 +4,7 @@
using System.Windows;
using Correlator.Dialog;
using Correlator.Model;
+using Correlator.Service;
using Correlator.Util;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
@@ -16,6 +17,7 @@
{
public RelayCommand DetermineParamCommand { get; set; }
+ private readonly ISoundSpeedDataService _dataService;
private PipeMaterialModel _materialModel;
private string _materialName;
@@ -78,8 +80,9 @@
}
}
- public EditFilterViewModel()
+ public EditFilterViewModel(ISoundSpeedDataService dataService)
{
+ _dataService = dataService;
Messenger.Default.Register(this, MessengerToken.EditFilter, it =>
{
MaterialName = it.ChineseMaterial;
@@ -88,49 +91,48 @@
_materialModel = it;
});
- DetermineParamCommand = new RelayCommand(it =>
+ DetermineParamCommand = new RelayCommand(EditFilter);
+ }
+
+ private void EditFilter(EditFilterDialog it)
+ {
+ if (string.IsNullOrEmpty(_lowFrequency) || string.IsNullOrEmpty(_highFrequency))
{
- if (string.IsNullOrEmpty(_lowFrequency) || string.IsNullOrEmpty(_highFrequency))
- {
- MessageBox.Show("请输入完整的干扰频段",
- "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
+ MessageBox.Show("请输入完整的干扰频段", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
- if (!(Regex.IsMatch(_lowFrequency, "^([1-9][0-9]*)$") &&
- Regex.IsMatch(_highFrequency, "^([1-9][0-9]*)$")))
- {
- MessageBox.Show("输入格式错误,请重新输入",
- "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
+ if (!(Regex.IsMatch(_lowFrequency, "^([1-9][0-9]*)$") &&
+ Regex.IsMatch(_highFrequency, "^([1-9][0-9]*)$")))
+ {
+ MessageBox.Show("输入格式错误,请重新输入", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
- var low = Convert.ToInt32(_lowFrequency);
- var high = Convert.ToInt32(_highFrequency);
+ var low = Convert.ToInt32(_lowFrequency);
+ var high = Convert.ToInt32(_highFrequency);
- if (low < 100 || low > 3000 || high < 100 || high > 3000 || low >= high)
- {
- MessageBox.Show("频段范围100-3000Hz,请重新输入",
- "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
+ if (low < 100 || low > 3000 || high < 100 || high > 3000 || low >= high)
+ {
+ MessageBox.Show("频段范围100-3000Hz,请重新输入", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
- //声速
- var soundVelocity = MaterialManager.GetSoundVelocity(
- _materialModel.ChineseMaterial, Convert.ToInt32(_materialModel.Diameter)
- );
- LogWithConsole.WriteLine("正在修改的管材是:" + _materialModel.Diameter + "m的" + _materialModel.ChineseMaterial +
- "声速是 => " + soundVelocity, "EditFilterViewModel");
+ //声速
+ var soundVelocity = _dataService.GetSoundVelocity(
+ _materialModel.ChineseMaterial, Convert.ToInt32(_materialModel.Diameter)
+ );
+ LogWithConsole.WriteLine("正在修改的管材是:" + _materialModel.Diameter + "m的" + _materialModel.ChineseMaterial +
+ "声速是 => " + soundVelocity, "EditFilterViewModel");
- _materialModel.SoundSpeed = soundVelocity;
- _materialModel.LowFrequency = low;
- _materialModel.HighFrequency = high;
- _materialModel.IsReady = true;
+ _materialModel.SoundSpeed = soundVelocity;
+ _materialModel.LowFrequency = low;
+ _materialModel.HighFrequency = high;
+ _materialModel.IsReady = true;
- Messenger.Default.Send(_materialModel, MessengerToken.StartCalculate);
- // 参数确定好之后,关闭自身和上一级窗口
- it.Close();
- });
+ Messenger.Default.Send(_materialModel, MessengerToken.StartCalculate);
+ // 参数确定好之后,关闭自身和上一级窗口
+ it.Close();
}
}
}
\ No newline at end of file
diff --git a/Correlator/ViewModel/EditMaterialNameViewModel.cs b/Correlator/ViewModel/EditMaterialNameViewModel.cs
index 4127a57..b9aa02c 100644
--- a/Correlator/ViewModel/EditMaterialNameViewModel.cs
+++ b/Correlator/ViewModel/EditMaterialNameViewModel.cs
@@ -13,6 +13,7 @@
public class EditMaterialNameViewModel : ViewModelBase
{
private readonly IMaterialNameDataService _dataService;
+ private readonly IPipeMaterialDataService _materialDataService;
private int _materialId;
private string _materialNewName;
@@ -29,9 +30,11 @@
public RelayCommand DetermineParamCommand { get; set; }
- public EditMaterialNameViewModel(IMaterialNameDataService dataService)
+ public EditMaterialNameViewModel(IMaterialNameDataService dataService,
+ IPipeMaterialDataService materialDataService)
{
_dataService = dataService;
+ _materialDataService = materialDataService;
Messenger.Default.Register(this, MessengerToken.EditMaterialName, it => { _materialId = it; });
DetermineParamCommand = new RelayCommand(DetermineParam);
@@ -46,8 +49,10 @@
return;
}
- if (MaterialManager.InitPipeMaterial().Any(
- material => _materialNewName.Equals(material.ChineseMaterial) || _materialNewName.Equals(material.EnglishMaterial))
+ var materialModels = _materialDataService.GetPipeMaterial();
+ if (materialModels.Any(
+ material => _materialNewName.Equals(material.ChineseMaterial) ||
+ _materialNewName.Equals(material.EnglishMaterial))
)
{
MessageBox.Show("该名称已存在,请重新输入",
diff --git a/Correlator/ViewModel/PictureFileViewModel.cs b/Correlator/ViewModel/PictureFileViewModel.cs
index 77df248..d5fdff7 100644
--- a/Correlator/ViewModel/PictureFileViewModel.cs
+++ b/Correlator/ViewModel/PictureFileViewModel.cs
@@ -129,7 +129,7 @@
FileName = file.Name.Substring(0, file.Name.IndexOf(".", StringComparison.Ordinal)),
PersonLiable = "",
FullPath = Constant.GetPictureDir() + "\\" + file.Name,
- FileSize = SizeUtil.FormatFileSize(file.Length),
+ FileSize = file.Length.FormatFileSize(),
CreationTime = file.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")
}).ToList();
}