在C#中,我怎么能听COM(串口)端口已经打开?
-
21-08-2019 - |
题
我使用的会谈我的COMM端口的程序,但我已经做出,我想“嗅”的通讯端口的信息,并执行它的反对,除了这些消息用自己的行动另一个程序。在.NET C#这是可能的?
解决方案
有F你有兴趣,揭露交通第三方库/工具/产品。
下面是一个我用于串行端口仿真 - 但我认为它提供的东西,你可以使用: http://com0com.sourceforge.net/
其他提示
如果你有超过一个可与您COMM端口,为什么不改变程序通过从端口接收到经由远程处理或任何其它类型的IPC你的第二节目数据的第一程序的控制。更妙的是,如果你可以编写连接到COMM端口的代理程序,并有其他程序谈话的2至这个代理,以获得通信完成的。
另一个想法是,如果需要嗅出仅输入数据,就可以得到一个Y型电缆(分路器)并连接到2 COMM端口,每个程序连接到每个COMM端口。但是,你需要确保第二个程序是不是想传递。在某些情况下,你可能需要一个分离器,它仅连接RX引脚的第二输出。让我知道如果你需要的图。
如果你没有2 COMM,你可以很容易地得到一个USB串行转换器不到10美元。
,能够从串行端口嗅探流量
然而,有似乎没有成为“COMPortSniffer”控制
通过Sysinternals的使用的有效的技术,提出有
看来不过依靠Win32编程,我不认为这样的事情是有可能直接与C#
的代码项目( HTTP://www.codeproject。 COM /条/ 75770 /基本串行端口,侦听的应用程序)是对这个伟大的教程。
它显示了如何读取数据从一个串行端口进来,从您应该能够读取数据。
一个短片断:
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));
}
不隶属于 StackOverflow