2016年5月26日木曜日

pyserialのRTS、DTR

pythonから自作mbedにデータを送ろうとしたのですが、プログラムのダウンロード用のケーブルと共用しているためにえらい目にあいました。
ダウンロード用のケーブルは6ピンで
1:電源(12Vか5V)
2:GND
3:TxD
4:RxD
5:RTS(ISPモードセレクト:P2_10に接続)
6:DTR(Resetに接続)
となっているためにRTS、DTRが暴れると、通信時にリセットがかかりどうしようもありません。

pyserialのマニュアルだと初期設定では両方とも無効になっているので(rtscts==False、dsrdtr==False)問題ないと思ったのですが、どうもうまく行きません。結論から言うとこの
  • 2つのパラメーターは少なくともrtsctsは初期設定でTrueになっています。
  • open()時に無効に設定していても内部処理の都合なのか一旦有効になってからすぐに無効になります。
  • ser.rts=FalseでrtsはHiに、ser.rts=TrueでrtsはLoになります(負論理)。
 マニュアルが間違えているみたいです。

サンプルコード

ser = serial.Serial()
ser.port="/dev/ttyUSB0"
ser.boudrate=9600
ser.open()

ser.rtscts=False
ser.dsrdtr=False
ser.rts=False
ser.dtr=False

#ser.write("data")      # 出力

0 件のコメント:

コメントを投稿