2

Мы перехватываем данные из системы торговых точек ресторана (RJ45 - DB9) на ее термопринтер с помощью разветвителя RS232 и Raspberry Pi (DB9 - USB на Pi).

Это хорошо сработало в 99% случаев, но очень редко POS посылает обычную команду печати, и принтер не печатает. Затем, если мы отключим USB от Pi, принтер напечатает квитанцию, как будто она была каким-то образом поставлена в очередь и заблокирована Pi. Это не имеет никакого смысла относительно того, почему это могло быть заблокировано, поскольку я думал, что кабель Y создал 2 отдельных потока последовательных данных, взаимоисключающих.

Примечание. Похоже, это происходит только в том случае, если сценарий прослушивателя последовательного порта Ruby на Pi не запущен, хотя мы обычно отключаем сценарий, и принтер все еще печатает ...

Я не могу повторить это по требованию, что еще больше расстроило.

1 ответ1

3

Несколько вещей, чтобы рассмотреть ..

  • Является ли этот разделитель дублирующими управляющими линиями, кроме Tx, Rx и GND? Если это так, я бы физически отключил эти линии со стороны Serial-to-USB. Эти линии могут быть использованы для управления потоком. Даже сторона Tx не нужна для Raspberry Pi, так что вы также можете отключить ее. Просто RX-GND, кажется, достаточно для Пи.
  • Порт RS-232 на POS может не обеспечивать достаточный ток для двух подключенных одноранговых узлов, поскольку это не является стандартным. Использование хорошо экранированных и более коротких кабелей может помочь. На самом деле кажется, что вам не нужно использовать этот длинный черный кабель на стороне 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-Serial может иметь проблемы. Я слышал так много странных проблем, вызванных USB-конвертерами. Поэтому, если возможно, попробуйте тот же тест без использования USB-последовательных преобразователей, для которых, вероятно, требуется другое оборудование, например ПК.

Кроме того, использование двух преобразователей USB-Serial на Raspberry Pi может помочь действительно дублировать данные между принтером и POS, например, [Принтер] - RS232 - [Raspberry Pi] - RS232 - [POS]. Это, вероятно, требует новой программы на Pi, чтобы фактически дублировать последовательные данные, но, по крайней мере, это не нарушит правила RS-232, которое не гарантированно работает на соединениях 1:n. Тем не менее, эта конфигурация также может быть рискованной, поскольку она может вызвать проблемы с синхронизацией, особенно с оборудованием, отличным от ПК. Вы можете попробовать это, если больше ничего не осталось попробовать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .