49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.IO.Ports;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Xml;
|
|
|
|
|
|
namespace Gidrolock_Modbus_Scanner
|
|
{
|
|
public partial class Datasheet : Form
|
|
{
|
|
byte modbusID;
|
|
Device device;
|
|
|
|
SerialPort port = Modbus.port;
|
|
bool isPolling = false;
|
|
bool isAwaitingResponse = false;
|
|
byte[] message = new byte[255];
|
|
|
|
public Datasheet(byte modbusID, Device device)
|
|
{
|
|
nudModbusID.Minimum = 1;
|
|
nudModbusID.Maximum = 246;
|
|
this.modbusID = modbusID;
|
|
this.device = device;
|
|
}
|
|
|
|
private async void buttonSetID_Click(object sender, EventArgs e)
|
|
{
|
|
Modbus.WriteSingleAsync(FunctionCode.WriteRegister, modbusID, 200, (byte)nudModbusID.Value);
|
|
byte[] data = null;
|
|
Modbus.ResponseReceived += (sndr, msg) =>
|
|
{
|
|
data = msg.Data;
|
|
};
|
|
await Task.Run(() =>
|
|
{
|
|
while (data is null) { continue; }
|
|
if (message[1] > 0x10) //exception code check
|
|
return;
|
|
|
|
});
|
|
}
|
|
}
|
|
} |