Frage

Ich verwende ein Programm, das zu meinem COMM-Port spricht, aber ich habe ein anderes Programm gemacht, dass ich zu „schnuppern“, um die COM-Port-Nachrichten möchten, und führen Sie es eigene Aktionen gegen diese Meldungen zusätzlich ist. Ist dies möglich, in .NET c #?

War es hilfreich?

Lösung

Es gibt Drittanbieter-Bibliotheken / Tools / Produkte, die den Verkehr aussetzen f Sie interessiert sind.

Hier ist ein ich für serielle Port-Emulation verwendet - aber ich denke, es ist etwas, die Sie verwenden können: http://com0com.sourceforge.net/

Andere Tipps

Wenn Sie die Kontrolle über das erste Programm, das mit Du spricht Comm-Port, warum das Programm nicht ändern Daten vom Hafen zum zweiten Programm von Ihnen über Remoting oder jede andere Art von IPC erhalten zu übergeben. Noch besser ist es, wenn Sie einen Proxy-Programm schreiben können, die an den COMM-Anschluss angeschlossen und verfügen über 2 des anderen Programms Vortrag zu diesem Proxy die Kommunikation getan.

Eine weitere Idee ist, wenn Sie nur eingehende Daten müssen schnuppern Sie ein Y-Kabel bekommen kann (Splitter) und eine Verbindung zu 2 COMM-Port, jedes Programm eine Verbindung zu jedem COMM-Port. Aber Sie müssen sicherstellen, dass das zweite Programm nicht zu übertragen versucht. In einigen Fällen müssen Sie möglicherweise einen Splitter, die nur den RX-Pin für den zweiten Ausgang verbindet. Lassen Sie uns wissen, wenn Sie das Diagramm benötigen.

Wenn Sie nicht über 2 COMM haben, können Sie einfach einen USB-Seriell-Konverter für weniger als USD10.

Es ist möglich, Verkehr von der seriellen Schnittstelle zu schnuppern

Allerdings tut es scheint ein "COMPortSniffer" Control zu sein

Eine gültige Technik, die von Sysinternals verwendet wird präsentiert es

Es scheint jedoch auf dem Win32-Programmierung zu verlassen, ich glaube nicht, so etwas möglich ist, direkt mit C #

Sie den Code ein Projekt ( http: //www.codeproject. com / Artikel / 75770 / Basis-seriell-Port-Listening-Anwendung ), der ein großes Tutorial auf diese hat.

Es zeigt, wie Daten lesen, in von einer seriellen Schnittstelle kommen, und davon, dass Sie sollten die Daten lesen können.

Ein kurzer Auszug:

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));
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top