我想通过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