0

私は現在、フロー制御の2つの可能な方法を提供する、やや古いモデルのHPプリンターとのインターフェースを試みています。フロー制御をまったく行わないか、ソフトウェアベースのフロー制御(XON/XOFF)です。

次のコマンドで pySerial を初期化し、データをポートに書き込むために単純な大きな文字列を並べるだけです。

serial = serial.Serial(port = '/dev/ttyUSB3', baudrate = 9600, parity = serial.PARITY_ODD, stopbits = serial.STOPBITS_ONE, bytesize = serial.EIGHTBITS)

これは問題なく動作しますが、問題があります。フロー制御が完全に無視され、データが送受信されているように見えます。その結果、デバイスで IO バッファ オーバーフローが発生し、動作が停止します。

私が最初に考えたのは、serial.write('unbelivable long string') を使用すると、pySerial が送信を停止できない可能性があるため、文字列をチャンクに分割して送信したことです。

data = ['command', 'another command', 'more commands', 'you get the drift...']
for i in data:
    serial.write(i)

うーん...これもうまくいきません。

したがって、基本的には、ボーレートを低いものに変更して、デバイスが送信よりも高速になるようにするか、いくつかのチャンクごとにスリープのようなものを追加することができます...しかし、これはそうすべきではないと思います.

だから...誰か私に説明してください、私は何を間違っていますか? ;-)

ありがとう、

マーティン

4

1 に答える 1

1

xonxoff パラメータを忘れました。xonxoff=真

http://pyserial.readthedocs.io/en/latest/pyserial_api.html

于 2013-10-11T13:28:42.280 に答える