- Python バージョン: 2.6.6
- PySerialバージョン: 2.5
- Arduino ボード: Duemilanove 328
使用しているハードウェアをシミュレートするコードをいくつか作成し、Arduino ボードにアップロードしました。このコードは機能します。ハイパーターミナルから期待どおりの応答が得られるので、これはわかっています。
ただし、PySerial を使用して接続しようとすると、接続はエラーになりませんが、送信したコマンドに応答がありません。
これはなぜでしょうか?
Python コード
import serial
def main():
sp = serial.Serial()
sp.port = 'COM4'
sp.baudrate = 19200
sp.parity = serial.PARITY_NONE
sp.bytesize = serial.EIGHTBITS
sp.stopbits = serial.STOPBITS_ONE
sp.timeout = 0.5
sp.xonxoff = False
sp.rtscts = False
sp.dsrdtr = False
sp.open()
sp.write("GV\r\n".encode('ascii'))
value = sp.readline()
print value
sp.write("GI\r\n".encode('ascii'))
value = sp.readline()
print value
sp.close()
if __name__ == "__main__":
main()
\r\n
注意: Arduino のコードは、コマンドへの応答の最後に送り返します。
ハイパーターミナル構成:
編集
タイムアウトを 10 秒に増やし、sp.readline()
何かを送信する前に a を追加すると、両方のコマンドに対する応答が得られることがわかりました。
PySerial と Arduino または USB RS-232 ポート間のハードウェア ハンドシェイクは通常どのくらいの時間ですか?