문제

Comm Port와 대화하는 프로그램을 사용하고 있지만 Comm 포트 메시지를 "스니핑"하고 해당 메시지에 대해 자체 작업을 수행하려는 다른 프로그램을 만들었습니다. .NET C#에서 가능합니까?

도움이 되었습니까?

해결책

관심있는 트래픽을 노출시키는 타사 라이브러리/도구/제품이 있습니다.

다음은 직렬 포트 에뮬레이션에 사용한 것이 있습니다. 그러나 사용할 수있는 내용을 제공한다고 생각합니다.http://com0com.sourceforge.net/

다른 팁

Comm Port와 대화하는 첫 번째 프로그램을 제어 할 수있는 경우, 원격 또는 다른 유형의 IPC를 통해 포트에서 수신 된 데이터를 2 차 프로그램으로 전달하도록 프로그램을 변경하지 않겠습니까? Comm Port에 연결된 프록시 프로그램을 작성하고 다른 프로그램 중 2 개가이 프록시와 대화하여 커뮤니케이션을 완료 할 수 있다면 더 좋습니다.

또 다른 아이디어는 들어오는 데이터 만 스니핑 해야하는 경우 y- 케이블 (스플리터)을 가져 와서 2 개의 통신 포트에 연결할 수 있습니다. 각 프로그램은 각 통신 포트에 연결됩니다. 그러나 두 번째 프로그램이 전송하려고하지 않도록해야합니다. 경우에 따라 2 차 출력에 대한 RX 핀 만 연결하는 스플리터가 필요할 수 있습니다. 다이어그램이 필요한지 알려주세요.

2 개의 통신이없는 경우 USD10 미만으로 USB 시리얼 컨버터를 쉽게 얻을 수 있습니다.

직렬 포트에서 트래픽을 스니핑 할 수 있습니다.

그러나 "comportsniffer"컨트롤이없는 것 같습니다.

Sysinternals에서 사용하는 유효한 기술이 제시됩니다 거기

그러나 Win32 프로그래밍에 의존하는 것 같습니다. 그러나 나는 그런 것이 C#과 직접 가능하다고 생각하지 않습니다.

코드 프로젝트 (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));
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top