2008-12-10 21 views

Trả lời

5

Có thư viện/công cụ/sản phẩm bên thứ ba hiển thị lưu lượng truy cập mà bạn quan tâm.

Dưới đây là một trong tôi sử dụng để mô phỏng cổng nối tiếp - nhưng tôi nghĩ rằng nó cung cấp một cái gì đó bạn có thể sử dụng: http://com0com.sourceforge.net/

2

Có thể sniff lưu lượng từ các cổng nối tiếp

Tuy nhiên có doesnt dường như là một "COMPortSniffer" Control

Một kỹ thuật có giá trị sử dụng bởi Sysinternals được trình bày there

Dường như phải dựa trên lập trình Win32 tuy nhiên, tôi không nghĩ rằng một điều như vậy là có thể trực tiếp với C#

2

Nếu bạn có quyền kiểm soát các chương trình đầu tiên mà nói chuyện với bạn comm cổng, tại sao không thay đổi chương trình để chuyển dữ liệu nhận được từ cổng đến chương trình thứ 2 của bạn thông qua truy cập từ xa hoặc bất kỳ loại IPC nào khác. Vẫn còn tốt hơn nếu bạn có thể viết một chương trình proxy kết nối với cổng COMM và có 2 chương trình khác nói chuyện với proxy này để thực hiện giao tiếp.

Một ý tưởng khác là, nếu bạn chỉ cần dò tìm dữ liệu đến, bạn có thể nhận được cáp Y (bộ tách) và kết nối với cổng 2 COMM, mỗi chương trình kết nối với mỗi cổng COMM. Nhưng bạn cần phải chắc chắn rằng chương trình thứ 2 không cố gắng truyền tải. Trong một số trường hợp, bạn có thể cần một bộ chia chỉ kết nối pin RX cho đầu ra thứ 2. Hãy cho tôi biết nếu bạn cần sơ đồ.

Nếu bạn không có 2 COMM, bạn có thể dễ dàng nhận được Bộ chuyển đổi USB-Serial với giá dưới 10 USD.

0

dự án mã (http://www.codeproject.com/Articles/75770/Basic-serial-port-listening-application) có hướng dẫn tuyệt vời về điều này.

Công cụ này cho biết cách đọc dữ liệu đến từ cổng nối tiếp và từ đó bạn sẽ có thể đọc dữ liệu.

Một đoạn ngắn:

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)); 
} 
+0

Trong trường hợp này bạn phải có sự kiểm soát về mã nguồn tiêu dùng chủ yếu để xuất bản các dữ liệu đọc. Nó không phải là sniffing một giao tiếp nối tiếp được thành lập. – sahl04