2008-12-10 27 views

Respuesta

5

Hay bibliotecas/herramientas/productos de terceros que exponen el tráfico que le interesa.

Aquí es que usé para la emulación de puerto serie - pero creo que ofrece algo que puede utilizar: http://com0com.sourceforge.net/

2

Es posible rastrear el tráfico desde el puerto serie

Sin embargo tampoco parece ser un control "COMPortSniffer"

una técnica válida utilizado por sysinternals se presenta there

Parece que confiar en la programación de Win32, sin embargo, no creo que eso sea posible directamente con C#

2

Si usted tiene control sobre el primer programa que te habla puerto de comunicaciones, por qué no cambiar el programa para pasar los datos recibidos desde el puerto al segundo programa tuyo mediante comunicación remota o cualquier otro tipo de IPC. Mejor aún si puede escribir un programa de proxy que esté conectado al puerto COMM, y tenga 2 del otro programa para hablar con este proxy para que se realice la comunicación.

Otra idea es, si necesita olfatear solo los datos entrantes, puede obtener un cable Y (divisor) y conectarse a 2 puertos COMM, cada programa se conecta a cada puerto COM. Pero debes asegurarte de que el segundo programa no intente transmitir. En algunos casos, es posible que necesite un divisor que solo conecta el pin RX para la segunda salida. Avísame si necesitas el diagrama.

Si no tiene 2 COMM, puede obtener fácilmente un convertidor de USB por menos de USD10.

0

el proyecto de código (http://www.codeproject.com/Articles/75770/Basic-serial-port-listening-application) que tiene un gran tutorial sobre esto.

Muestra cómo leer los datos que ingresan desde un puerto en serie, y desde allí debe poder leer los datos.

Un breve fragmento:

void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    int dataLength = _serialPort.BytesToRead; 
    byte[] data = new byte[dataLength]; 
    int nbrDataRead = _serialPort.Read(data, 0, dataLength); 
    if (nbrDataRead == 0) 
     return; 

    // Send data to whom ever interested 
    if (NewSerialDataRecieved != null) 
     NewSerialDataRecieved(this, new SerialDataEventArgs(data)); 
} 
+0

En este caso, usted debe tener el control sobre el código fuente principal consumidor de publicar los datos leídos. No está olfateando una comunicación serie establecida. – sahl04

Cuestiones relacionadas