odnośnie odbioru danych z panela nextion HMI ...dziwne rzeczy
mam taki kodzik - proszę o wyrozumiałość jest to program testowy i pewne rzeczy są nie używane
- $regfile = "m8adef.dat"
- $crystal = 8000000
- '----------------------------
- $hwstack = 128
- $swstack = 128
- $framesize = 128
- $baud = 9600
- Dim Napis As String * 15
- Const Koniec = &HFF
- '-------------------
- Declare Sub Oproznij_bufor
- Declare Sub Odczytaj_sprzetowy_uart
- '------------------------------
- Dim Kod As String * 1
- Dim Bufor As Byte
- Dim Dane As String * 7
- Dim Test_string As String * 10
- '-----------------------------
- Dane = ""
- Test_string = "sdsdsdsds"
- Dim Tmp_dana As String * 8
- Dim Dana_bajty As String * 8
- 'konfiguracja wyświetlacza LCD
- Config Lcd = 16 * 2
- Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
- Cursor Off
- Cls
- Config Serialin = Buffered , Size = 128
- Config Serialout = Buffered , Size = 128
- 'zmienna do przechowywania wilgotności
- Dim Crc As Byte 'zmienna do przechowywania bajtów parzystości
- Dim Mybyte As Byte
- Dim Sensor_data As String * 40 'tutaj będą zapisywać się dane z czujnika
- Dim Tmp_str8 As String * 8
- Dim Count As Byte 'zmienna do obliczania odebranych bitów
- Enable Interrupts
- '-################################################################################
- Do
- '------
- 'Napis = "n2.val="
- 'Print Napis ;
- 'Printbin Koniec ; Koniec ; Koniec
- 'Napis = "n3.val="
- 'Print Napis ;
- 'Printbin Koniec ; Koniec ; Koniec
- 'zapytanie
- Print "get n0.val";
- Printbin Koniec ; Koniec ; Koniec
- '----------odbiór danych
- ' Bufor = Ischarwaiting() 'Sprawdz czy cos jest w buforze
- ' If Bufor = 1 Then
- Waitms 100
- Gosub Odczytaj_sprzetowy_uart 'Jesli jest to odzcytaj
- Waitms 200
- 'Print Dane; 'Odebrane dane wyslij z powrotem
- ' Gosub Oproznij_bufor
- ' End If
- Loop
- '----------------------
- ' Tmp_dana = Left(dane , 1)
- ' Dana_bajty = Tmp_dana
- ' Waitms 100
- ' Cls
- ' Lcd Hexval(tmp_dana)
- 'Loop
- '-------------odbior danych-------
- Odczytaj_sprzetowy_uart:
- Dane = ""
- 'Do 'Odbierz znak po znaku
- ' Kod = Inkey()
- ' Dane = Dane + Chr(kod) 'Zapisz w Dane
- ' Bufor = Ischarwaiting() 'Zakoncz jeśli CR lub brak znaku
- 'Loop Until Bufor = 0 Or Kod = "13"
- 'Return
- Do
- Bufor = Ischarwaiting() 'Sprawdz czy cos jest w buforze
- If Bufor = 1 Then
- Kod = Inkey()
- Lcd Hexval(kod)
- Waitms 500
- Cls
- Else
- Lcd "nowe"
- Waitms 500
- Cls
- Return
- End If
- Loop
- Oproznij_bufor:
- Do
- Kod = Inkey() 'Czyści bufor
- Bufor = Ischarwaiting()
- Loop Until Bufor = 0
- Return
co wychwytuje na wyświetlaczu to ---gdy moja wartość n0. 'zapytanie
Print "get n0.val";
Printbin Koniec ; Koniec ; Koniec
jest wartością np =1
to otrzymuje na wyświetlaczu
26 209 0 0 0 200 200 200
gdy mam watość w n0=2
26 210 0 0 0 200 200 200
a dlaczego nie mam dla n0=5
71 5 0 0 0 255 255 255?
przechwycone dane

