0

我正在尝试使用.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

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

4

0 回答 0