Insteon自動化ハードウェアとインターフェイスするクロスプラットフォームアプリケーションをまとめようとしています。私が見つけた.Netベースの例では、System.IO.Ports.SerialPortクラスを使用して、RS-232シリアルポートベースのデバイスとUSBシリアルモデムの両方からデータを読み取ります。Windowsプラットフォームでは、シリアルモデムは通常仮想COMポートにマップされ、リストを実行して新しいCOMアドレスを渡し、USBまたはシリアルデバイスがどちらに接続されているかを把握することは難しくありません。
残念ながら、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();
}
「comPort」変数が入る場所の代わりにある「/dev/ ttsy1」値は、アドレスが/ dev /ttys*の形式である可能性があることを示唆するいくつかの例の一部です。いくつか検索したところ、USBデバイスが「/dev/tty.usbserial*」として登録される可能性が高いことがわかりましたが、この値が何であるかを検出する場合、指示するのではなく、Monoで活用できるよりエレガントな方法があるかどうか疑問に思いますユーザーがターミナルに移動して「ls/dev / tty。*」と入力し、自分で入力しますか?