处理中来自串行端口(USB UART接口 - FTDI)的生涩实时图

时间:2016-01-20 15:37:18

标签: java plot serial-port processing real-time

我是Processing的新手,我正在尝试绘制从串口接收的一些数据。 我有很多加速度计(~10),我验证草图接收100Hz的所有数据。 我想只绘制一个加速度计的数据。 如果我只从一个加速度计流式传输数据,那么情节就会完美无缺,但是如果我尝试将其中的三个(仅绘制第一个)绘制成流,那么情节就会生涩。 当我尝试流式传输4个或更多个时,会发生奇怪的事情,因为当我增加流式加速度计的数量时,情节开始变得越来越好。

我注意到serialEvent()和draw()在两个独立线程上正常工作,但是当我添加更多加速度计时,它们的交替以奇怪的方式发生变化。

在最糟糕的情况下,如果我为draw()[“#”符号]打印System.currentTimeMillis()和“第一个加速度计到数组的加值”() “在serialEvent()[”_“符号]里面我有类似的东西:

#1453211104631
#1453211104648
#1453211104664
#1453211104681
#1453211104698
#1453211104714
#1453211104730
#1453211104747
#1453211104765
#1453211104782
#1453211104797
#1453211104813
#1453211104832
#1453211104847
#1453211104864
#1453211104882
#1453211104897
#1453211104914
#1453211104931
#1453211104948
#1453211104964
#1453211104982
#1453211104998
_1453211105000
_1453211105000
_1453211105000
_1453211105000
_1453211105001
_1453211105001
_1453211105001
_1453211105001
_1453211105002
_1453211105002
_1453211105002
_1453211105002
_1453211105002
_1453211105003
_1453211105003
_1453211105003
_1453211105003
_1453211105003
_1453211105004
_1453211105004
_1453211105004
_1453211105004
_1453211105005
_1453211105005
_1453211105005
_1453211105005
_1453211105005
_1453211105006
_1453211105006
_1453211105006
_1453211105006
_1453211105006
_1453211105007
_1453211105008
_1453211105008
_1453211105008
_1453211105008
_1453211105008
_1453211105009
#1453211105014
#1453211105032
#1453211105049
#1453211105064
#1453211105082
#1453211105097
#1453211105114
#1453211105130
#1453211105148
#1453211105165
#1453211105181
#1453211105198
#1453211105214

所以在#1453211105014中,draw()在一次拍摄中绘制前39个点(~390ms),然后在200ms内没有任何内容,然后是另一个点块,依此类推。 最后的效果是对数据的生涩绘图。

当草图接收到少量数据(一个加速度计)或大量数据(超过6个加速度计)时,不会发生这种情况。

我哪里错了?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我找到了解决方案! 我必须更改USB UART接口(FTDI)的设置。 事实上,我发现数据延迟与USB缓冲区大小和延迟计时器(设备管理器 - > COM端口 - > USB串行端口 - >属性 - >高级)有关。 有关详细信息:http://www.ftdichip.com/Support/Documents/AppNotes/AN232B-04_DataLatencyFlow.pdf

我希望它可能有用!