2

わかりましたので、私はpySerialの完全な初心者です。ラボ機器と通信しようとしていますが、STX (テキストの開始) コマンドを送信するだけで問題が発生しています。これまでのところ、私の基本的なコードは次のようになります。

ser = serial.Serial(0, 19200, timeout=1,parity=serial.PARITY_ODD, rtscts=0)
ser.write(0x02) #ASCII STX is 0x2 in hex

しかし、スコープで 232 データを見ると、送信しようとしている STX は、Hperterminal で送信された STX コマンドのようには見えません。

何か案は?これは信じられないほど簡単なことだと確信しており、些細なことを見落としているだけです。

ありがとう!

4

2 に答える 2

5

シリアルクラスの書き込み関数は、バイトまたは文字列を受け入れます。整数を渡しているため、結果は不明です。おそらく、整数をstrにキャストしているため、char「2」を送信しています。

それを行う正しい方法は次のとおりです。

ser = serial.Serial(0, 19200, timeout=1,parity=serial.PARITY_ODD, rtscts=0)
ser.write(chr(0x02)) #ASCII STX is 0x2 in hex
于 2010-12-15T11:56:53.717 に答える
0

ハイパーターミナルとPySerialに同じ構成が使用されていることを確認してください。以下が同じであることを確認する必要があります。

  • ボーレート(19200を使用しています)
  • パリティ(PARITY_ODDを使用しています)
  • データビット数(pySerialデフォルト8)
  • ストップビット(pySerialデフォルト1)
于 2010-12-15T11:18:12.730 に答える