This commit is contained in:
nikzori
2024-12-09 17:58:37 +03:00
parent 38fb1dfa84
commit edf447db75
5 changed files with 19 additions and 7 deletions

View File

@@ -87,7 +87,7 @@ namespace Gidrolock_Modbus_Scanner
public async Task PollForEntry(Entry entry) public async Task PollForEntry(Entry entry)
{ {
byte[] message = new byte[7]; byte[] message = new byte[9];
Console.WriteLine("Sending message: " + Modbus.ByteArrayToString(Modbus.BuildMessage(slaveID, (byte)entry.registerType, entry.address, entry.length, ref message))); Console.WriteLine("Sending message: " + Modbus.ByteArrayToString(Modbus.BuildMessage(slaveID, (byte)entry.registerType, entry.address, entry.length, ref message)));
var send = await Modbus.ReadRegAsync(port, slaveID, (FunctionCode)entry.registerType, entry.address, entry.length); var send = await Modbus.ReadRegAsync(port, slaveID, (FunctionCode)entry.registerType, entry.address, entry.length);
isAwaitingResponse = true; isAwaitingResponse = true;
@@ -125,7 +125,7 @@ namespace Gidrolock_Modbus_Scanner
port.Read(message, i + 3, 1); port.Read(message, i + 3, 1);
} }
byte[] data = new byte[length]; byte[] data = new byte[length];
for (int i = 0; i < length - 2; i++) for (int i = 0; i < length; i++)
{ {
data[i] = message[i+3]; data[i] = message[i+3];
} }

View File

@@ -40,5 +40,5 @@ namespace Gidrolock_Modbus_Scanner
this.readOnce = readOnce; this.readOnce = readOnce;
} }
} }
public enum RegisterType { Coil, Discrete, Holding, Input } public enum RegisterType { Coil = 1, Discrete = 2, Holding = 3, Input = 4}
} }

View File

@@ -280,6 +280,8 @@ namespace Gidrolock_Modbus_Scanner
void PortDataReceived(object sender, EventArgs e) void PortDataReceived(object sender, EventArgs e)
{ {
if (datasheet is null)
return;
if (datasheet.Enabled) if (datasheet.Enabled)
return; return;
@@ -329,7 +331,7 @@ namespace Gidrolock_Modbus_Scanner
private async void Button_SendCommand_Click(object sender, EventArgs e) private async void Button_SendCommand_Click(object sender, EventArgs e)
{ {
FunctionCode functionCode = (FunctionCode)CBox_Function.SelectedIndex; FunctionCode functionCode = (FunctionCode)CBox_Function.SelectedIndex + 1;
ushort address = (ushort)UpDown_RegAddress.Value; ushort address = (ushort)UpDown_RegAddress.Value;
ushort length = (ushort)UpDown_RegLength.Value; ushort length = (ushort)UpDown_RegLength.Value;
@@ -427,4 +429,4 @@ namespace Gidrolock_Modbus_Scanner
} }
} }
public enum FunctionCode { ReadCoil, ReadDiscrete, ReadHolding, ReadInput, WriteCoil, WriteRegister, WriteMultCoils, WriteMultRegisters }; public enum FunctionCode { ReadCoil = 1, ReadDiscrete = 2, ReadHolding = 3, ReadInput = 4, WriteCoil = 5, WriteRegister = 6, WriteMultCoils = 15, WriteMultRegisters = 16};

View File

@@ -48,7 +48,7 @@ namespace Gidrolock_Modbus_Scanner
byte[] message = new byte[8]; byte[] message = new byte[8];
//Build outgoing modbus message: //Build outgoing modbus message:
BuildMessage(slaveID, (byte)(1 + (int)functionCode), address, length, ref message); BuildMessage(slaveID, (byte)functionCode, address, length, ref message);
//Send modbus message to Serial Port: //Send modbus message to Serial Port:
try try

View File

@@ -53,7 +53,17 @@
### To-Do ### To-Do
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> `.json` <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> `.json` <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
```js
"checkEntry": {
"registerType": "input"
"address": 200,
"length": 6,
"dataType": "string"
"expectedValue": "SWT485"
}
```
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Modbus TCP 3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Modbus TCP