web-dev-qa-db-ja.com

Raspberry Pi(USB)およびサーマルプリンターへのRS232シリアルYスプリッターがプリンターへのフローをブロックすることがあります

RS232スプリッターとRaspberryPi(DB9からUSB on the Pi)を使用して、レストランのPOSシステム(RJ45からDB9)からサーマルプリンターにデータをスニッフィングしています。

これは99%の確率でうまく機能しましたが、POSが通常の印刷コマンドを送信し、プリンターが印刷しないことはめったにありません。次に、PiのUSBを抜くと、Piによってキューに入れられてブロックされたかのように、プリンターがレシートを印刷します。 Yケーブルが相互に排他的な2つの別々のシリアルデータストリームを作成したと思ったので、これがブロックされる理由については意味がありません。

注:これは、PiのRubyシリアルポートリスナースクリプトが実行されていない場合にのみ発生するようですが、通常はスクリプトを停止し、プリンターは引き続き印刷します...

これをオンデマンドで複製することはできません。そのため、さらにイライラします。

2
Micah

考慮すべきいくつかの事柄..

  • そのスプリッターは、Tx、Rx、GND以外の制御ラインを複製しますか?もしそうなら、私はシリアルからUSB側でそれらの回線を物理的に切断します。これらのラインは、フロー制御に使用できます。 Raspberry Pi側にはTxピンも必要ないので、外してもかまいません。 PiにはRX-GNDだけで十分なようです。
  • POSのRS-232ポートは、標準ではないため、接続されている2つのピアに十分な電流を供給できない場合があります。十分にシールドされた短いケーブルを使用すると役立つ場合があります。実際、テストのためにPOS側でその長い黒いケーブルを使用する必要はないようです。
  • RS-232信号インジケータの使用(次のように: http://cnc-specialty-store.com/rs232-cables/rs-232-mini-tester-with-led-indicators-db-25-male- to-female )は問題の分析に役立つ場合があります。
  • マルチメータを使用してTx/Rxラインの電圧を監視し、通常の状態と「スタック」状態の違いを見つけます。
  • また、USB-シリアルコンバータ自体に問題がある可能性があることを忘れないでください。 USBコンバーターによって引き起こされる非常に多くの奇妙な問題を聞いたことがあります。したがって、可能であれば、USBシリアルコンバーターを使用せずに同じテストを試してください。これには、PCなどの別の機器が必要になる可能性があります。

さらに、Raspberry Piで2つのUSBシリアルコンバーターを使用すると、[Printer] -RS232- [Raspberry Pi] -RS232- [POS]のように、プリンターとPOSの間でデータを実際に複製するのに役立つ場合があります。これにはおそらく、シリアルデータを実際に複製するためにPi上の新しいプログラムが必要ですが、少なくとも1:n接続での実行が保証されていないRS-232のルールに違反することはありません。ただし、この構成は、特にPC以外の機器でタイミングの問題が発生する可能性があるため、リスクも伴う可能性があります。他に試すものがない場合は、これを試すことができます。

3
Scott Rhee