Pergunta

Estou testando um aplicativo que usa a porta COM.O aplicativo está sendo executado no Virtual PC.Eu configurei as configurações do Virtual PC para usar o pipe nomeado \. \ Pipe \ mypipe para a porta COM1.

Agora estou tentando me comunicar com este pipe nomeado usando C #.

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

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

O programa está esperando em WaitForConnection () embora o Virtual PC esteja em execução e eu esteja tentando me comunicar com a porta COM.

Também tentei o seguinte, porque não tenho certeza se devo criar o pipe nomeado no meu programa ou se o pipe nomeado é criado pelo Virtual PC.

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

p.Connect();

O que estou fazendo de errado aqui?

Foi útil?

Solução

Quando você configura o Virtual PC para usar um pipe nomeado como uma porta COM, ele atua como o servidor (se fosse o cliente, o VPC teria que pesquisar continuamente um novo servidor se, por exemplo, seu servidor travasse).

Sua segunda abordagem está quase acertada, exceto que você deve usar "mypipe" como o nome do pipe em vez de "pipe \ mypipe".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top