arduino + nextion
- Войдите на сайт для отправки комментариев
Вс, 20/11/2016 - 17:38
Почему после передачи с экрана на ардуину значения переменной (2 значение массива) , ардуина начинает постоянно читать сериал?
int s = 0; void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: int array[16]; while (Serial.available() > 0) { for (int i = 1 ; i < 16; i++) { array[i] = Serial.read(); Serial.println(array[i]); delay(20); } array[16] = '\0'; s = array[2]; } Serial.print("n1.val="); Serial.print(s*2); Serial.write(0xff); Serial.write(0xff); Serial.write(0xff); //delay(500); }
данные с порта
n1.val=510яяяn1.val=510яяяn1.val=510яяяn1.val=510яяяn1.val=510яяяn1.val=510яяяn1.val=510яяя0 255 255 255 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 n1.val=510яяяn1.val=510яяяn1.val=510яяяn1.val=510яяяn1.val=510яяяn1.val=510яяяn1.val=510яяя0 255 255 255 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
Надо нормальную процедуру приёма написать. Если следом идут ещё данные, то писать в конец или другой буфер. А потом уже разбирать что пришло.
Почему после передачи с экрана на ардуину значения переменной (2 значение массива) , ардуина начинает постоянно читать сериал?
Потому, что у Вас программа так написана. Вы проверяете что там что-то пришло, а после этого, уже без всякий проверок читаете 16 байтов. Есть там что-то или нет, Вам пофигу, Вы читаете :)
Так я проверяю если что то пришло
А нужно мне только второе число из всей посылки, которое записываю в переменную s
Сама посылка от дисплея имеет вид
Ну, проверяете, а потом в строках 13-17 читаете 16 байтов! При этом Вы понятия не имеете пришли они или нет, да и посылка Ваша всего 8 байтов.
Вопрос решился проверкой получен ли 0х71, если получен то читаем следующий и сохраняем в переменную. Далее читаем все остальные чтобы очистить буфер сериала.
ну и выложили бы пример рабочий, в друг кто тоже будет голову ломать над ткой же проблемой