tty。*ポートではなく、デバイスIDでUSBシリアルポートにアクセスする方法はありますか?


17

Linux上でUSBシリアルデバイスがシリアルポートには、2つのエイリアスを作成します
/dev/tty*と、/dev/serial/by-id/<my_usb_device_id>

OSXにUSBデバイスIDでシリアルポートを識別する方法はありますか?システムプロファイラーと使用ioreg -p IOUSB中の両方でIDを確認できますが、そのIDを使用した接続には近づきません。

私たちはいくつかのハードウェアを開発していますが、異なるデバイスを接続するたびにテストソフトウェアのシリアルポート構成を確認する必要があるため、OSXではtty.*ポート名がコンピューターのポートに依存するため、デバイス上ではありません。Linuxを実行している人は、/dev/serial/by-id/<my_usb_device_id>ポートを使用してさまざまなデバイスを自動的に区別しています。

回答:


2

FTDIは私が持っている埋めるために、シリアル番号がすでにデバイス名で表示されます:それはとして表示されます/dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DA00AG57-if00-port0(一部に対応する/dev/ttyUSBxLinux上)、およびなど/dev/cu.usbserial-DA00AG57/dev/tty.usbserial-DA00AG57MacOSで。(参照/programming//a/8632603/4896937をとの違いのためにtty.*cu.*。)

残念ながら、多産のために私が持っているブリッジ、あなたのような問題がまだ適用されますように見えるデバイス/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0(シリアル番号を含まない)は、単純である/dev/cu.usbserial/dev/tty.usbserial(いなくてもシステムプロファイラは、それのためのシリアル番号を示します)MacOSの上で。2番目のプラグインを差し込んだ場合、どうなるかは誰にもわかりません。

ベンダーに依存しないより一般的な答えがあるかもしれませんが、一部のデバイスはシリアル番号を報告しない可能性があることに注意してください。


私にとっては、/ dev / tty.usbmodemFD121と/dev/tty.usbmodemFA131として表示されます。番号はラップトップのUSBポートに直接依存します。システム情報には、ファームウェアで設定されたデバイスの正しいIDが表示されます。両方のシリアルは、STM32F2 / F4プロセッサによって作成されます。
ヨハン

2

実際には、デバイスID /シリアル番号からシリアルポート名へのマッピングを見つけることができるはずioregです。このコマンドを試してください:

ioreg -r -c IOUSBHostDevice -l

すべてのUSBホストデバイスを印刷し、各デバイスのサブツリーからすべてのプロパティを印刷します。IDまたはシリアル番号に基づいて、最上位でデバイスを見つけることができるはずです。見つかったら、そのサブツリーをスキャンして、最終的にclassのオブジェクトを見つけることができるはずIOSerialBSDClientです。これには、必要なプロパティが含まれIODialinDeviceます。

プログラムでこれを行う-a場合は、ioregコマンドにオプションを追加すると、上記の出力のplistバージョンが出力されます。次に、などのライブラリを使用してこれを解析できplistlibます。

IORegistryExplorerアプリを使用してこれを視覚化することは、ioreg出力全体を読むのが少し難しいため、役立つことがあります。これは、XCodeの「ハードウェアIOツール」パッケージで入手できます。このパッケージは、Apple開発者サイトでダウンロードを検索することで見つけることができます。私のデバイスでは次のように表示されます。

IORegistryExplorerの例

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.