Добрый день. У меня тоже проблема с Arduino (Mega 2560) и OpenWRT (MR3020).
С помощью указателей передаю четыре переменные типа float, через com-usb Arduin’ы:
for(int i=0;i<4;i++)
Serial.write(*(prt_t_in+i));
for(int i=0;i<4;i++)
Serial.write(*(prt_t_out+i));
for(int i=0;i<4;i++)
Serial.write(*(prt_h_in+i));
for(int i=0;i<4;i++)
Serial.write(*(prt_h_out+i));
for(int i=0;i<4;i++)
Serial.write(*(prt_mmHg+i));
delay(2000);
На роутере с помощью Python получаю четыре float’а
data_str = serial_port.read(20)
raw_t_in = struct.unpack_from('f', data_str[:4])
raw_t_out = struct.unpack_from('f', data_str[4:8])
raw_h_in = struct.unpack_from('f', data_str[8:12])
raw_h_out = struct.unpack_from('f', data_str[12:16])
raw_pressure = struct.unpack_from('f', data_str[16:])
t_in = float()
t_out = float()
h_in = float()
h_out = float()
pressure = float()
for line in raw_t_in:
t_in += float(line)
print(t_in)
for line in raw_t_out:
t_out += float(line)
print(t_out)
for line in raw_h_in:
h_in += float(line)
print(h_in)
for line in raw_h_out:
h_out += float(line)
print(h_out)
for line in raw_pressure:
pressure += float(line)
print(pressure)
Проблема заключается в следующем, что в Windows’е это все отлично работает. А в роутере
В итоге получаются совсем не те цифры что отправляет Arduino.
Авто зброс контроллера по линии DTR отключен. Как победить эту проблему?