Initial commit
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
namespace Common.Hardware.Ports
|
||||
{
|
||||
using System;
|
||||
|
||||
public class UniProSerialPort : SerialPortBase
|
||||
{
|
||||
public UniProSerialPort(SerialPortSettings settings) : base(settings)
|
||||
{
|
||||
}
|
||||
|
||||
public override Byte[] Write(params Byte[] data)
|
||||
{
|
||||
var _data = new Byte[0];
|
||||
|
||||
if (data.TryParseToUniPro(out var bytes))
|
||||
{
|
||||
var repeatsCount = 3;
|
||||
|
||||
for (var i = 0; i < repeatsCount; i++)
|
||||
{
|
||||
this.Write(bytes, 0, bytes.Length, 50);
|
||||
|
||||
var answerd = false;
|
||||
var buffer = new Byte[0];
|
||||
var readsCount = 3;
|
||||
|
||||
while (readsCount-- >= 0)
|
||||
{
|
||||
var _bytes = this.Read();
|
||||
var bytesLength = _bytes.Length;
|
||||
var bufferLength = buffer.Length;
|
||||
|
||||
Array.Resize(ref buffer, bufferLength + bytesLength);
|
||||
Array.Copy(_bytes, 0, buffer, bufferLength, bytesLength);
|
||||
|
||||
if (buffer.TryParseFromUniPro(out _data))
|
||||
{
|
||||
answerd = true;
|
||||
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.LogMessage($"Cannot parse: {BitConverter.ToString(buffer)} - from UniPro message.");
|
||||
}
|
||||
}
|
||||
|
||||
if (answerd)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.LogMessage($"Cannot convert: {BitConverter.ToString(bytes)} - to UniPro message.");
|
||||
}
|
||||
|
||||
return _data;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user