Распакуйте структуру C с помощью Python, переданного через I2C

Настройка такова: Arduino (Mega2560), принимающий данные GPS и телеметрии, который подключен к Raspberry Pi через I2C (Pi = Master). Я получил некоторый код от 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

Но это тоже не сработало. У кого-нибудь есть руководство для меня?

0 ответов

Другие вопросы по тегам