我想通過Arduino上的Serial.write()一次發送六個整數,並將它們發送給python。到目前爲止,我已經設法將整數轉換爲字節指針(我認爲這是名稱)並通過串行發送它們。但是,當我嘗試在python端重新組裝它們時,我收到了一些我不想看到的奇怪數字。重組從Arduino發送到Python的串行數據
Arduino的代碼:
int myInts[6]= {1455, 1446, 6766, 974, 365, 455};
void setup()
{
Serial.begin(9600);
}
void loop()
{
byte *p = (byte)myInts;
for(byte i = 0; i < sizeof(myInts); i++){
Serial.write(p[i]);
}
}
Python代碼
import argparse
import numpy
import time
import serial
import struct
ser = serial.Serial('/dev/ttyACM0', 9600)
while True:
b = ser.read(4)
i = struct.unpack('i' ,b)
print(i)
輸出:
(-1090650113,) (285341695) (10683141) (-1090650177,) (285341695,) (10683141,)
謝謝!
Vik
非常感謝!這是一個完美的回覆!在過去,我使用arduino中的Serial.println(),但是我在python方面得到了一些奇怪的字符串,例如「/ xff」或「/ xfe」。我也讀過Serial.write()更適合發送數據,這就是我想使用字節的原因,因爲我擔心使用Strings會導致問題,就像使用Serial.print()一樣。你怎麼看? – VikramB
@VikramB我認爲字符串在Arduino上最簡單。如果我覺得我的答案是最好的,我希望你能夠點擊複選標記「接受」我的答案。 – TomServo
我已經嘗試發送一個字符串通過Serial.write通過投我想發送到一個字符串的整數,但我得到:「沒有匹配的函數調用'HardwareSerial ::寫(字符串&)'」 – VikramB