从串口

时间:2015-08-17 18:11:09

标签: java python serialization arduino processing

我正在使用Arduino并使用一个小GUI在Processing上与它进行通信。我只是将浮点值打印到串口上并使用Processing将其读回。在大多数情况下一切顺利,我能够读取值。但是,有时串行读取会吐出相当任意的值,我不知道为什么。例如,

我的Arduino代码:

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  for (int i =1;i<5;i++)
{  Serial.println(float(i)+2.0);
delay(1);
  // put your main code here, to run repeatedly:
}
}

根据预期,串行监视器的输出为3.0,4.0,5.0,6.0。

这是我用来读取

中的数据的处理代码(Python模式)
def connect2Arduino(): 
    global arduinoPort
    arduinoPort= Serial(this, 'COM32',9600)

def setup():
   background(0)
   connect2Arduino()

def draw():
   global arduinoPort
   if arduinoPort.available()>0:
       dataIn = arduinoPort.readStringUntil(int(10))
       if (dataIn != None or int(dataIn) != 13):
           print dataIn  

处理的输出看起来像这样

4.00

5.00

6.00

3.00

4.00

5.‚j

6.°3.00

4.00

5.00

6.00

当我尝试更改dataIn的类型时,输出为5.,j时会弹出​​错误,这是预期的。

首先,我不知道为什么会出现这些错误。我想知道为什么它首先出现。其次,有什么问题?我可以在我的arduino代码上打印而不是println并且可能修复它,但我正在寻找更好的东西。

谢谢

1 个答案:

答案 0 :(得分:0)

您可能正在填充串行缓冲区。尝试检查println返回的值,并验证是否已处理了正确的字节数。您还可以尝试在每次打印后添加Serial.flush()调用,以确保数据已发送出去。