Связь COM-порта с Virtual PC

Я тестирую приложение, использующее COM-порт. Приложение работает в Virtual PC. Я настроил параметры Virtual PC для использования именованного канала \.\pipe\mypipe для порта COM1.

Теперь я пытаюсь общаться с этим именованным каналом с помощью С#.

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

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

Программа ожидает в WaitForConnection(), хотя виртуальный ПК работает, и я пытаюсь установить связь с COM-портом.

Я также пробовал следующее, потому что я не уверен, нужно ли мне создавать именованный канал в моей программе или именованный канал создается Virtual PC.

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

p.Connect();

Что я здесь делаю неправильно?


person PetPaulsen    schedule 05.02.2011    source источник


Ответы (1)


Когда вы настраиваете Virtual PC для использования именованного канала в качестве COM-порта, он действует как сервер (если бы это был клиент, то VPC должен был бы постоянно опрашивать новый сервер, если, например, ваш сервер вышел из строя).

Ваш второй подход почти верен, за исключением того, что вы должны использовать «mypipe» в качестве имени канала, а не «pipe\mypipe».

person telewin    schedule 05.02.2011
comment
Благодарю вас! Это сделало это. Однако связь по-прежнему не работает. Может быть, вы знаете ответ и здесь? stackoverflow.com/ вопросы/4907079/ - person PetPaulsen; 05.02.2011
comment
@telewin Можете ли вы изучить это, а затем stackoverflow. com/questions/49715657/named-pipes-in-hyper-v-vm - person user3552407; 08.04.2018