Python USBからRS-232へのコンバーターを介してデバイスに通信する必要があります。アプリケーションminicom
はシームレスに接続するので、非対話型モードで実行できれば、すべてが素晴らしいでしょう。
ドキュメントを読むと、いくつかの興味深いオプションがありますが、私はそれらのいずれかを完全には理解していません。
-t Terminal type. With this flag, you can override the environment
TERM variable.
-S script. Run the named script at startup.
アプリケーションとminicom
の間でデータをパイプするにはどうすればよいですか?他のものを使用する必要がありますか?
minicom
はインタラクティブな使用には最適ですが、プログラムによるI/Oには適していません。
ローカルのPythonプログラムは、シリアルポートの/dev
ノードを開くだけです。ファイルに書き込むのと同じように機能します。
fd = os.open('/dev/ttyUSB0', os.O_RDWR)
fd.write(...)
唯一注意が必要なのは、ビットレートなどを設定することです。そのためには、 Pythonのtermiosライブラリ を使用します:
attr = termios.tcgetattr(fd)
attr[5] = attr[6] = termios.B9600
termios.tcsetattr(fd, termios.TCSANOW, attr)
このためのPythonドキュメントは、CからこのAPIを使用していて、Pythonへの変換のヘルプが必要なことをほぼ前提としています。したがって、このパスをたどる場合は、StevensやRagoのようなクラシックを使用する必要があります。 Unix環境での高度なプログラミング 。
termios
レベルを上回り、* ix以外の型システムへの移植性を提供する高レベルのライブラリは pySerial です。
上記のウォーレン・ヤングの答えは正しいですが、怠惰さのためにもっと良い答えがあります:
_cat $file > /dev/ttyUSB0
_も同様に機能します。 tc(g|s)etattr
呼び出しに関しては、それらはstty
コマンドによって処理されます(例:_stty -F /dev/ttyUSB0 9600
_)!