C# 写入虚拟COM时出现超时异常

C# 写入虚拟COM时出现超时异常,c#,.net,serial-port,virtual-serial-port,C#,.net,Serial Port,Virtual Serial Port,我正在尝试使用写入COM端口 我写一个真正的COM没有问题,但是当我尝试写一个虚拟COM时,我得到一个超时异常 未处理的异常:System.TimeoutException:写入超时。 在System.IO.Ports.SerialStream.Write(字节[]数组,Int32偏移量,Int32计数 ,Int32超时) 在System.IO.Ports.SerialPort.Write处(字符串文本) 位于System.IO.Ports.SerialPort.WriteLine(字符串文本)

我正在尝试使用写入COM端口

我写一个真正的COM没有问题,但是当我尝试写一个虚拟COM时,我得到一个超时异常

未处理的异常:System.TimeoutException:写入超时。 在System.IO.Ports.SerialStream.Write(字节[]数组,Int32偏移量,Int32计数 ,Int32超时) 在System.IO.Ports.SerialPort.Write处(字符串文本) 位于System.IO.Ports.SerialPort.WriteLine(字符串文本)

我在谷歌上搜索了这个问题,发现了。据报道,这是一个问题:

.net的write()函数使用CreateFile和WriteFile异步,如下所示:

当我使用这些时,我使用NULL而不是FILE\u FLAG\u OVERLAPPE


我的问题是,我如何克服这个问题?我必须自己编写代码吗?

您不需要使用
CreateFile
SerialPort
类就足够了。您确定虚拟端口已打开吗?您是否尝试将该值设置为?当驱动程序无法清空其传输缓冲区时,您会收到TimeoutException。“虚拟COM”是无可救药的非描述性,但如果有人没有读到你写的东西,那么就需要超时了。@HansPassant是的,我读过。但这没用。
CreateFile("\\\\.\\" + portName,
            NativeMethods.GENERIC_READ | NativeMethods.GENERIC_WRITE,
            0,    // comm devices must be opened w/exclusive-access
            IntPtr.Zero, // no security attributes
            UnsafeNativeMethods.OPEN_EXISTING, // comm devices must use OPEN_EXISTING
            FILE_FLAG_OVERLAPPED,
            IntPtr.Zero  // hTemplate must be NULL for comm devices
            );

WriteFile(_handle, p + offset, count, IntPtr.Zero, overlapped);