设置如下:Arduino(Mega2560)接收GPS和遥测数据,通过I2C(Pi = Master)连接到Raspberry Pi。我从Github获得了一些代码,它可以准确地发送和解包浮点数,没有任何问题。但是,我没有发送同类字节流。我创建的C结构是:(Float,Float,Int,Int,Int,Char,Char)。这是我的一些代码:
C:
// callback for sending data
void sendData(){
struct transferData data;
data.latitude = GPS.latitude;
data.longitude = GPS.longitude;
data.hour = GPS.hour;
data.minute = GPS.minute;
data.second = GPS.seconds;
data.lat = GPS.lat;
data.lon = GPS.lon;
uint8_t *ptr = (uint8_t *)&data;
Wire.write(ptr,sizeof(data));
的Python:
data=get_data()
print"Latitude",(get_float(data,0)),(get_char(data,5))
功能如下:
def get_data():
return bus.read_i2c_block_data(address,0);
def get_float(data,index):
bytes = data[4*index:(index+1)*4]
return struct.unpack('f', "".join(map(chr, bytes)))[0]
def get_char(data,index):
bytes = data[(index)*4]
return struct.unpack('c', "".join(map(chr, bytes)))[0]
我的python代码不会通过get_char()函数运行。
我也尝试过:
buff = bus.read_i2c_block_data(address, 0)
buff = struct.unpack('f f i i i c c', buff)
print buff
但那也没有用。有没有人对我有一些指导?