我正在使用一個與我的COMM端口通信的程序,但是我另外創建了另一個程序,用於「嗅探」通信端口消息並針對這些消息執行自己的操作。這是可能的.NET C#?在C#中,我怎麼能聽一個已經打開的COM(串行)端口?
9
A
回答
5
有第三方庫/工具/產品,揭露您感興趣的流量。
這是一個我用於串行端口仿真 - 但我認爲它提供的東西,你可以使用: http://com0com.sourceforge.net/
2
有可能從串口監聽通信
然而,有似乎沒有成爲
通過的Sysinternals使用的有效技術,提出there
這似乎依賴於「COMPortSniffer」控制在Win32編程,但我不認爲這樣的事情是可以直接與C#
2
如果你有過那跟你說話通訊端口的第一個程序的控制,爲什麼不改變程序通過遠程或任何其他類型的IPC將從端口收到的數據傳遞給您的第二個程序。如果你能寫一個連接到COMM端口的代理程序,並且讓另外兩個程序與這個代理進行通信來完成通信,那更好。
另一個想法是,如果你需要嗅探只輸入數據,就可以得到一個Y型電纜(分路器),並連接到2 COMM端口,每個程序連接到每個COMM端口。但是你需要確保第二個程序沒有嘗試傳輸。在某些情況下,您可能需要一個分離器,它僅連接第二個輸出的RX引腳。讓我知道你是否需要這張圖。
如果您沒有2 COMM,您可以輕鬆獲得USB-串行轉換器,價格低於USD10。
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));
}
相關問題
- 1. 已在Windows 7中打開COM端口
- 2. 串行COM端口沒有打開
- 3. 在C++中打開一個COM端口號碼高於9
- 4. COM端口不能在asp.net打開
- 5. 聽COM端口
- 6. 我怎麼能進行打印上,我已經cretaed
- 7. 無法打開端口Com
- 8. 在php中打開com端口
- 9. 在同一個COM端口上使用兩個串行端口 - WPF C#
- 10. 無法使用Visual串行端口仿真器打開已經打開的端口
- 11. Python PySerial.How要知道一個端口是否已經打開?
- 12. python SocketServer.BaseRequestHandler知道端口並使用已經打開的端口
- 13. 監控串口已經打開
- 14. C++打開一個共享串行端口的CreateFile
- 15. 在C/C++中用COM端口打開連接時出錯
- 16. 我怎麼知道文件已經打開或正在使用?
- 17. 怎麼聽用C#多串口
- 18. C++在已打開的窗口中執行「打開」
- 19. 當端口已經流式傳輸時COM端口出錯
- 20. 串行COM端口號@讀
- 21. 在C中控制另一個已經打開的窗體#
- 22. 打開的文件已經在窗口瀏覽器中打開
- 23. 我的書籤打開一個新窗口,如果窗口已經打開我要打電話.focus()
- 24. 如果一個UL已經打開,隱藏另一個,怎麼樣?
- 25. 我怎樣才能在一個文本框',C#MVC 4,剃刀寫從一個COM端口的數據
- 26. 聽一個端口已經在使用Python中的UDP數據包?
- 27. ,我怎麼能在一個字符串
- 28. 我怎麼能在一個字符串
- 29. 你怎麼能製作出一個已經存在的元素?
- 30. svn怎麼能給一個「目錄已經存在的錯誤」?
在這種情況下,你必須瞭解第一級消費者的源代碼控制公佈讀取數據。它不嗅探已建立的串行通信。 – sahl04 2017-07-20 22:54:42