我正在编写一个 realbasic 控制台应用程序,它轮询多个串行端口的数据并将结果保存到数据库中。
我最初的想法是打开端口,读取数据然后再次关闭它,问题是,打开一个串行端口可能需要 4 秒,我可能需要从多达 8 个端口读取,所以打开和关闭端口对每个周期都不实用。
串行设备很可能与打开的端口断开连接,这当然会导致问题。
那么是否可以检测一个端口是否打开并处于活动状态,以便我可以让端口保持打开状态,只有在我检测到连接的设备已经消失时才关闭并重新打开它。
编辑
串口是蓝牙串口,它与蓝牙无线电通信,而蓝牙无线电又与微控制器通信。我有我听的开始和结束字符,所有这些工作正常,直到蓝牙设备超出范围并有效断开连接,而串口仍然打开。
我当然可以关闭端口并尝试再次打开它,但我想检测设备是否仍然连接到蓝牙串口。
此外,在 OSX 上的串行端口上调用 serial.close() 会导致暂时冻结(桌面光标冻结),我怀疑 100% 的 CPU 使用率,这不会发生在 Windows 上,因此我想尽量减少端口打开和关闭的数量我必须这样做,因为我每分钟轮询一次来自大约 10 个蓝牙设备的数据。
由于打开串口最多需要 4 秒,最好的解决方案是使用与蓝牙无线电的直接 HID 连接而不是 SPP 串行连接,但似乎之前没有人将 realbasic 连接到蓝牙 HID 设备所以没有任何信息或帮助。