我正在使用Firmata协议,该协议允许您通过串行协议控制Arduino。我正在使用SerialPortEventListener侦听DATA_AVAILABLE事件来读取传感器值。但是我注意到很多延迟都需要一秒钟才能使更新的传感器值由我的应用程序注册,协议以57600的波特率运行。我的问题是事件侦听器是在单独的线程上运行还是我的应用程序和侦听器在同一线程中运行,并且我的应用程序使速度变慢。
编辑:为了使自己清楚,我只是在理论上问,在单独的线程中读取串行传输或使用事件侦听器会更快吗?
最佳答案
对不起,所有这些答案,我正在认真考虑您的问题。
除了从错误的线程更新GUI的问题之外,线程的问题可能与问题无关。由于从串行端口获取更新可能不会消耗大量的CPU能力(无论如何,除非通过紧密的轮询循环完成,否则不会),因此线程之间的CPU资源不会有任何明显的争用,并且因此线程应该不可能“彼此慢下来”。我会打折这种可能性。但是您可以查看TaskManager(Windows)或System Monitor(Linux),以查看您的CPU是否真的很忙。这可能会改变事情。
关于java - SerialPortEventListener实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2013113/