Arduino и MR3020

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Ответить
Aleksei
Сообщения: 3
Зарегистрирован: 24 янв 2013, 14:47

Arduino и MR3020

Сообщение Aleksei » 25 янв 2013, 14:31

Добрый день. У меня тоже проблема с 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 отключен. Как победить эту проблему?

Ответить