0

MDrive 23 モーターはターミナルからコマンドを取得し、スクリーン プログラムで動作するようにしました。

screen /dev/ttyUSB0

これはシリアル端末と呼ばれるものですか?接続の詳細はよくわかりませんが、PySerial を使用してコマンドを送信できるはずだと感じています。

私は試した:

import serial
ser = serial.Serial('/dev/ttyUSB0', 19200)
ser.isOpen() # Returns True
ser.write('ma 100000\r\n') # Does nothing...
ser.inWaiting() # Returns 0
ser.close()

次のような他の初期変数を設定する方法がわかりませんでした。

parity = serial.PARITY_ODD,
stopbits = serial.STOPBITS_TWO
bytesize = serial.SEVENBITS    

次に、いくつかの値を推測してみます... ドキュメントは不十分ですが、MODBUS TCP と Mcode について言及しています。

これらを設定するにはどうすればよいですか? また、スニペットに構文エラーはありますか?

Serial オブジェクトに引数を送信する方法は知っていますが、典型的な値がわかりません。

4

1 に答える 1

1

Serial コンストラクターの他のパラメーターは、ポートとボーレートと同様の方法で設定されます。

ser = serial.Serial(port = '/dev/ttyUSB0', baudrate=19200, bytesize=serial.SEVENBITS, parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_TWO)

ser.write('whatever')
ser.flush() # wait for data to be written
ser.close()

編集:デフォルト設定9600 ボー、8 ビット、パリティなし、1 ストップ ビットのようです。さらに、フロー制御は使用されません。これは次と同等です。

ser = serial.Serial(port = '/dev/ttyUSB0', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, xonxoff=False, rtscts=False, dsrdtr=False)

ポートを除くすべての値がデフォルトに設定されているため、次を使用できます。

ser = serial.Serial(port = '/dev/ttyUSB0')

最後に心配することは、どの (読み取り) タイムアウトを設定するかということです。これは秒単位で測定/設定され (float が許可されます)、読み取った内容を返す前に read() コマンドがブロックする時間を設定します。

于 2013-04-30T19:34:19.800 に答える