Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In C# how could I listen to a COM (Serial) Port that is already open?

I am using a program that talks to my COMM port, but I have made another program that I want to "sniff" the comm port messages and perform it's own actions against those messages in addition. Is this possible in .NET c#?

like image 397
Phobis Avatar asked Dec 10 '08 23:12

Phobis


3 Answers

If you have control over the first program that talks to you COMM port, why not change the program to pass data received from the port to the 2nd program of yours via remoting or any other type of IPC. Better still if you can write a proxy program that connected to the COMM port, and have 2 of the other program talk to this proxy to get the communication done.

Another idea is, if you need to sniff only incoming data, you can get a Y-cable (splitter) and connect to 2 COMM port, each program connects to each COMM port. But you need to make sure the 2nd program is not trying to transmit. In some cases you might need a splitter which only connects the RX pin for the 2nd output. Let me know if you need the diagram.

If you don't have 2 COMM, you can easily get a USB-Serial Converter for less than USD10.

like image 63
faulty Avatar answered Nov 17 '22 11:11

faulty


It is possible to sniff traffic from the serial port

However there doesnt seem to be a "COMPortSniffer" Control

A valid technique used by sysinternals is presented there

It seems to rely on Win32 programming however, I dont think such a thing is possible directly with C#

like image 30
Eric Avatar answered Nov 17 '22 10:11

Eric


There are third party libraries/tools/products that expose the traffic f you are interested.

Here is one I used for serial port emulation - but I think it provides something you can use: http://com0com.sourceforge.net/

like image 6
Tim Avatar answered Nov 17 '22 12:11

Tim