我通过串行端口将arduino uno连接到树莓。树莓正在从机器人接收数据,并将这些int值通过串行发送到arduino。现在的问题是,当我将值打印到串行监视器时,int值会分成多行。
Arduino代码
int usbRead = 1;
int i = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available()) {
usbRead = (Serial.read() - '0');
Serial.print("Received:");
Serial.println(usbRead);
}
}
Python脚本是:
import time
import sys
import signal
import serial
usbCom = serial.Serial('/dev/ttyACM0', 9600)
try:
while True:
a=robot.read("EXTRUDER")
b = int(a)
c=b'%d' %b
print(c)
usbCom.write(c)
time.sleep( 1 )
except KeyboardInterrupt:
print('interrupted')
输出应为
Received: 56
Received: 56
Received: 56
但是我明白了
Received: 5
Received: 6
Received: 5
Received: 6
Received: 5
Received: 6
我只是不明白我在做错什么。
答案 0 :(得分:0)
您可以使用Serial.parseInt()读取从串行监视器发送的数字。 parseInt等待发送文本的所有数字字符,因此它会在很短的时间内阻止草图的执行,直到收到所有字符。波特率越高,速度越快。如果您的草图不需要尽可能快地循环,则可以使用它。 parseInt会以第一个不是数字的字符(例如换行符)停止,并返回接收到的数字。
void setup() {
Serial.begin(115200);
}
void loop() {
if (Serial.available() > 0) {
long number = Serial.parseInt();
Serial.println(number);
}
}