我正在尝试使用.net 示例写入 COM 端口
写入真实 COM 没有问题,但是当我尝试写入虚拟 COM 时出现超时异常
未处理的异常:System.TimeoutException:写入超时。在 System.IO.Ports.SerialStream.Write(Byte[] 数组,Int32 偏移量,Int32 计数,Int32 超时) 在 System.IO.Ports.SerialPort.Write(String text) 在 System.IO.Ports.SerialPort.WriteLine(字符串文本)
我用谷歌搜索了这个问题,发现了这个。根据那里所说的,这是问题所在:
.net 的 write() 函数使用 CreateFile 和 WriteFile Async,如下所示:
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);
当我使用那些我有 NULL 而不是 FILE_FLAG_OVERLAPPE
我的问题是,我该如何克服这个问题?我必须编写自己的代码吗?