1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| private void btnReadCoils_Click(object sender, EventArgs e)
{
try
{
byte slaveAddress = 1;
byte function = 1;
ushort startAddress = 1536; // 10 decimal = A hexa
uint numberOfPoints = 16; // 13 decimal = D hexa
byte[] frame = ReadCoilsMsg(slaveAddress, startAddress, function, numberOfPoints);
txtSendMsg.Text = Display(frame);
if (serialPort1.IsOpen)
{
serialPort1.Write(frame, 0, frame.Length);
Thread.Sleep(100); // Delay 100ms
if (serialPort1.BytesToRead >= 5)
{
byte[] bufferReceiver = new byte[this.serialPort1.BytesToRead];
serialPort1.Read(bufferReceiver, 0, serialPort1.BytesToRead);
serialPort1.DiscardInBuffer();
txtReceiMsg.Text = Display(bufferReceiver);
// Process data.
byte[] data = new byte[bufferReceiver.Length - 5];
Array.Copy(bufferReceiver, 3, data, 0, data.Length);
bool[] temp = ByteToBool(data);
string result = string.Empty;
foreach (var item in temp)
{
result += string.Format("{0} ", item);
}
txtResult.Text = result;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} |