質問

私のArduinoとUSB経由で通信するOSXのためのRubyプログラムを書きたいです。 私はその目的のためにシリアルポート宝石を使うつもりです。

私は言うサンプルコードを見つけました:

port_str = "/dev/ttyUSB0"  #may be different for you
.

Arduinoをスキャンして見つけることができ、どのポートが自動的に接続すべきかを知っていますか? (私はOSXを持っています) ありがとう!

役に立ちましたか?

解決

これは一般的な方法でやることができ、ArduinoデバイスはUSBシリアルポートとして表示され、Arduinoと非ARDUINOポートを区別するのが難しくなります。

ブルートフォースアプローチは次のとおりです.USBシリアルデバイスを列挙して、それぞれを順番に並べて、もう一方の端にファームウェアの起動ヘッダーが送信されているかどうかを確認します。 OSXでは、USBシリアルデバイスは/dev/tty.*にありますが、それは将来のOSアップデートで変わる可能性があります。このメソッドは機能しますが、遅く、タイミングに敏感になる可能性があります。ヘッダーを送る前のArduinoのスタートアップ遅延、そして単純な「こんにちは、あなたはそこにいますか?」コマンドであることがわかりました。 / P>

また、後続のアプリが最初にそのポートを試すように、最後に見つかったポートを保存することができます。

バリアント:あなたのアプリが起動時にArduinoをプラグインするようにユーザーに要求した場合は、/ devのUSBポートをリストし、ユーザーが接続されているのを確認するのを待って、もう一度ポートを一覧表示できます。新しく出現する装置はあなたのArduinoです。

次のレベルでは、USBベンダーと製品ID(VID&PID)を見ることができます。ただし、これらのIDはArduino-Landのマップ全体にあります。モデル、バージョン、リビジョン、中国語クローン、およびさまざまなARDUINO互換デバイスによって異なります。この adafruit でのライトアップ

あなたがただ物事を非常に狭いハードウェアセット(例えばベンチの1つのArduino)で作業しようとしている場合は、このOSXコマンドを使用してUSBデバイスの詳細を確認できます。

system_profiler SPUSBDataType
.

私のシステムで、私は得る:

...
USB Bus:

  Host Controller Location: Built-in USB
  Host Controller Driver: AppleUSBUHCI
  PCI Device ID: 0x7fff000027c9 
  PCI Revision ID: 0x7fff00000002 
  PCI Vendor ID: 0x7fff00008086 
  Bus Number: 0x3d 

    Communication Device:

      Product ID: 0x0043
      Vendor ID: 0x2341
      Version: 0.01
      Serial Number: 75331313133351800000
      Speed: Up to 12 Mb/sec
      Manufacturer: Arduino (www.arduino.cc)
      Location ID: 0x3d100000 / 2
      Current Available (mA): 500
      Current Required (mA): 100
.

位置ID(0x3D100000 / 2)は、デバイス名と一致するようです./dev/cu.usbmodem3d11

この質問 aのコマンドラインコマンドの実行ルビースクリプト。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top