1
0
mirror of https://github.com/zhaopeiym/IoTClient synced 2025-10-19 22:14:31 +08:00

add Modbus Connected

This commit is contained in:
BennyZhao 2022-05-20 08:06:04 +08:00
parent 51e746fd87
commit 792be4e182
5 changed files with 49 additions and 9 deletions

View File

@ -14,6 +14,11 @@ namespace IoTClient.Clients.Modbus
protected EndianFormat format;
private bool plcAddresses;
/// <summary>
/// 是否是连接的
/// </summary>
public bool Connected => serialPort?.IsOpen ?? false;
/// <summary>
/// 警告日志委托
/// </summary>
@ -946,7 +951,7 @@ namespace IoTClient.Clients.Modbus
public byte[] GetReadCommand(string address, byte stationNumber, byte functionCode, ushort length)
{
var readAddress = ushort.Parse(address?.Trim());
if (plcAddresses) readAddress = Convert.ToUInt16(readAddress % 10000 - 1);
if (plcAddresses) readAddress = (ushort)(Convert.ToUInt16(address?.Trim().Substring(1)) - 1);
byte[] buffer = new byte[6];
buffer[0] = stationNumber; //站号
@ -969,7 +974,7 @@ namespace IoTClient.Clients.Modbus
public byte[] GetWriteCommand(string address, byte[] values, byte stationNumber, byte functionCode)
{
var writeAddress = ushort.Parse(address?.Trim());
if (plcAddresses) writeAddress = Convert.ToUInt16(writeAddress % 10000 - 1);
if (plcAddresses) writeAddress = (ushort)(Convert.ToUInt16(address?.Trim().Substring(1)) - 1);
byte[] buffer = new byte[7 + values.Length];
buffer[0] = stationNumber; //站号
@ -994,7 +999,7 @@ namespace IoTClient.Clients.Modbus
public byte[] GetWriteCoilCommand(string address, bool value, byte stationNumber, byte functionCode)
{
var writeAddress = ushort.Parse(address?.Trim());
if (plcAddresses) writeAddress = Convert.ToUInt16(writeAddress % 10000 - 1);
if (plcAddresses) writeAddress = (ushort)(Convert.ToUInt16(address?.Trim().Substring(1)) - 1);
byte[] buffer = new byte[6];
buffer[0] = stationNumber;//站号

View File

@ -14,6 +14,11 @@ namespace IoTClient.Clients.Modbus
/// </summary>
LoggerDelegate WarningLog { get; set; }
/// <summary>
/// 是否是连接的
/// </summary>
bool Connected { get; }
/// <summary>
/// 打开连接
/// </summary>

View File

@ -20,6 +20,11 @@ namespace IoTClient.Clients.Modbus
private EndianFormat format;
private bool plcAddresses;
/// <summary>
/// 是否是连接的
/// </summary>
public bool Connected => socket?.Connected ?? false;
/// <summary>
///
/// </summary>
@ -1359,7 +1364,7 @@ namespace IoTClient.Clients.Modbus
public byte[] GetReadCommand(string address, byte stationNumber, byte functionCode, ushort length, byte[] check = null)
{
var readAddress = ushort.Parse(address?.Trim());
if (plcAddresses) readAddress = Convert.ToUInt16(readAddress % 10000 - 1);
if (plcAddresses) readAddress = (ushort)(Convert.ToUInt16(address?.Trim().Substring(1)) - 1);
byte[] buffer = new byte[12];
buffer[0] = check?[0] ?? 0x19;
@ -1389,7 +1394,7 @@ namespace IoTClient.Clients.Modbus
public byte[] GetWriteCommand(string address, byte[] values, byte stationNumber, byte functionCode, byte[] check = null)
{
var writeAddress = ushort.Parse(address?.Trim());
if (plcAddresses) writeAddress = Convert.ToUInt16(writeAddress % 10000 - 1);
if (plcAddresses) writeAddress = (ushort)(Convert.ToUInt16(address?.Trim().Substring(1)) - 1);
byte[] buffer = new byte[13 + values.Length];
buffer[0] = check?[0] ?? 0x19;
@ -1419,7 +1424,7 @@ namespace IoTClient.Clients.Modbus
public byte[] GetWriteCoilCommand(string address, bool value, byte stationNumber, byte functionCode, byte[] check = null)
{
var writeAddress = ushort.Parse(address?.Trim());
if (plcAddresses) writeAddress = Convert.ToUInt16(writeAddress % 10000 - 1);
if (plcAddresses) writeAddress = (ushort)(Convert.ToUInt16(address?.Trim().Substring(1)) - 1);
byte[] buffer = new byte[12];
buffer[0] = check?[0] ?? 0x19;

View File

@ -19,6 +19,11 @@ namespace IoTClient.Clients.Modbus
private EndianFormat format;
private bool plcAddresses;
/// <summary>
/// 是否是连接的
/// </summary>
public bool Connected => socket?.Connected ?? false;
/// <summary>
/// 构造函数
/// </summary>
@ -1126,7 +1131,7 @@ namespace IoTClient.Clients.Modbus
public byte[] GetReadCommand(string address, byte stationNumber, byte functionCode, ushort length)
{
var readAddress = ushort.Parse(address?.Trim());
if (plcAddresses) readAddress = Convert.ToUInt16(readAddress % 10000 - 1);
if (plcAddresses) readAddress = (ushort)(Convert.ToUInt16(address?.Trim().Substring(1)) - 1);
byte[] buffer = new byte[6];
buffer[0] = stationNumber; //站号
@ -1149,7 +1154,7 @@ namespace IoTClient.Clients.Modbus
public byte[] GetWriteCommand(string address, byte[] values, byte stationNumber, byte functionCode)
{
var writeAddress = ushort.Parse(address?.Trim());
if (plcAddresses) writeAddress = Convert.ToUInt16(writeAddress % 10000 - 1);
if (plcAddresses) writeAddress = (ushort)(Convert.ToUInt16(address?.Trim().Substring(1)) - 1);
byte[] buffer = new byte[7 + values.Length];
buffer[0] = stationNumber; //站号
@ -1174,7 +1179,7 @@ namespace IoTClient.Clients.Modbus
public byte[] GetWriteCoilCommand(string address, bool value, byte stationNumber, byte functionCode)
{
var writeAddress = ushort.Parse(address?.Trim());
if (plcAddresses) writeAddress = Convert.ToUInt16(writeAddress % 10000 - 1);
if (plcAddresses) writeAddress = (ushort)(Convert.ToUInt16(address?.Trim().Substring(1)) - 1);
byte[] buffer = new byte[6];
buffer[0] = stationNumber;//站号

View File

@ -4,6 +4,11 @@
<name>IoTClient</name>
</assembly>
<members>
<member name="P:IoTClient.Clients.Modbus.ModbusSerialBase.Connected">
<summary>
是否是连接的
</summary>
</member>
<member name="P:IoTClient.Clients.Modbus.ModbusSerialBase.WarningLog">
<summary>
警告日志委托
@ -366,6 +371,11 @@
为了可用性,会对异常网络进行重试。此类日志通过委托接口给出去。
</summary>
</member>
<member name="P:IoTClient.Clients.Modbus.IModbusClient.Connected">
<summary>
是否是连接的
</summary>
</member>
<member name="M:IoTClient.Clients.Modbus.IModbusClient.Open">
<summary>
打开连接
@ -775,6 +785,11 @@
Tcp的方式发送ModbusRtu协议报文 - 客户端
</summary>
</member>
<member name="P:IoTClient.Clients.Modbus.ModbusRtuOverTcpClient.Connected">
<summary>
是否是连接的
</summary>
</member>
<member name="M:IoTClient.Clients.Modbus.ModbusRtuOverTcpClient.#ctor(System.String,System.Int32,System.Int32,IoTClient.Enums.EndianFormat,System.Boolean)">
<summary>
构造函数
@ -1133,6 +1148,11 @@
ModbusTcp协议客户端
</summary>
</member>
<member name="P:IoTClient.Clients.Modbus.ModbusTcpClient.Connected">
<summary>
是否是连接的
</summary>
</member>
<member name="M:IoTClient.Clients.Modbus.ModbusTcpClient.#ctor(System.Net.IPEndPoint,System.Int32,IoTClient.Enums.EndianFormat,System.Boolean)">
<summary>