RS232 串行 Y 型分离器至 Raspberry Pi (USB) 和热敏打印机有时会阻碍打印机的流量

RS232 串行 Y 型分离器至 Raspberry Pi (USB) 和热敏打印机有时会阻碍打印机的流量

我们正在使用 RS232 分离器和 Raspberry Pi(Pi 上的 DB9 到 USB)嗅探从餐厅销售点系统(RJ45 到 DB9)到其热敏打印机的数据。

99% 的时间里,这种方法都很好用,但极少数情况下,POS 会发送正常的打印命令,而打印机却无法打印。然后,如果我们拔下 Pi 上的 USB,打印机就会打印收据,就好像它以某种方式排队并被 Pi 阻止了一样。这无法解释为什么它会被阻止,因为我认为 Y 型电缆创建了 2 个独立的串行数据流,它们是互斥的。

注意:这似乎仅当 Pi 上的 Ruby 串行端口监听器脚本未运行时才会发生,尽管我们通常会关闭脚本并且打印机仍会打印……

我无法按需复制这一点,这使得它更加令人沮丧。

答案1

需要考虑的一些事情......

  • 该分离器是否复制了 Tx、Rx 和 GND 以外的控制线?如果是这样,我会在串行转 USB 侧物理断开这些线路。这些线路可用于流量控制。Raspberry Pi 侧甚至不需要 Tx 引脚,因此您也可以将其断开。对于 Pi 来说,仅 RX-GND 似乎就足够了。
  • POS 上的 RS-232 端口可能无法为两个连接的对等点提供足够的电流,因为它不是标准的。使用屏蔽良好且较短的电缆可能会有所帮助。实际上,似乎您不需要在 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 上使用两个 USB-串行转换器可能有助于真正复制打印机和 POS 之间的数据,例如 [打印机] - RS232 - [Raspberry Pi] - RS232 - [POS] 。这可能需要在 Pi 上安装一个新程序来真正复制串行数据,但至少它不会破坏 RS-232 的规则,因为 RS-232 不能保证在 1:n 连接上运行。但是,这种配置也可能有风险,因为它可能会引入时序问题,尤其是对于非 PC 设备。如果没有其他方法可尝试,您可以尝试此方法。

相关内容