Сообщение от
Новикова Маргарита
Добрый день!
Попробуйте пример во вложении.
Приветствую!
Мой код:
Код:
public static string OwenReadDiscreteInputs(string comPortNumber)
{
/*
* Discrete Inputs Map:
* Input #1 - Barrier Open State;
* Input #2 - Barrier Close State;
*/
byte[] discreteInputs = new byte[] { 0,0 };
string barrierState = "0";
SerialPortStreamAdapter port = new SerialPortStreamAdapter(comPortNumber, 9600, Parity.None, 8, StopBits.One);
try
{
port.Open();
}
catch(System.IO.IOException)
{
string result = System.String.Format("Ошибка открытия порта {0}", comPortNumber);
return result;
}
var owenProtocol = OwenProtocolMaster.Create(port);
discreteInputs = owenProtocol.OwenRead(16, AddressLengthType.Bits8, "r.Cn");
// Barrier Open/Closed State checking
if((discreteInputs[1] & 0b00000001) == 0b00000001) // Barrier Open
{
barrierState = "Open";
}
else if((discreteInputs[1] & 0b00000010) == 0b00000010) // Barrier Closed
{
barrierState = "Closed";
}
// var discreteInputsString = ConverterAscii.ConvertBack(discreteInputs);
owenProtocol.CloseSerialPort();
owenProtocol.Dispose();
return barrierState;
}
Ошибка в части
Код:
var owenProtocol = OwenProtocolMaster.Create(port);
так как данный метод использует
Код:
public static IOwenProtocolMaster Create(SerialPort serialPort, IPackageLogger logging = null);
(класс OwenProtocolMaster.cs) значение "SerialPort", мне необходимо заменить на "SerialPortStream". Использую фреймворк RJCP.IO.Ports вместо System.IO.Ports.
Как стоит поступить? Можно ли переписать класс OwenProtocolMaster.cs?
p.s. в с# я сосвем еще плох)