我正在尝试从 arduino 发送一个浮点数,并使用 python 使用串行读取它。我正在使用以下代码在 arduino 上生成数字:这是 arduino 代码,它有效long randNumber;float avgMe;float theTemp;void setup() { Serial.begin(9600); // initialize print Serial.println("Start session");}void loop() { avgMe = 0; for (int i = 0; i < 10; i++) { randNumber = random(0, 11); delay(100); avgMe = avgMe + randNumber; } theTemp = avgMe / 10; Serial.print(theTemp);}它打印了我想在 python 中抓取的内容:Start session4.906.803.905.706.10这是我在 python 中尝试获取它的内容:# %% Importimport serialimport timeimport struct# %% connecttry: ser = serial.Serial('COM3', 115200, timeout=.1) time.sleep(2) print("Connection to " + 'port' + " established succesfully!\n")except Exception as e: print(e)# %% loop for some timet_end = time.time() + 10while time.time() < t_end: data = ser.read(4) if data: # test = struct.unpack(">fff",data) print(data)time.sleep(1)ser.close()Python打印:b'\x00\x00\x00\x00'b'\x00'b'\x00\x00\x00\x00'b'\x00\x00\x00\x00'b'\x00\x00\x00\x00'b'\x00\x00\x00\x00'b'\x00'但首先我无法转换它,而且似乎信息不存在。我希望您对此提出意见
1 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
当我第一次学习如何从 arduino 通过串行端口发送数据时,我遇到了同样的问题。波特率必须相同,否则输出会变得奇怪而美妙。
如果 arduino 使用这个波特率
Serial.begin(9600); // initialize print
那么python需要相同的波特率
ser = serial.Serial('COM3', 9600, timeout=.1)
添加回答
举报
0/150
提交
取消