Я пытаюсь собрать межплатформенное приложение, которое взаимодействует с оборудованием автоматизации Insteon. В примерах на основе .NET, которые я нашел, класс System.IO.Ports.SerialPort используется для чтения данных как с устройства на базе последовательного порта RS-232, так и с USB-последовательного модема. На платформе Windows серийные модемы обычно сопоставляются с виртуальным COM-портом, и не сложно запускать список, передавать новые COM-адреса и пытаться выяснить, к какому подключен USB или Serial.Правильное значение PortName для System.IO.Ports.SerialPort для MonoMac?
К сожалению, на Mac я полностью не в своем элементе. MonoMac позволяет мне программировать на более удобном языке, но что-то такое же низкое, как и разговоры с оборудованием, немного превосходит меня. Мой код инициализации выглядит следующим образом:
private void OpenSerialConnection(string comPort)
{
_serialPort = new System.IO.Ports.SerialPort("/dev/ttys1", 19200, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
_serialPort.Encoding = System.Text.Encoding.Default;
_serialPort.WriteTimeout = 1000;
_serialPort.DataReceived += OnDataReceived;
_serialPort.Open();
}
«/ ttsy1/DEV» значение, которое находится в месте, где «ComPort» переменная будет идти является частью некоторых примеров, которые я обнаружил, что предлагают адрес может быть в форма/dev/ttys *. После некоторого поиска я обнаружил, что устройство usb, скорее всего, будет зарегистрировано как «/dev/tty.usbserial», но мне интересно, есть ли более элегантный способ, если обнаруживать, что это значение, что я могу использовать в Mono, а не инструктировать пользователю перейти в терминал и ввести «ls /dev/tty.*» и ввести его сами?