gpt4 book ai didi

python-3.x - pyserial 和 arduino 无法向 arduino 发送数据

转载 作者:行者123 更新时间:2023-12-04 18:41:43 26 4
gpt4 key购买 nike

我尝试将一个整数从 python 脚本发送到 arduino,在板上对其进行分析,然后将一个整数发送到 python 脚本。我可以从 arduino 接收数据,但我无法将数据发送到 arduino,因为它会重新启动。此外,它还适用于 Arduino IDE

我的想法是,我通过 python magicnumber = 387 发送,而不是 arduno 将它与它的 owm MN = 387 进行比较,然后将 MN 发送到 python,而且,当我开始从 python 发送数据时,它重新启动并且没有任何工作。如果可以的话,请主要用代码回答,因为我的英语不是很好。谢谢

int magicNumber;//глобальные переменные
bool connection = false;
void setup()
{
pinMode(infoLed, OUTPUT);
Serial.begin(baudrate);
while (!Serial) {
fastBlink();
}
slowBlink();

EEPROM.get(magicNumberAddr, magicNumber);
normalBlink();
waitForMN();
}

void loop()
{
if (!connection) {
waitForMN();
}

slowBlink();

}

void waitForMN() {//двустороннее квинтирование
String data = "";
byte sizeofbuf = 0;
while (Serial.available() <= 0) {
fastBlink();
}
while (!connection) {
if (Serial.available()) {
sizeofbuf += 1;
char s = Serial.read();
data = String(data + s);
Serial.println(data.toInt());

if (sizeofbuf == 3) {
if (data.toInt() == magicNumber) {
Serial.println(magicNumber);
char k = Serial.read();
connection = true;
break;
} else {
Serial.read();
waitForMN();
}
}
}
}
}

python :

import serial
import time
ser = serial.Serial("/dev/ttyUSB1",9600,timeout=10)

ser.flush()
ser.write(str("387").encode())
time.sleep(1)
ser.write(str("387").encode())

print(ser.readline())

最佳答案

实际上很难回答你的问题,因为你发布了一个不完整的代码,而且我没有任何关于你从 python 脚本中得到错误的信息。

Arduino 在打开串行端口后重新启动,这是引导加载程序的标准行为。您可以在 arduino web page 上阅读更多相关信息.但实际上这意味着,您的草图将在连接到串行端口后约 3 秒后开始工作。只需在串行连接初始化后立即将 time.sleep(3) 放入您的 python 代码中,您的脚本就必须按预期工作。

附言考虑使用串行。 parseInt () 而不是 Arduino sketch 的 waitForMN() 函数中的笨重结构。

关于python-3.x - pyserial 和 arduino 无法向 arduino 发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com