【发布时间】:2015-08-22 15:43:15
【问题描述】:
我正在尝试在 Raspberry Pi 2 上的 Windows 10 IoT 上实现 ModBus 主控。 我正在使用外部 USB 转 RS-232 适配器,因为内部串行端口是为内核调试保留的。
串行端口正在工作。我的问题主要是关于阅读时的超时。
这是我的代码:
// Initialization
serialDevice.ReadTimeout = new TimeSpan(0, 0, 0, allowedTimeBetweenBytes);
serialDataReader.InputStreamOptions = InputStreamOptions.Partial;
// Reading
uint bytesRead = await serialDataReader.LoadAsync(MaxBufferSize); // 256
// Now use ReadBytes to get actual bytes
由于串行端口 RX 输入上没有可用的字节,我希望 LoadAsync 方法在等待后返回 0。不幸的是,它永远不会回来。 (好吧,它确实在收到 256 个字节后返回,但这不是我想要的)
由于 ModBus 大量使用超时,我不知道如何实现它。我什至不确定我能做到...
是否有人已经在 Windows 10 IoT 串行端口上使用了超时功能?
【问题讨论】:
-
好吧,显然 InputStreamOptions.Partial 不起作用。所以掷骰子,然后尝试 InputStreamOptions.ReadAhead 和 None。
标签: c# serial-port timeout windows-10-iot-core