我正在嘗試從 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
提交
取消