2009-05-27 36 views
18

Ho a che fare con alcuni sistemi legacy che utilizzano RS232 per comunicare con le periferiche. Non ho molta esperienza con l'interfaccia COM. Ho del codice che può aprire e utilizzare le porte COM, ma non può aprire le porte che vengono utilizzate da altre applicazioni. Ho bisogno di oscurare i pacchetti in modo da poter utilizzare lo stesso protocollo per le comunicazioni aggiornate.Ascolto di porte COM seriali in uso

C'è un modo per pacchetti "uomo medio" in ingresso su una porta COM aperta e rilevare quali pacchetti vengono inviati? Sto usando .NET, ma sono aperto a qualsiasi tipo di soluzione.

(ho trovato this là fuori, ma non credo che questo lavoro per me.)

+1

Penso che l'applicazione hub4com (da com0com) potrebbe effettivamente fare ciò che ti serve. –

risposta

13

ho usato com0com - è grande per la creazione di porte COM virtuali - che non ti aiuta a tutti.

L'interfaccia della porta COM è fondamentalmente un 'file letto'. La mia applicazione genera un'eccezione quando provo a connettermi a una porta COM che ha già un'altra istanza che legge da essa. Non sono sicuro che potresti provare ad aprirlo come "di sola lettura" anziché in lettura-scrittura, ma vale la pena provarlo.

Dovresti essere in grado di scrivere una porta COM virtuale in grado di trasferire i dati in un file di registro. Com0com è open-source, quindi puoi usarlo come punto di partenza.

Un'altra possibile soluzione potrebbe essere quella di sollevare un rs232 splitter cable forchette il segnale seriale su un'altra porta seriale.

Oppure ancora un'altra possibilità è(o open source sniffer).

Oppure prova lo hub4com app dallo stesso sito Web com0com!

+1

Gli sniffer suggeriti sono essenzialmente ciò che ho già scritto. Penso che la virtualizzazione possa essere la strada più sicura, ma mi piace l'idea di dividere la linea. Sarei in grado di catturare i pacchetti da e verso il dispositivo? – Daniel

+0

sai dove trovare il codice per hub4com il sito ha l'exe ma non riesco a vedere il codice. – baash05

+0

http://com0com.cvs.sourceforge.net/viewvc/com0com/hub4com/ arrivati ​​attraverso: http://sourceforge.net/scm/?type=cvs&group_id=129551 – Kieveli

4

Ho seguito questo stesso percorso. Uno splitter hardware è la soluzione più semplice.

L'installazione hub4com comporterà la procedura guidata "Aggiungi nuovo hardware". Se hai un sacco di macchine, macchine geograficamente separate, o utenti che non sono tecnicamente esperti e mancano delle autorizzazioni necessarie, l'installazione potrebbe essere scomoda.

Se si tratta di un'applicazione legacy, viene eseguita in ntvdm? In tal caso, è possibile eseguirlo in DosBox e modificare il codice DosBox per scrivere su un file oltre a inviare/ricevere da/per la porta seriale. DosBox è anche multipiattaforma.

+0

Per ora tutto ciò che so è che gira su Windows. Il resto è una scatola completamente nera. Sfortunatamente il sistema è in Polonia e io no. Il mio contatto è ragionevole al computer. Se dividere il cavo mi darà la possibilità di ascoltare sia il traffico in entrata che in uscita, che suona come la strada da percorrere. – Daniel

+0

Lo splitter dovrebbe essere la strada da percorrere, quindi. Nel mio caso ho scartato quella soluzione perché avevamo un altro progetto in cui un venditore voleva anche usare uno splitter, e non volevo pensare a dividerlo due volte. –

10

Esiste un modo per "uomo medio"

Sì, ci sono molti. Fortemente supportato in Windows attraverso il concetto di "filtro driver". Un tale driver può essere inserito prima di un driver che ottiene richieste I/O e vede tutto ciò che passa. Normalmente inteso a modificare le richieste di I/O ma anche molto adatto per il semplice monitoraggio delle richieste. Uomo nel mezzo.

L'esempio canonico di un tale driver è il venerabile SysInternals' PortMon utility. Mostra tutto ciò che un'app invia e riceve da/a una porta seriale, inclusi configurazione e dati. Ci sono molte app di questo tipo, solo "Driver filtro porta seriale" di Google (pesante su esempi di codice sorgente) e "monitor porta seriale".

Una nota a piè di pagina con questo, si tende ad avere un problema su una versione a 64 bit di Windows. La maggior parte di queste app, incluso PortMon, funziona solo sulla versione a 32 bit.La versione a 64 bit consente solo l'installazione di driver certificati, ci sono pochi soldi nella vendita di queste app per giustificare la spesa. Attenzione a questo quando fai acquisti.

0

È anche possibile utilizzare TCPcom per convertire i dati in pacchetti Ethernet e monitorarli con Wireshark e anche trasmetterli altrove. Quindi usi un'altra istanza di TCPcom per inoltrarla a qualsiasi porta com che ti piace, inclusa una porta com virtuale. Ora hai essenzialmente dirottato i dati via Ethernet. https://sourceforge.net/projects/combytcp/?source=directory

Problemi correlati