Этот вопрос относится к моему более раннему вопросу .
Соединение с каналом теперь успешно, но я все еще не могу прочитать (или записать) какие-либо данные из порта.
Мое первое предположение было, что данные буферизируются.Но даже когда я пишу (на клиентском сайте) 5000 байт (размер буфера в NamedPipeClientStream составляет 512 байт), я не получаю никаких данных.
PipeOptions.WriteThrough тоже ничего не изменил.
Когда я использую не канал, а текстовый файл (в настройках Virtual-PC) для перенаправления данных, записанных в COM-порт, данные записываются, как и ожидалось, в текстовый файл.Итак, программа тестирования клиента, работающая на Virtual-PC, работает нормально.Вероятно, проблема в моем коде ниже.
var pipe = new NamedPipeClientStream(".", "mypipe", PipeDirection.InOut, PipeOptions.WriteThrough);
pipe.Connect();
// this is blocking
int i = pipe.ReadByte();
var reader = new StreamReader(pipe);
// this is blocking, too
var s = reader.ReadLine();
Обновление:
Код, который я запускаю на гостевой ОС:
var port = new SerialPort("COM1");
port.Open();
port.WriteLine("Hallo");
Использование 'echo' в командной строке, как предложил telewin, работает нормально.В чем разница между отображением и использованием приведенного выше кода?