我正在使用一个与我的 COMM 端口对话的程序,但我已经制作了另一个程序,我想“嗅探”通信端口消息并对这些消息执行它自己的操作。这在 .NET c# 中可行吗?
Phobis
问问题
21603 次
4 回答
5
有第三方库/工具/产品可以公开您感兴趣的流量。
这是我用于串行端口仿真的一个 - 但我认为它提供了一些你可以使用的东西: http: //com0com.sourceforge.net/
于 2008-12-11T01:08:54.073 回答
2
如果您可以控制与您的 COMM 端口通信的第一个程序,为什么不更改程序以通过远程处理或任何其他类型的 IPC 将从端口接收的数据传递给您的第二个程序。如果您可以编写一个连接到 COMM 端口的代理程序,并让其他程序中的 2 个与该代理通信以完成通信,那就更好了。
另一个想法是,如果你只需要嗅探传入的数据,你可以得到一根 Y 型电缆(分路器)并连接到 2 个 COMM 端口,每个程序连接到每个 COMM 端口。但是您需要确保第二个程序没有尝试传输。在某些情况下,您可能需要一个仅连接第二个输出的 RX 引脚的分离器。如果您需要图表,请告诉我。
如果您没有 2 个 COMM,您可以轻松获得一个不到 10 美元的 USB-Serial 转换器。
于 2008-12-11T07:38:43.723 回答
1
于 2008-12-10T23:56:49.727 回答
0
代码项目(http://www.codeproject.com/Articles/75770/Basic-serial-port-listening-application)有一个很好的教程。
它显示了如何读取来自串行端口的数据,并且您应该能够从中读取数据。
一个简短的片段:
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));
}
于 2014-09-03T08:10:02.597 回答