Hallo wie kann ich das Beispiel so abändern, dass ich nur ganze Zahlen empfangen kann. Ich möchte von 1 bis 25 Leds schalten - über das Terminal. Danke
Alles anzeigen
Quellcode
- '--------------------------------------------------------------------
- ' Test mit Nextion Display 3.5 320x480 Enhanced
- '
- 'Nextion Befehl:
- 'für Button
- 'print "b1" für ID Button
- 'printh ff ff ff für End Sequenz
- '
- '
- 'für Slider
- 'print "h0" für ID Slider
- 'get h0.val Befehl Get sendet wert vom Slider und die End Sequenz
- '
- '
- '
- 'erster grundlegender Test
- '
- 'Date:21.04.2017
- '
- 'hkipnik@aol.com
- '***************************************************************************************************
- $regfile = "m328pdef.dat"
- $crystal = 16000000
- $hwstack = 100
- $swstack = 100
- $framesize = 100
- '***************************************************************************************************
- 'Serial for Nextion Display
- 'RX Pin D0 --> TX Pin Nextion TX Pin D1 --> RX Pin Nextion
- $baud = 9600
- '***************************************************************************************************
- 'Config PortC.3 for Serial Debug 9600 Baud
- 'mit RS232 Konverter Daten zum PC senden
- Open "comc.3:9600,8,n,1" For Output As #2
- '***************************************************************************************************
- Dim Bc As Byte 'byte counter
- Bc = 0
- Dim Datin(30) As Byte 'Data in Buffer
- Dim Datstr As String * 30 At Datin(1) Overlay
- Dim Din As Byte
- Dim Ende As Byte
- Dim New_data As Byte
- Dim Lang As Byte
- Dim Zbv As Byte
- Dim Id_str As String * 3
- Dim Help_str As String * 20
- Dim Keybord As String * 20
- Dim Zahler As Byte
- '***************************************************************************************************
- '
- On Urxc Rec_isr 'define serial receive ISR
- Enable Urxc 'enable receive isr
- Enable Interrupts 'enable interrupts
- '***************************************************************************************************
- Print #2 , "Test Nextion"
- Do
- If New_data = 1 Then
- New_data = 0
- Lang = Bc 'Byte counter sichern
- Bc = 0 'Byte counter reset
- Id_str = Chr(datin(1)) 'ID ersten 2Byte
- Id_str = Id_str + Chr(datin(2))
- ' Print #2 , Id_str
- ' For Zbv = 3 To Lang
- ' Print #2 , Chr(datin(zbv));
- ' Next
- ' Print #2,
- Select Case Id_str
- Case "b1": 'Button B1 n0++
- Print #2 , "Button n0++"
- Incr Zahler 'Test Dummy
- Help_str = "n0.val="
- Help_str = Help_str + Str(zahler) 'Wert an Ausgabe n0 senden
- Print Help_str; 'Befehl senden
- Printbin &HFF ; &HFF ; &HFF; 'Stopp-Sequenz
- Case "b2":
- Print #2 , "Button n0--"
- Decr Zahler 'Test Dummy
- Help_str = "n0.val="
- Help_str = Help_str + Str(zahler) 'Wert an Ausgabe n0 senden
- Print Help_str; 'Befehl senden
- Printbin &HFF ; &HFF ; &HFF;
- Case "b4":
- Print #2 , "Button newtext"
- Case "b3":
- Print #2 , "Page0"
- Help_str = "n0.val="
- Help_str = Help_str + Str(zahler) 'Test Wert an Ausgabe n0 Page0 senden
- Print Help_str;
- Printbin &HFF ; &HFF ; &HFF;
- Case "b0":
- Print #2 , "Page1"
- Incr Zahler
- Help_str = "j0.val="
- Help_str = Help_str + Str(zahler) 'Test Wert an Progress Bar j0 Page1 senden
- Print Help_str;
- Printbin &HFF ; &HFF ; &HFF;
- Case "b5":
- Print #2 , "Page2"
- Case "kb":
- Print #2 , "Rückgabe"
- Lang = Lang - 5 'Start ab 3Byte Letzten 3 Byte sind FF FF FF
- Keybord = Mid(datstr , 3 , Lang)
- Print #2 , Keybord
- Case "h0": 'Slider Page0
- Print #2 , "Sliderwert: ";
- ' Print #2 , Datin(3) '113 Hex 71 Rückgabe einer 4-Byte-Zahl
- Print #2 , Datin(4) 'Wert Slider
- ' Print #2 , Datin(5) 'Bei bedarf 2 wert little endian
- End Select
- End If
- 'mach irgendwas
- Loop
- Close #2
- End
- '***************************************************************************************************
- 'Der Interrupt wird immer ausgelöst,wenn ein Zeichen empfangen wurde.
- 'Wurde eine komplette Zeichenkette empfangen, also das Ende (FF FF FF) erkannt
- 'wird New_data auf 1 gesetzt damit wird dem Hauptprogramm mitgeteilt
- 'daß eine neue Zeichenkette zur Verarbeitung bereit steht.
- '***************************************************************************************************
- Rec_isr:
- Din = Udr 'Byte einlesen
- If Bc <= 30 Then 'byte conter kleiner als 30
- Incr Bc 'Byte Conter +1
- Datin(bc) = Din 'din nach Datin Array kopieren
- Else
- Bc = 0 'wenn byte conter größer als 30 auf null zurücksetzen
- End If
- If Din = &HFF Then 'Nextion sendet 3xFF als end marker
- Incr Ende
- If Ende = 3 Then 'wenn 3xFF angekommen Newdata=1
- Set New_data
- Ende = 0 'FF End Zähler wieder auf 0 setzen
- End If
- End If
- Return