develop
soul liu 2 years ago
parent 2c7008d513
commit fe63ba7b73
  1. 0
      General/Soul2.General.csproj
  2. 18
      SerialPort/Soul2.SerialPort.csproj
  3. 39
      SerialPort/utils/GodSerialPortUtils.cs
  4. 8
      Soul2-Library.sln

@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RootNamespace>Soul2.$(MSBuildProjectName.Replace(" ", "_"))</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="GodSharp.SerialPort" Version="1.2.0.6" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\General\Soul2.General.csproj" />
</ItemGroup>
</Project>

@ -9,10 +9,9 @@ using GodSharp.SerialPort;
using System.IO.Ports;
using System.Text.RegularExpressions;
namespace Soul2.General.utils {
namespace Soul2.SerialPort.utils {
/// <summary>
/// 串口通信工具类
/// 需要TimerUtils
/// </summary>
public static class GodSerialPortUtils {
@ -42,17 +41,22 @@ namespace Soul2.General.utils {
/// 查询所有可用串口
/// </summary>
/// <returns>串口名称数组</returns>
public static string[] find() {
return SerialPort.GetPortNames();
}
public static string[] find() => System.IO.Ports.SerialPort.GetPortNames();
/// <summary>
/// 当前连接状态
/// </summary>
/// <returns></returns>
public static bool status() {
return gsp != null && gsp.IsOpen != false;
}
public static bool status() => (gsp != null && gsp.IsOpen != false);
/// <summary>
/// 发送报文信息
/// </summary>
/// <param name="data">发送的内容</param>
/// <param name="callback">回调函数,参数为byte[]类型的回信</param>
/// <param name="wait_complete">是否等待回信完成再执行回调函数,默认为否</param>
/// <exception cref="Exception"></exception>
public static void send(string data, Action<byte[]> callback = null, bool wait_complete = false) => send(data.HexToByte(), callback, wait_complete);
/// <summary>
/// 发送报文信息
@ -142,5 +146,24 @@ namespace Soul2.General.utils {
return hexBytes.ToHexString();
}
/// <summary>
/// 计算校验码
/// </summary>
/// <param name="msg">当前报文,不应包含校验码的部分</param>
/// <returns></returns>
public static string CalcChecksum(string msg) {
if (msg.StartsWith("FE FE FE FE ")) {
msg = msg.Replace("FE FE FE FE ", "");
}
// 检查输入字符串是否符合要求
if (!Regex.IsMatch(msg, @"^[\da-fA-F]{2}( [\da-fA-F]{2})*$")) {
return "==";
}
var bts = msg.Split(' ').Select(b => Convert.ToInt32(b, 16)).ToArray();
var r = (bts.Sum() % 256).ToString("X2");
return r;
}
}
}

@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33530.505
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "General", "General\General.csproj", "{8B24AB73-0D6F-426D-92D3-25CBE6ED718E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Soul2.General", "General\Soul2.General.csproj", "{8B24AB73-0D6F-426D-92D3-25CBE6ED718E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Soul2.SerialPort", "SerialPort\Soul2.SerialPort.csproj", "{B2EFA26A-A2CF-4090-85FD-31085D7A1A65}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -15,6 +17,10 @@ Global
{8B24AB73-0D6F-426D-92D3-25CBE6ED718E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8B24AB73-0D6F-426D-92D3-25CBE6ED718E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B24AB73-0D6F-426D-92D3-25CBE6ED718E}.Release|Any CPU.Build.0 = Release|Any CPU
{B2EFA26A-A2CF-4090-85FD-31085D7A1A65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B2EFA26A-A2CF-4090-85FD-31085D7A1A65}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B2EFA26A-A2CF-4090-85FD-31085D7A1A65}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B2EFA26A-A2CF-4090-85FD-31085D7A1A65}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

Loading…
Cancel
Save