1

我正在测试一个使用 COM 端口的应用程序。该应用程序正在 Virtual PC 中运行。我已将 Virtual PC 设置设置为将命名管道 \.\pipe\mypipe 用于 COM1 端口。

现在我正在尝试使用 C# 与这个命名管道进行通信。

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

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

尽管 Virtual PC 正在运行并且我正在尝试与 COM 端口通信,但程序正在 WaitForConnection() 处等待。

我还尝试了以下方法,因为我不确定是否必须在我的程序中创建命名管道或者命名管道是由 Virtual PC 创建的。

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

p.Connect();

我在这里做错了什么?

4

1 回答 1

2

当您将 Virtual PC 设置为使用命名管道作为 COM 端口时,它将充当服务器(如果它是客户端,那么 VPC 将不得不不断轮询新服务器,例如,如果您的服务器崩溃)。

您的第二种方法几乎是正确的,除了您应该使用“mypipe”作为管道的名称而不是“pipe\mypipe”。

于 2011-02-05T12:42:07.340 回答