Frage

Ich teste eine Anwendung, die den COM-Port verwendet.Die Anwendung wird auf einem virtuellen PC ausgeführt.Ich habe die Einstellungen für den virtuellen PC so eingerichtet, dass die Named Pipe \. \ Pipe \ mypipe für COM1-Port verwendet wird.

Jetzt versuche ich, mit dieser Named Pipe über C # zu kommunizieren.

using (var pipe = new NamedPipeServerStream(@"\\.\pipe\mypipe"))
{
    pipe.WaitForConnection();

    using (var reader = new StreamReader(pipe))
    {
       // Do some communication here
    }
}

Das Programm wartet auf WaitForConnection (), obwohl Virtual PC ausgeführt wird und ich versuche, mit dem COM-Port zu kommunizieren.

Ich habe auch Folgendes versucht, da ich nicht sicher bin, ob ich die Named Pipe in meinem Programm erstellen muss oder ob die Named Pipe von Virtual PC erstellt wird.

var p = new NamedPipeClientStream(@"pipe\mypipe");

p.Connect();

Was mache ich hier falsch?

War es hilfreich?

Lösung

Wenn Sie Virtual PC so einrichten, dass eine Named Pipe als COM-Port verwendet wird, fungiert sie als Server (wenn dies der Client wäre, müsste VPC kontinuierlich nach einem neuen Server suchen, wenn z. B. Ihr Server abstürzt).

Ihr zweiter Ansatz ist fast auf dem richtigen Weg, außer dass Sie "mypipe" als Namen der Pipe anstelle von "pipe \ mypipe" verwenden sollten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top