2010-12-15 174 views
1

これで、pySerialの完全なnoobです。私はラボ機器と通信しようとしていますが、STX(テキストの開始)コマンドを送信するだけでは問題があります。これまでのところ、私の基本的なコードは次のようになります。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コマンドのようなものを見ていません。

アイデア?私はこれが信じられないほどまっすぐであると確信しています、そして、私はちょっと見落としています。

ありがとうございます!

答えて

0

HyperTerminalとPySerialで同じ設定が使用されていることを確認してください。次が同じであることを確認してください:

  • ボーレート(あなたは19200を使用している)
  • パリティ(あなたがPARITY_ODDを使用している)データビットの
  • 番号(pySerialデフォルト8)
  • ストップビット(pySerialデフォルト1)
+0

私が確認しなかった、との設定が同じです。 – KMB

4

シリアルクラスのwrite関数は、バイトまたは文字列を受け入れます。あなたは整数を渡しているので、結果は不明です。おそらくそれを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 
+0

ああ、はい、そのトリックでした!ありがとう!私はバイトを送信しようとしましたが、まだchrとして渡しませんでした。 – KMB

関連する問題