Тема: CITROEN-ARDUINO
Показать сообщение отдельно
Старый 27.03.2016, 02:49   #247
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

xmetal
Спасибо за пример сравнения.

По поводу данных.
Ведройд не сохраняет в себе ни каких значений, он тупо считает и выводит то, что на него приходит.

Ардуина кладёт в массив данные с интересующих меня ID, данные по шине идут естественно один пакет за раз, а мне иногда нужны данные из разных пакетов, так что дуина их складывает в массив, а потом все изменения выкидывает в порт.
Тоесть выдаёт всё за раз.

Вот что в итоге сотворил.
При каждом приходе интересующего меня ID данные складываются в массив и пишется флаг Compare = true;
Ну а дальше проверяется в основном цикле вышли ли 100мс и состояние флага.
И если вышли и флаг true, то сравниваются массивы и если не равны, то выдаём данные в порт и записываем данные из массива 1 в массив 2 (тоесть с тем, с которым в дальнейшем будем сравнивать).
PHP код:
if ((millis() - time0) > 100 && Compare){
arrcmp memcmp(DATA,DATA2,161);
  if (
arrcmp != 0)
  {
      
Serial.write(DATA161); //41 + 54 +64
      
memcpy(DATA2,DATA,161); //Присваиваем массиву DATA2 160 байт массива DATA
  
}
time0 millis();
Compare false;

Так по идеи должно работать ещё быстрее
T_r_D вне форума   Ответить с цитированием