Alter Endian from enum to partial class

This commit is contained in:
luosheng
2023-06-27 19:33:08 +08:00
parent 7707ca7719
commit 32eb4a9afd
14 changed files with 164 additions and 106 deletions

View File

@@ -16,7 +16,7 @@ namespace Modbus.Net.Modbus.SelfDefinedSample
/// <param name="masterAddress">主站号</param>
/// <param name="endian">端格式</param>
public ModbusUtilityTime(int connectionType, byte slaveAddress, byte masterAddress,
Endian endian = Endian.BigEndianLsb)
Endian endian)
: base(connectionType, slaveAddress, masterAddress, endian)
{
}
@@ -30,7 +30,7 @@ namespace Modbus.Net.Modbus.SelfDefinedSample
/// <param name="masterAddress">主站号</param>
/// <param name="endian">端格式</param>
public ModbusUtilityTime(ModbusType connectionType, string connectionString, byte slaveAddress, byte masterAddress,
Endian endian = Endian.BigEndianLsb)
Endian endian)
: base(connectionType, connectionString, slaveAddress, masterAddress, endian)
{
}

View File

@@ -22,7 +22,7 @@ namespace Modbus.Net.Modbus
/// <param name="endian">端格式</param>
public ModbusMachine(TKey id, ModbusType connectionType, string connectionString,
IEnumerable<AddressUnit<TUnitKey>> getAddresses, bool keepConnect, byte slaveAddress, byte masterAddress,
Endian endian = Endian.BigEndianLsb)
Endian endian)
: base(id, getAddresses, keepConnect, slaveAddress, masterAddress)
{
BaseUtility = new ModbusUtility(connectionType, connectionString, slaveAddress, masterAddress, endian);
@@ -43,7 +43,7 @@ namespace Modbus.Net.Modbus
/// <param name="endian">端格式</param>
public ModbusMachine(TKey id, ModbusType connectionType, string connectionString,
IEnumerable<AddressUnit<TUnitKey>> getAddresses, byte slaveAddress, byte masterAddress,
Endian endian = Endian.BigEndianLsb)
Endian endian)
: this(id, connectionType, connectionString, getAddresses, true, slaveAddress, masterAddress, endian)
{
}

View File

@@ -79,7 +79,7 @@ namespace Modbus.Net.Modbus
/// <param name="masterAddress">主站号</param>
/// <param name="endian">端格式</param>
public ModbusUtility(int connectionType, byte slaveAddress, byte masterAddress,
Endian endian = Endian.BigEndianLsb)
Endian endian)
: base(slaveAddress, masterAddress)
{
Endian = endian;
@@ -97,7 +97,7 @@ namespace Modbus.Net.Modbus
/// <param name="masterAddress">主站号</param>
/// <param name="endian">端格式</param>
public ModbusUtility(ModbusType connectionType, string connectionString, byte slaveAddress, byte masterAddress,
Endian endian = Endian.BigEndianLsb)
Endian endian)
: base(slaveAddress, masterAddress)
{
Endian = endian;

View File

@@ -67,7 +67,7 @@ namespace Modbus.Net
}
case "endian":
{
paramsSet.Add(FastEnum.Parse<Endian>(dic["endian"]));
paramsSet.Add(Endian.Parse(dic["endian"]));
break;
}
default:

View File

