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(DATA, 161); //41 + 54 +64
memcpy(DATA2,DATA,161); //Присваиваем массиву DATA2 160 байт массива DATA
}
time0 = millis();
Compare = false;
}
Так по идеи должно работать ещё быстрее