0

PythonとpySerialを使ってASCII形式で通信を行うスケールと通信しようとしています。ASCII形式を使用した経験はありません。だから私は基本的な質問があります。たとえばpySerialを使用して文字Tを送信し、ASCII形式を使用してCRLFで終了するにはどうすればよいですか? 私は試した

 myserialport.write('TCRLF')
 myserialport.write('T\r\n')
 myserialport.write('T\n\r')

また、たとえば「208.01 g」の形式であると予想されるスケールからデータを読み取ろうとしています。しかし、私が使用するとき

myserialport.read(10)

また

myserialport.readline(10)

これはスケールからわかります

]ëýýÿ]W
ÿ]u_u]ÿ]uÕ
ýWýWë]uÝõW
ÿ½õÿ½WW]Ýý
WýW]Wÿ½ÿ×ë

グーグルから、pySerialはデフォルトでASCII形式でデータを受信し、送信する必要があるように見えます...しかし、なぜ機能しないのかわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

1

これは、CRLF を含む文字をシリアル ポートに送信する正しい方法です。

myserialport.write('T\r\n')

乱雑な応答について - ボーレート、データ ビット数、ストップ ビット、およびパリティ ビットを正しく設定していることを確認してください。必要な値は、スケールのデータシートで見つけることができます。

例えば:

from serial import Serial, SEVENBITS, STOPBITS_ONE, PARITY_EVEN
myserialport = Serial('/dev/ttyS0', baudrate=9600, bytesize=SEVENBITS, parity=PARITY_EVEN, stopbits=STOPBITS_ONE)
于 2013-01-23T23:45:48.337 に答える
0

問題は、USB シリアル コンバーターの接地接続でした (ピン 7 を接地する必要がありました)。同じ問題がある場合は、ピンアウトを確認してください。(Fisher Scintific スケールはピン 7 をグランドとして使用しますが、これはピン 5 がグランドであるため正常ではありません...奇妙です...) どうもありがとうございました。

于 2013-02-05T22:16:03.317 に答える