【发布时间】:2019-08-31 16:51:16
【问题描述】:
我想通过串行通信将存储在变量“int3”中的数字“500”从 python 传输到 arduino。 arduino 使用 Serial.read() 读取数据,但只打印“5”。 提前致谢。 我有 int3、字节 2 和字节 3 要从 python 发送,但希望 arduino 打印 int3 的值。
import serial
import time
ser=serial.Serial('/dev/ttyACM0',9600)
int3 = 500
int3 = b'%d' %int3
while (1):
ser.write(int3)
ser.write(b'2')
ser.write(b'3')
#print type(ser.write)
time.sleep(1)
print(int3)
String r;
void setup(){
Serial.begin(9600);
// while(!Serial)
// {
// ;
// }
}
void loop(){
if(Serial.available() > 0){
r =(Serial.read() - 0); //conveting the value of chars to integer
Serial.print(r[0]);
delay(100);
//while(Serial.available () !=0) r=Serial.read();
}
}
【问题讨论】:
-
因为
Serial.read只返回第一个传入字节。delay阻止应用程序,因此其他两个字节被丢弃。 -
我应该删除延迟吗?
-
如果我想要所有三个字节有什么解决方案?
-
为什么不以二进制(和固定长度)形式发送
int而不是转换两次? -
创建一个循环,检查一个字节是否可用,当可用时将字节添加到缓冲区,当缓冲区满时离开循环,接收到停止或其他一些条件。
标签: arduino pyserial serial-communication