Om jag förstår rätt har du två enheter anslutna via UART. Jag antar att bara TX-, RX- och GND-linjer är anslutna mellan enheterna? (dvs inga DTS / CTS / DTR / RTS-kontrollinjer används - detta är typiskt).
I detta scenario är enhet 1: s TX (sändning) ansluten till enhet 2: s RX (mottagning) och vice tvärtom. Deras grunder är kopplade till varandra. Således kan varje enhet sända och ta emot samtidigt (var och en sänder på en separat tråd, kommunikationen är full-duplex).
Anledningen till att jag nämner allt detta är att det blir klart att " sniffa "eller" lyssna ", du behöver faktiskt två UARTs för att lyssna på båda sidor av konversationen.
I grund och botten är allt du skulle göra att se till att alla 3 enhets UART GND är kortslutna, och anslut (egentligen "tee", som i en T-koppling, som VVS) enhet 1 &-enhet 2: s TX-linjer till de 2 RX-linjerna på 2 UART. Se till att överföringshastigheterna alla är konfigurerade identiskt.
Det finns många Arduino-kort / mönster. Den vanligaste nuförtiden, Duemilanove, använder ATMega328P, som jag tror bara har 1 UART (ja, USART). Så du måste antingen koppla upp en andra UART-IC, eller använda "lite smäll" på den andra mottagaren.
Async UART-kommunikation är väldefinierad, med start &-stoppbitar (och ibland paritet bitar), så om din processor är tillräckligt snabb kan du helt enkelt ansluta en av enhetens UART TX-linjer till en GPIO som är konfigurerad som ingång, och undersöka linjen tillräckligt snabbt med översampling för att upptäcka START & STOPP och samplingsbitar. Artikeln "Bit Banging" av Jack Ganssle ger dig mycket att tugga på.
En anständig beskrivning av RS232-vågformen finns på BeyondLogic.
Observera att det finns andra problem som spänningsnivåer (0 / + 5, -10V / + 10V, etc.) som du måste ta hänsyn till (se avsnittet Beyond Logic om "RS232 nivåomvandlare") . Jag har inte tillräckligt med information om ditt system för att diskutera hårdvarugränssnitt förutom "connect the lines" -metoden som diskuterats ovan. Förutsatt att spänningsnivåerna matchas är det vanligtvis inte ett problem att "tappa" TX-linjen i en andra mottagare (snifferen), men om TX inte har tillräckligt med enhet kan du behöva sätta in en buffert / drivrutin för att förhindra signal från förnedrande.