Noch einmal NEXTION

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Noch einmal NEXTION

      Hallo zusammen,

      erst einmal möchte ich mich bei Euch noch für die vielen Infos bei meiner letzten Anfrage bedanken.

      Ich habe jetzt ein Projekt angefangen, bei dem ich mal wieder nicht so recht durch blicke.

      Hintergrund zum Programm:

      Ich fahre ein sehr altes Auto, bei dem man den Zündzeitpunkt noch von Hand am Lenkrad verstellen muss. Die Verstellung
      des Zündzeitpunktes hängt von der Drehzahl des Motors ab.

      Also die Drehzahl mit einem Hallsensor direkt am Kurbelwellenrad abgenommen. Den Zündzeitpunkt dann mit einem Sevo aus dem Modellbau
      entsprechend der Drehzahl verstellt.

      Das ganze funktioniert. Die Drehzahl und die Winkelverstellung wird auf einem Nextion dargestellt.

      Viele Programmzeilen habe ich hier aus dem Forum übernommen.

      Jetzt mein Problem:

      Ich möchte mit einem Button auf dem Nextion die Verstellung inaktiv schalten.
      Das Problem ist nun, das ich die Infos, die über die serielle Schnittstelle nicht auseinander dividiert bekomme.

      Wo ist hier mein Fehler?
      Das Programm habe ich angehängt.

      Für Eure Hilf wäre ich sehr dankbar.

      Gruß
      Thomas

      Zündzeitpunkt.bas
      480x320-1.zip
    • Nextion Buttonabfrage

      Ich habe hier aus dem Forum folgende Zeilen übernommen.


      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
      Else
      Ende=0
      End If
      Return


      '_____________________________

      Das Nextion übergibt bei einem Tastendruck folgendes:

      65 00 06 01 FF FF FF

      00 ist die Seite
      06 ist die Taste

      Ich bekomme diese Übergabe nicht aufgeschlüsselt
    • Du hast deinen Eingansstring und mit Newdata hast du ein Flag, dass neue Daten anstehen.
      In der Hauptschleife zerlegst du jetzt den String per Mid-Befehl und holst per Hexval die Daten raus:

      BASCOM-Quellcode

      1. Dim Eingangsstring As String * 20
      2. Dim Hilfsstring As String * 2
      3. Dim Numerischedaten(20) As Byte
      4. Dim Schleifenzaehler As Byte
      5. Dim Stringlaenge As Byte
      6. Dim Newdata As Bit
      7. Dim Mitzaehler As Byte
      8. Eingangsstring = "65000601FFFFFF"
      9. Do
      10. If Newdata = 1 Then
      11. Stringlaenge = Len(eingangsstring)
      12. Mitzaehler = 1
      13. For Schleifenzaehler = 1 To Stringlaenge Step 2
      14. Hilfsstring = Mid(eingangsstring , Schleifenzaehler , 2)
      15. Numerischedaten(mitzaehler) = Hexval(hilfsstring)
      16. Incr Mitzaehler
      17. Next
      18. Newdata = 0
      19. End If
      20. Loop
      21. Serieller_interrupt:
      22. 'Datensammeln über UDR und Din
      23. 'bei fertigem Datentelegramm unbedingt Datin(x) nach Eingangsstring(x) kopieren!
      24. Return
      Alles anzeigen
      Im Array Numerischedaten(x) stehen jetzt deine numerischen Daten (wie nützlich doch die Möglichkeit ist, den Variablen richtige Namen zu geben, finde ich)
    • Warum Select Case?


      BASCOM-Quellcode

      1. If Newdata = 1 Then
      2. if Datin(1) = &H65 and Datin(2) = &H0 and Datin(3) = &H06 then
      3. ...
      4. end if
      5. Newdata = 0
      6. end if

      oder, wenn du verschiedene Tasten auswerten willst


      BASCOM-Quellcode

      1. If Newdata = 1 Then
      2. if Datin(1) = &H65 and Datin(2) = &H0 then
      3. Select Case Datin(3)
      4. Case &H01 ...
      5. Case &H02 ...
      6. Case &H03 ...
      7. Case &H04 ...
      8. Case &H05 ...
      9. Case &H06 ...
      10. end select
      11. end if
      12. Newdata = 0
      13. end if
      Alles anzeigen
      Code first, think later - Natural programmer :D