serialport communication timeout added
This commit is contained in:
parent
661201617c
commit
e1a5aa3b2f
|
|
@ -27,7 +27,11 @@ public class SerialPortChannel : ConnectionChannel<SerialPort>
|
||||||
|
|
||||||
_Open = () =>
|
_Open = () =>
|
||||||
{
|
{
|
||||||
var serialPort = new SerialPort(portName, baudRate, parity, dataBits, sb);
|
var serialPort = new SerialPort(portName, baudRate, parity, dataBits, sb)
|
||||||
|
{
|
||||||
|
ReadTimeout = 1000, // milliseconds
|
||||||
|
WriteTimeout = 1000 // milliseconds
|
||||||
|
};
|
||||||
serialPort.Open();
|
serialPort.Open();
|
||||||
return serialPort;
|
return serialPort;
|
||||||
};
|
};
|
||||||
|
|
@ -40,18 +44,29 @@ public class SerialPortChannel : ConnectionChannel<SerialPort>
|
||||||
protected override IReadOnlyList<Byte> Read(SerialPort serialPort, Int32 nBytes)
|
protected override IReadOnlyList<Byte> Read(SerialPort serialPort, Int32 nBytes)
|
||||||
{
|
{
|
||||||
var buffer = new Byte[nBytes];
|
var buffer = new Byte[nBytes];
|
||||||
|
|
||||||
var bytesReceived = 0;
|
var bytesReceived = 0;
|
||||||
do
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
var received = serialPort.Read(buffer, bytesReceived, nBytes - bytesReceived);
|
do
|
||||||
if (received < 0)
|
{
|
||||||
throw new NotConnectedException("Serial Connection has been closed");
|
//Console.WriteLine($"🔧 Waiting for {nBytes} bytes...");
|
||||||
|
var received = serialPort.Read(buffer, bytesReceived, nBytes - bytesReceived);
|
||||||
|
//Console.WriteLine($"✅ Received {bytesReceived} bytes so far");
|
||||||
|
|
||||||
|
if (received < 0)
|
||||||
|
throw new NotConnectedException("Serial Connection has been closed");
|
||||||
|
|
||||||
|
bytesReceived += received;
|
||||||
|
}
|
||||||
|
while (bytesReceived < nBytes);
|
||||||
|
|
||||||
bytesReceived += received;
|
|
||||||
}
|
}
|
||||||
while (bytesReceived < nBytes);
|
catch (TimeoutException)
|
||||||
|
{
|
||||||
|
throw new IOException("Serial read timed out");
|
||||||
|
|
||||||
|
}
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue