【问题标题】:python doesn't read data sent from arduino correctlypython没有正确读取从arduino发送的数据
【发布时间】:2016-04-28 00:32:03
【问题描述】:

我正在研究一个项目,其中包括从 arduino 向 python 发送 4 个字符,以便 python 中的第一个变量读取第一个发送的字符,第二个变量读取第二个字符,但是当我在屏幕上打印它们时它不稳定并且不同步。 IE: 我发送'a','b','c','d',我希望在python中收到相同的:'a','b','c','d'。 但我收到的可能是这样的:'c','d','a','b' 或 'b','c','d','a'。

阿杜诺
`

void setup()
{

Serial.begin(9600);


}

void loop() 
{


Serial.write('a');
Serial.write('b');
Serial.write('c');
Serial.write('d');


}

`

Python
ser = serial.Serial('COM4',9600,timeout=0) ser.close() ser.open() up = ser.read() right = ser.read() left =ser.read() down = ser.read()

【问题讨论】:

  • 为什么不只是print ser.read(4) ...您应该看到它们都按顺序通过...
  • 为什么不发送像“A:B:C:D\n”这样的字符串(带换行符),使用serial.readline(),然后剥离新行,拆分字符串,得到一个, b,c,d :) 让它们按顺序排列更安全,并确保在应用启动时丢弃串行缓冲区
  • 我尝试了 print ser.read(4) ...但它的值不断变化
  • 马尔科·马基奇。我认为这可能有效,但抱歉我不知道该怎么做我不知道 python 我只是想制作一个简单的程序,我不明白为什么我的代码不起作用

标签: python arduino serial-port pyserial arduino-uno


【解决方案1】:

我猜是因为两者之间没有同步。 ardi 坐在那里吐出 a,b,c,d,a,b,c,d,a,b,c,d 等。当 python 代码连接时,没有什么可以让 ardi 从 'a' 开始,它只是继续做它正在做的事情,并且python代码从当时的ardi开始获取数据。请注意您的问题描述中的字符如何始终按顺序排列,如果您允许重复循环?

尝试让 python 代码(当它启动时)向 ardi 发送一些东西,以便它从头开始重新启动序列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多