Привет интересующимся!
На самом деле дисплей прост в использовании, но и камней в начале освоения на пути много встречается. Боролся с ним и победил для своего проекта акваконтроллера в силу того, что было жаль потраченных денег на его приобретение, изначально ради интереса))) теперь души в нем не чаю)
Так вот, мой вариант таков:
Чтобы отправить данные от дисплея в контроллер использую оператор "print", чтобы не заморачиваться с получением кода конца передачи, что отправил- то и получил:
Код
buf.txt="140000000000"
print buf.txt
...
или
...
if(v.val==8)
{
buf.txt="338100000"+t1.txt
}
print buf.txt
Тут я использовал текстовую переменную для составления кода из последовательности 12и знаков для передачи , можно и прямо отправить:
Почему именно 12и знаков? Для моего проекта этого было достаточно, чтобы в них зашифровать любую передаваемую на контроллер информацию. Кому как угодно, при приеме и расшифровке учитывайте свою последовательность:
Код
On Urxc Getchar
Enable Interrupts
Enable Urxc
.......
'------------------------- обработчик UART Nextion hmi -------------------------
Getchar:
Disable Urxc
Nextin = ""
A = 0
Do
Varbyte = Inkey() 'берем символ из буфера в формате ASCII
Waitus 80 '80 - 57600 16 000 000 MHz
Select Case Varbyte
Case 0 : Incr A : If A > 5 Then Exit Do 'если дальше буфер пуст за 5 проверок - выходим из цикла
Case Else :
If Varbyte >= 47 And Varbyte <= 58 Then 'берем только цифры и символы согласно таблицы ASCI
A = 0
Nextin = Nextin + Chr(varbyte) 'составляем строку
End If
End Select
Loop
If Len(nextin) = 12 Then Gosub Nextion 'если получили не больше не меньше того что отправили переходим к расшифровке
Enable Urxc
Return
Данный метод приема для меня оказался прост, помехоусточив и исключал большинство ошибок и потерь передачи
Заметьте, работаем по прерыванию UART - без задержек на реакцию нажатия
Далее остается только расшифровать код и использовать по назначению, расчленив код на составляющие и при необходимости оцифровав:
Код
'-------------------------- обработчик комманд от Nextion -----------------------
Nextion:
Nextpagein = Left(nextin , 1) '1-ый символ посылки - номер отправной страницы
Nextpageout = Mid(nextin , 2 , 1) '2-ый символ посылки - номер получаемой страницы
Nextpage = Val(nextpageout)
Nextcom = Mid(nextin , 3 , 1)
Nextcomin = Val(nextcom) '3-ий символ посылки - номер комманды
Nextarg = Mid(nextin , 4 , 9) '4-ый и последующие символы посылки - получаемые параметры
...
Del_buffer 'очищаем буфер приема после всех манипуляций от мусора и помех
Return
Очистка приемного буфера:
Код
'-------------------------очистка входящего буфера UART -----------------------------
Sub Del_buffer()
Do
Waitms 1
Varbyte = Inkey() 'кладем в переменную "В" данные из буфера
Loop Until Varbyte = 0 'выходим из цикла когда в переменную попадет 0 (буфер пуст)
Nextin = ""
End Sub
Чтобы отправить данные от контроллера в дисплей используем следующие методы, просто вот так:
Код
Print "rest" ; : Printbin 255 ; 255 ; 255 ' сброс дисплея
Print "z1.val=" ; Timer2 ; : Printbin 255 ; 255 ; 255 'стрелочный прибор
Print "p0.pic=" ; Varbyte ; : Printbin 255 ; 255 ; 255 'смена картинки
Print "time.txt=" ; : Printbin 34 ; : Print Time$ ; : Printbin 34 ; 255 ; 255 ; 255 'время в текстовую переменную
Print "q0.picc=" ; 11 ; : Printbin 255 ; 255 ; 255 'картинка
Print "h" ; Str(a) ; ".pco=" ; Rgb_next ; : Printbin 255 ; 255 ; 255 'цвет выбираемого слайдера
Print "h" ; Str(a) ; ".val=" ; Rgb_next ; : Printbin 255 ; 255 ; 255 'уровень выбираемого слайдера
Print "dim=" ; Dim_ ; : Printbin 255 ; 255 ; 255 'яркость подсветки дисплея
Print "b" ; Str(varbyte) ; ".txt=" ; : Printbin 34 ; : Print Format(txt , "00") ; ":" ; Format(txt1 , "00") ; : Printbin 34 ; 255 ; 255 ; 255 'можно даже так извратиться, баском все пережует
Главный принцип- любую передачу заканчиваем "Printbin 255 ; 255 ; 255 "
Цифровые данные отправляем без кавычек: Print "z1.val=" ; цифровая переменная; : Printbin 255 ; 255 ; 255
Текстовые данные отправляем в кавычках: Print "time.txt=" ; : Printbin 34 ; : "текст" ; : Printbin 34 ; 255 ; 255 ; 255
Так что не отчаивайтесь, все можно запустить и задействовать
Успехов!