从Python到Arduin的串行通信故障排除

2024-03-28 20:20:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是具有Python脚本功能的软件。我想用它来移动一个Clearpath伺服和间歇运行内部软件命令。你知道吗

使用Arduino,我可以控制伺服,但一旦我开始使用串行通信,它就开始出错。在阅读了其他帖子后,我想问题出现了,因为串行通信是8位的,我想发送大整数

例如,Arduino代码的一部分显示:

void loop(){  
 if(Serial.available()){
 inByte = Serial.readStringUntil('\n');
 ser = inByte.toInt();
 X.move(ser);
 while(!X.commandDone()||!X.readHLFB())
 { }
 Serial.print (inByte);
 delay(1000);
 }
}

在我开始使用串行通信之前,我会在X.move(ser)中使用整数并得到完美的结果。现在我使用的是串行端口,我可以看出这段代码有问题。即使它似乎工作使用串行监视器,我越是尝试它(特别是使用较大的数字),我就越意识到它可能没有做什么,它之前我使用串行。你知道吗

然后将Python添加到混合中,情况会变得更糟。 为了让您了解我的意图,这里有一个Python代码示例:

ser = serial.Serial('COM3', 9600, timeout=1)
ser.close()
ser.open()
while True:
    var = "1000"
    ser.write(var.encode())
    time.sleep(1)'

使用这个代码,伺服移动,但它是不正确的。 如何通过串行将大整数(例如50502)从Python发送到Arduino,而不会在串行通信期间损坏它?你知道吗


Tags: 代码命令功能脚本move软件varserial