我正在使用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并且可能修复它,但我正在寻找更好的东西。
谢谢
答案 0 :(得分:0)
您可能正在填充串行缓冲区。尝试检查println返回的值,并验证是否已处理了正确的字节数。您还可以尝试在每次打印后添加Serial.flush()调用,以确保数据已发送出去。