инструкция addt дисплея Nextion
Я новичок в Nextion display. Я делаю модель осциллографа с дисплеем и Arduino Uno. Я использовал компонент формы волны. Я просмотрел набор инструкций и нашел две инструкции для отправки данных в компонент формы волны. Инструкция "добавить" мне понятна. Попробовал и получил результат. Но инструкция "addt" мне непонятна. Я послал инструкцию
addt 1,0,30\xFF\xFF\xFF
У меня есть кое-что на дисплее, чего я не могу понять. Пожалуйста, кто-нибудь объясните, что делает инструкция "addt"....... Я также наткнулся на термин "режим передачи данных" в соответствии с этой инструкцией в документации. Пожалуйста, объясните и это тоже ...
Заранее спасибо .....
@Aravind S, 👍1
Обсуждение2 ответа
addt - это объемный вариант add.
Вместо того, чтобы использовать что-то вроде:
add 1, 0, 19
add 1, 0, 39
add 1, 0, 85
add 1, 0, 98
вы можете сгруппировать их все вместе с помощью дополнения:
addt 1, 0, 4
<5ms delay>
\x13\x27\x55\x62
Третий параметр команды addt - это количество значений, которые вы хотите отправить. Затем вы должны оставить по крайней мере 5 мс после отправки команды, чтобы дисплей был готов к приему (он фактически отправит вам сигнал "go" \ xFE \ xFF \ xFF \ xFF. Вы отправляете данные в виде необработанных двоичных значений (показано выше в виде escape-последовательностей строк C), и после того, как он получил указанное число, он отвечает сигналом "ок" \xFD \ xFF \xFF \xFF.
Максимальное количество значений, которые вы можете отправить в одном пакете, - 128.
Я попробовал пример кода... SoftwareSerial nextion (10,11); nextion.print("addt 1,0,5"); задержка (5); nextion.print("\x12\ x13\x14\x15\x16\xFF\xFF\xFF"); на экране ничего не появилось. Разве то, что я написал, неправильно???, @Aravind S
@Majenko, не могли бы вы добавить \xFF\ xFF\ xFF после команды 'addt' и добавить чтение сигнала 'go' с последовательного входа в ваш псевдокод?, @Jot
У меня всё работает. Думаю, в документации какая-то путаница. Во-первых, максимальное значение графика — это высота графика. Например, если высота графика 190, то данные будут обрезаны по высоте 190.
void GuiAddEscWrite(char* str)
{
int len = strlen(str);
for (int i = 0; i < NUM_ENDING_ESC; i++) str[len + i] = 0xff;
NEX_COM.write(str, len + NUM_ENDING_ESC);
str[len + NUM_ENDING_ESC] = 0; // конец строки
}
//addt <waveform>, <channel>, <qty>
void GuiShowWaveform(char* data, uint32_t channel, uint32_t qty)
{
char str[255];
sprintf(str, "addt %d,%d,%d", idPlotRGB, (int)channel, (int)qty);
GuiAddEscWrite(str); // добавить ffffff
for (uint32_t i = 0; i < strlen(str); i++) Serial.printf("%c", str[i]); Serial.println();
delay(5);
for (uint32_t i = 0; i < qty; i++) Serial.printf(" %d", data[i]); Serial.println();
NEX_COM.write(data, qty);
}
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- avrdude ser_open() can't set com-state
- Как подключиться к Arduino с помощью WiFi?
- Mac OSX Yosemite не отображает последовательные порты для Uno R3
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
Знаете ли вы страницу "набор инструкций nextion"? https://www.itead.cc/wiki/Nextion_Instruction_Set#addt:_Add_data_to_waveform_component_in_volume, @Jot
ДА....Я прошел через это. Я узнаю о добавлении инструкции только из этого. Но я не могу понять, что делает инструкция addt....., @Aravind S
Третий параметр для команды "добавить" - это "val", значение. Третий параметр для команды "addt" - это "qty", количество байтов, которое будет следовать за ней. В вашем примере у вас есть "30", поэтому вам нужно 30 байт с данными между "30" и "\ xFF \ xFF \ xFF"., @Jot
Итак, должен ли я дать 30 значений с запятыми между "30" и "\ xFF \ xFF \xFF"????, @Aravind S
Я уже не знаю, как работает этот специальный режим. Я ищу пример, но пока не нашел его. Я думаю, что команда addt должна быть закрыта "\ xFF \ xFF \ xFF", и после этого следуют данные., @Jot