设置如下: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));

蟒蛇:

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

但这也不起作用 . 有没有人对我有一些指导?