- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Anfänger Fragen: inkey, waitkey oder Ischarwaiting verwenden

  1. #11
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    E-Bike
    Bei
    CONFIG SERIALIN = BUFFERED ........
    Wird der UART-interrupt von Bascom verwendet. Wenn du ihn auch definierst, kommt ihr euch in die Quere.
    "ISCHARWAITING" sieht nach, ob im Buffer ungelesene Zeichen stehen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    19.06.2007
    Beiträge
    33
    aha ok, also muß ich das nicht umstellen, wäre aber sinnvoller....


    jetzt wäre nur noch intressant warum das Programm schon beim 2. und nicht erst beim 7. richtigen Code durchläuft.

  3. #13
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Da seh ich das Problem, daß du ja genau das Zeichen abcheckst, das noch NICHT gekommen ist
    Buffer(Bufferindex) = INKEY() DA STEHT DAS ZEICHEN

    incr Bufferindex ' !!!!!!!!!!!!!!!!!!!!!!!!

    If Bufferindex > 7 Then
    Goto Abfrage:
    End If
    End If

    Abfrage:
    If Buffer(bufferindex) = B Then BUFFERINDEX ZEIGT EIN ZEICHEN HINTER DAS, DAS GRAD GEKOMMEN IST
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    19.06.2007
    Beiträge
    33
    ja ich steh total auf der Leitung

    Ich wäre sehr dankbar wenn mir jemand die komplette Lösung geben könnte.

    BITTE !!!

    M.f.G.
    Jürgen

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    19.06.2007
    Beiträge
    33
    jetzt ist bei diesem Thema schon über ein Monat vergangen und ich komme nicht weiter.

    Hab es mit ONRXD , Ischarwaiting/waitkey, ringpuffer usw. probiert.

    Ich bekomme erst nach dem zweiten mal eine Antwort.
    d.h. wenn der Code zum zweiten mal empfangen wird geht die Antwort raus.

    Was mach ich falsch ???

    Es ist wie wenn noch eine Bestätigung fehlen würde das jetzt der Code richtig im Speicher liegt.

    Mit diesem Code funzt es noch am besten:

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400                                          'Quarz: 3.6864 MHz
    $baud = 9600                                                'Baudrate der UART: 9600 Baud
    Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
    
    Config Serialout = Buffered , Size = 20
    Config Serialin = Buffered , Size = 20
    
    Dim B As String * 7
    Dim Check1 As String * 7
    Dim Check2 As String * 7
    Dim Check3 As String * 7
    Dim Check4 As String * 7
    Dim Check5 As String * 7
    Dim Check6 As String * 7
    Dim Check7 As String * 7
    Dim Msg(7) As String * 1
    Dim I As Byte
    Dim C As Byte
    
    
    Enable Interrupts
    
    I = 0
    Do
    Anfang:
      C = Ischarwaiting()
      For I = 1 To 7
      If C <> 0 Then
      Msg(i) = Waitkey()
      Next I
      Check1 = Chr(msg(1)) + Chr(msg(2)) + Chr(msg(3)) + Chr(msg(4)) + Chr(msg(5)) + Chr(msg(6)) + Chr(msg(7))
      Check2 = Chr(msg(7)) + Chr(msg(1)) + Chr(msg(2)) + Chr(msg(3)) + Chr(msg(4)) + Chr(msg(5)) + Chr(msg(6))
      Check3 = Chr(msg(6)) + Chr(msg(7)) + Chr(msg(1)) + Chr(msg(2)) + Chr(msg(3)) + Chr(msg(4)) + Chr(msg(5))
      Check4 = Chr(msg(5)) + Chr(msg(6)) + Chr(msg(7)) + Chr(msg(1)) + Chr(msg(2)) + Chr(msg(3)) + Chr(msg(4))
      Check5 = Chr(msg(4)) + Chr(msg(5)) + Chr(msg(6)) + Chr(msg(7)) + Chr(msg(1)) + Chr(msg(2)) + Chr(msg(3))
      Check6 = Chr(msg(3)) + Chr(msg(4)) + Chr(msg(5)) + Chr(msg(6)) + Chr(msg(7)) + Chr(msg(1)) + Chr(msg(2))
      Check7 = Chr(msg(2)) + Chr(msg(3)) + Chr(msg(4)) + Chr(msg(5)) + Chr(msg(6)) + Chr(msg(7)) + Chr(msg(1))
      B = Chr(&H00) + Chr(&H05) + Chr(&H08) + Chr(&H7d) + Chr(&H00) + Chr(&H70) + Chr(&H00)
      If B = Check1 Or B = Check2 Or B = Check3 Or B = Check4 Or B = Check5 Or B = Check6 Or B = Check7 Then
      Goto Klappen:
      Else
      Goto Anfang
      End If
      End If
    Loop
    
    Klappen:
    
    Waitms 200
    Printbin &H3F ; &H06 ; &H00 ; &H0C ; &H01 ; &H39 ; &H01 ; &H0C ;
    Waitms 200
    Printbin &H3F ; &H06 ; &H00 ; &H0C ; &H02 ; &H39 ; &H01 ; &H0F ;
    
    Goto Anfang
    
    End
    (es sind ein paar unnütze Zeilen drinn, kommt von der probiererei)

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen