这个问题与我之前的问题有关。
连接到管道现在成功,但我仍然无法从端口读取(或写入)任何数据。
我的第一个猜测是,数据是缓冲的。但即使我(在客户端站点上)写入 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");
按照 telewin 的建议,在命令提示符下使用“echo”可以正常工作。回显和使用上述代码有什么区别?