Если я правильно понимаю, у вас есть 2 устройства, подключенных через UART. Я полагаю, только линии TX, RX и GND подключены между устройствами? (т.е. не используются линии управления DTS / CTS / DTR / RTS - это типично).
В этом сценарии TX (передача) устройства 1 подключается к RX (прием) устройства 2, и наоборот. Их основания связаны друг с другом. Таким образом, каждое устройство может передавать и принимать одновременно (каждое передает по отдельному проводу, связь дуплексная).
Причина, по которой я упоминаю все это, состоит в том, что становится ясно, что для «прослушивания» или «прослушивания» вам на самом деле понадобятся 2 UART для прослушивания обеих сторон разговора.
По сути, все, что вам нужно сделать, это убедиться, что UART GND всех 3 устройств закорочены, и подключить (на самом деле, «тройник», как в Т-образном фитинге, например, к трубопроводу) линии TX устройства 1 и устройства 2 к 2 линиям RX. на 2 UART. Убедитесь, что все скорости передачи настроены одинаково.
Существует много плат / дизайнов Arduino. Наиболее распространенный в настоящее время, Duemilanove, использует ATMega328P, который, я думаю, имеет только 1 UART (ну, USART). Таким образом, вам придется либо подключить 2-ю микросхему UART, либо прибегнуть к «битам» на втором приемнике.
Асинхронная связь UART четко определена, с битами запуска и останова (и иногда битами четности), поэтому, если ваш процессор достаточно быстр, вы можете просто подключить одну из линий UART TX устройства к GPIO, настроенному как вход, и опросить линию достаточно быстро с передискретизацией, чтобы обнаружить START & STOP и выборочные биты. Статья Джека Гэнсла "Удар по битам" даст вам много возможностей для пережевывания.
Достойное описание формы сигнала RS232 можно найти на BeyondLogic .
Обратите внимание, что есть другие проблемы, такие как уровни напряжения (0 / + 5, -10 В / + 10 В и т. Д.), Которые вам необходимо принять во внимание (см. Раздел «Вне логики» в разделе «Преобразователи уровня RS232»). У меня недостаточно информации о вашей системе, чтобы обсудить аппаратное взаимодействие, кроме подхода «соединить линии», который обсуждался выше. Предполагая, что уровни напряжения совпадают, как правило, не проблема «подать» линию TX во второй приемник (сниффер), но если TX не хватает диска, вам может понадобиться вставить буфер / драйвер, чтобы предотвратить сигнал от унизительного.