【发布时间】:2019-05-13 21:51:33
【问题描述】:
我正在尝试使用串行端口将一些整数值从 Python 发送到 Arduino,Python 代码似乎可以正常工作,因为我看到 Ardunio 板上的 TX LED 闪烁,但连接到第 12 个引脚的 LED 仍然不亮起来,Arduino 代码似乎也在工作,因为当我打开 Arduino IDE 的串行端口并发送“1”时,LED 会亮起,所以我认为 Python 发送的数据与 Arduino 类型之间存在某种不兼容期待。 Python代码:
ser = serial.Serial('COM3', 9600)
time.sleep(1)
ser.write('1'.encode())
Arduino 代码:
void setup() {
Serial.begin(9600);
pinMode(12,OUTPUT);
}
void loop() {
int X;
if (Serial.available()>0)
{
X = Serial.read();
if(X == '1')
{
digitalWrite(12,HIGH);
}
else if(X == '0')
{
digitalWrite(12,LOW);
}
}
}
所以我的问题是:
1)_代码中的问题似乎是什么?
2)_Arduino 期望从串口获取什么类型的数据?
3)_将超过 255 的整数值从 Python 发送到 Arduino 的最佳方法是什么?这是正确的方法吗?
ser = serial.Serial('COM3', 9600)
S = 102
time.sleep(1)
data = [int(x)for x in str(S)]
for d in data:
c = bytes(str(d), "ascii")
ser.write(c)
【问题讨论】:
-
尝试做一个
Serial.write(X)并在python中读回它...也尝试使用Serial.readString...我认为Serial.read得到的是ord('1')或48 ..其中readString 得到“1”(也许......) -
所以我尝试用 Python 读回数据,我发送的内容我读回 b'\xff' 但是当我在 Python 中用 Serial.readString() 读回它时,我读回 b'-\ r'
-
@JoranBeasley 先生您怎么看?
-
嗯,这个周末我可能有机会拿出我的 arduino 并试一试...提醒我坐下(你知道如何联系我(通过各种渠道))
-
我会提醒你先生,谢谢。@JoranBeasley
标签: python-3.x serial-port arduino-uno