Estoy usando un programa que habla con mi puerto COMM, pero he creado otro programa que quiero "olfatear" los mensajes del puerto de comunicación y realizar sus propias acciones contra esos mensajes además. ¿Es esto posible en .NET C#?En C# ¿cómo podría escuchar un puerto COM (en serie) que ya está abierto?
Respuesta
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/
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#
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.
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));
}
- 1. C# compruebe si un puerto COM (en serie) ya está abierto
- 2. Python PySerial.¿Cómo saber si un puerto ya está abierto?
- 3. C# Comunicación en serie con múltiples dispositivos en un puerto
- 4. RxTx en Mac: puerto serie ya en uso
- 5. Excepción al abrir un archivo que ya está abierto
- 6. Escuchando puertos Com serie que están en uso
- 7. java.lang.Exception: puerto 8083 ya está en uso
- 8. Lectura desde el puerto serie en C#
- 9. Compruebe si un puerto está abierto
- 10. Windows 7 x64 COM/puerto serie Sniffer/Redirect
- 11. ¿Cómo transferir datos a un puerto en serie?
- 12. Determine si el puerto serie es COM o SPP normal
- 13. Escuchando puerto serie en Delphi 7
- 14. ¿Cómo encontrar qué dispositivo está conectado a un puerto serie USB en Linux usando C?
- 15. Comprueba si el puerto en serie está escuchando
- 16. TcpListener: ¿Cómo escuchar un puerto específico en todas las interfaces?
- 17. Comunicación de puerto serie: puerto serie de sondeo frente a puerto serie Evento DataReceived
- 18. ¿Cómo verificar si un archivo ya está abierto por otro proceso en C?
- 19. Compruebe si el archivo ya está abierto
- 20. Simular el puerto serie
- 21. Liberación de un puerto serie virtual desconectado
- 22. ¿Qué puede hacer que las llamadas a CreateFile en un puerto serie sean extremadamente lentas?
- 23. Programación en serie en C, en DOS
- 24. ¿Cómo sé qué puerto serie usar en Linux?
- 25. comprobar si el puerto está abierto en ANT
- 26. Escuchar paquetes ICMP en C#
- 27. ¿Cómo puedo hacer que un dispositivo USB personalizado aparezca en Windows como un puerto COM?
- 28. ¿Cómo actualiza Apple el menú del aeropuerto mientras está abierto? (Cómo cambiar NSMenu cuando ya está abierto)
- 29. Liberando el puerto serie correctamente
- 30. lectura COM (Módem de serie) en PHP
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