@@ -0,0 +1,145 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Modbus.Net
{
/// <summary>
/// 端格式
/// </summary>
public partial class Endian
{
/// <summary>
/// 小端
/// </summary>
public const int LittleEndianLsb = 1;
/// <summary>
/// 大端-大端位
/// </summary>
public const int BigEndianLsb = 2;
/// <summary>
/// 大端-大端位
/// </summary>
public const int BigEndianMsb = 3;
#pragma warning disable
protected int Value { get; set; }
protected Endian(int value)
{
Value = value;
}
public static implicit operator int(Endian endian)
{
return endian.Value;
}
public static implicit operator Endian(int value)
{
return new Endian(value);
}
public static implicit operator Endian(string value)
{
return Endian.Parse(value);
}
public static implicit operator string(Endian endian)
{
return endian.ToString();
}
public static Endian Parse(string value)
{
if (typeof(Endian).GetField(value) != null)
{
return (int)typeof(Endian).GetField(value).GetValue(null);
}
throw new NotSupportedException("Endian name " + value + " is not supported.");
}
public override string ToString()
{
foreach (var field in typeof(Endian).GetFields())
{
if ((int)field.GetValue(null) == Value)
{
return field.Name;
}
}
return null;
}
#pragma warning restore
}
/// <summary>
/// 读写设备值的方式
/// </summary>
public enum MachineDataType
{
/// <summary>
/// 地址
/// </summary>
Address,
/// <summary>
/// 通讯标识
/// </summary>
CommunicationTag,
/// <summary>
/// 名称
/// </summary>
Name,
/// <summary>
/// Id
/// </summary>
Id
}
/// <summary>
/// 波特率
/// </summary>
public enum BaudRate
{
#pragma warning disable
BaudRate75 = 75,
BaudRate110 = 110,
BaudRate134 = 134,
BaudRate150 = 150,
BaudRate300 = 300,
BaudRate600 = 600,
BaudRate1200 = 1200,
BaudRate1800 = 1800,
BaudRate2400 = 2400,
BaudRate4800 = 4800,
BaudRate9600 = 9600,
BaudRate14400 = 14400,
BaudRate19200 = 19200,
BaudRate38400 = 38400,
BaudRate57600 = 57600,
BaudRate115200 = 115200,
BaudRate128000 = 128000,
BaudRate230400 = 230400,
BaudRate460800 = 460800,
BaudRate921600 = 921600,
#pragma warning restore
}
/// <summary>
/// 数据位
/// </summary>
public enum DataBits
{
#pragma warning disable
Seven = 7,
Eight = 8,
#pragma warning restore
}
}

View File

@@ -3,46 +3,6 @@ using System.IO.Ports;
namespace Modbus.Net
{
/// <summary>
/// 波特率
/// </summary>
public enum BaudRate
{
#pragma warning disable
BaudRate75 = 75,
BaudRate110 = 110,
BaudRate134 = 134,
BaudRate150 = 150,
BaudRate300 = 300,
BaudRate600 = 600,
BaudRate1200 = 1200,
BaudRate1800 = 1800,
BaudRate2400 = 2400,
BaudRate4800 = 4800,
BaudRate9600 = 9600,
BaudRate14400 = 14400,
BaudRate19200 = 19200,
BaudRate38400 = 38400,
BaudRate57600 = 57600,
BaudRate115200 = 115200,
BaudRate128000 = 128000,
BaudRate230400 = 230400,
BaudRate460800 = 460800,
BaudRate921600 = 921600,
#pragma warning restore
}
/// <summary>
/// 数据位
/// </summary>
public enum DataBits
{
#pragma warning disable
Seven = 7,
Eight = 8,
#pragma warning restore
}
/// <summary>
/// 串口连接对象
/// </summary>

View File

@@ -6,32 +6,6 @@ using System.Threading.Tasks;
namespace Modbus.Net
{
/// <summary>
/// 读写设备值的方式
/// </summary>
public enum MachineDataType
{
/// <summary>
/// 地址
/// </summary>
Address,
/// <summary>
/// 通讯标识
/// </summary>
CommunicationTag,
/// <summary>
/// 名称
/// </summary>
Name,
/// <summary>
/// Id
/// </summary>
Id
}
/// <summary>
/// 设备
/// </summary>

View File

@@ -4,27 +4,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
/// <summary>
/// 端格式
/// </summary>
public enum Endian
{
/// <summary>
/// 小端
/// </summary>
LittleEndianLsb,
/// <summary>
/// 大端-小端位
/// </summary>
BigEndianLsb,
/// <summary>
/// 大端-大端位
/// </summary>
BigEndianMsb
}
namespace Modbus.Net
{
/// <summary>