- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 29

Thema: RS-232 problem. Programm stürzt abundzu ab. Bitte um Hilfe!

  1. #11
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    361
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Der Watchdog bekommt nach jedem Print einen Reset (Gosub Waitingtime, dort gibts nen reset immer). Somit überscheite ich die 2 Sekunden mit Sicherheit nie.

    Ich habe alles im Zeilen gepackt um beim herumscrollen schneller am Ziel zu sein. Leichter zu lesen ist es so nicht da hast du völlig recht aber das sind Routinen die ich eh nie angreife weil die funktionieren seit Jahren schon gut.

    Ich hatte die Auswertungen aus der Sub schon draussen um zu sehen ob es daran lag. Auch da kam es zu Abstürzen. Ich sitze seit einer Woche an diesem Problem und verzweifle schon langsam.

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Richard
    Das Programm wartet nach dem Input Befehl aber sooooo lange bis
    auch ein CR ankommt. INKEY z.B. braucht kein CR.
    Config Serialin1 = Buffered , Size = 10 , Bytematch = 13
    bedeutet, dass das Programm das Label Serial1CharMatch anspringt, wenn ein CR empfangen wurde. Dann funktioniert das Input natürlich schon.
    Aber du hast Recht, ich würde auch nicht den Input Befehl benutzen. Es könnte sein, dass das Label auch angesprungen wird, wenn mehr als 10 Zeichen empfangen wurden und der Buffer überläuft. In dem Fall wäre noch kein CR da.
    Ich würde einfach den Buffer _RS232INBUF0 wegkopieren und damit weiterarbeiten.

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von Accenter

    Das ganze mit dem Input Befehl zu realisieren ist für mich deshalb wichtig, da ich mehrstellige Eingaben auswerten möchte.
    Lese Dir dazu mal INSTR durch, Damit werden z.B. bei den
    RN Motortreiber die Befehle übermittelt/ausgewertet/verarbeitet.

    Gruß Richard

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    361
    Ja Richard ich denke die Inputauswertung ist echt das Problem. Ich hab nur keine Ahnung wie ich mit INKEY mehrere Stellen abfragen kann. Also beim Login z.B. möchte ich nach Eingabe eines Passwortes alles nötige zurückbekommen. Ein einstelliges Passwort zu haben wäre nicht schlau Auch wenn es keine sensiblen Daten sind die meine Wohnungssteuerung ausspuckt.

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Accenter
    Der Watchdog bekommt nach jedem Print einen Reset (Gosub Waitingtime, dort gibts nen reset immer). Somit überscheite ich die 2 Sekunden mit Sicherheit nie.
    Kommt es denn auch zu "Abstürzen", wenn du den Watchdog deaktivierst?

  6. #16
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    361
    Bei langen RS-232 Befehlen kommt es nun nicht mehr zu Abstürzen ohne Watchdog!! Endlich mal was positives. Ich frage mich jetzt nur woran das liegen kann.

  7. #17
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von Accenter
    Ja Richard ich denke die Inputauswertung ist echt das Problem. Ich hab nur keine Ahnung wie ich mit INKEY mehrere Stellen abfragen kann. Also beim Login z.B. möchte ich nach Eingabe eines Passwortes alles nötige zurückbekommen. Ein einstelliges Passwort zu haben wäre nicht schlau Auch wenn es keine sensiblen Daten sind die meine Wohnungssteuerung ausspuckt.
    Code:
    Dim S As String * 30
    Dim I As Integer
    
    
    Print "**** RN-Control  V1.4 *****"
    Print "Demoprogramm zu RN-MotorControl"
    
    
    Do
      Wait 3
      Print "##" ; Chr(3) ; Chr(5) ; Chr(3) ; Chr(0)
    Dim S As String * 30
    Dim I As Integer
    
    
    Print "**** RN-Control  V1.4 *****"
    Print "Demoprogramm zu RN-MotorControl"
    
    
    Do
      Wait 3
      Print "##" ; Chr(3) ; Chr(5) ; Chr(3) ; Chr(0)            'Beide Motoren Links drehen
      Input S
      If Instr(s , "99") = 0 Then Beep

    Input S
    If Instr(s , "PASSWORD") = 0 Then Beep

    Muss natürlich angepasst werden aber die Demos laufen gut.

    Gruß Richard

  8. #18
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    361
    Instr schaut dann also einfach nach ob im Puffer mein Passwort erhalten ist? In deinem Beispiel habe ich aber wieder ein Input. Ich fürchte da besteht das problem weiterhin. Oder hab ich da einen Denkfehler?

  9. #19
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo Accenter,
    kannst du nicht mal deine Dims einstellen. Dann könnte man dein Programm mal kompilieren.

    Wenn du ByteMatch benutzt, steht deine Eingabe schon in einem Inputbuffer, nämlich _RS232INBUF1. Allerdings als Bytes.
    Kopierst du einfach mit einer kleinen Schleife weg.
    Code:
    Const Inputsize = 10
    Const Inputsize1 = Inputsize + 1
    Config Serialin1 = Buffered , Size = Inputsize , Bytematch = 13
    Dim Myinputstr As String * Inputsize
    Dim Myinputbyte(inputsize1) As Byte
    ...
    Serial1charmatch:                                           'Datenempfang Von UART2 Putty Terminal iPhone von Unterwegs'
       Pushall
       Disable Int1
       Reset Watchdog
       For I = 1 To Inputsize
          Myinputbyte(i) = _rs232inbuf1(i)
       Next I
       Received_flag = 1
       Clear Serialin1
       Enable Int1 
       Popall
    Return

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von Accenter
    Instr schaut dann also einfach nach ob im Puffer mein Passwort erhalten ist? In deinem Beispiel habe ich aber wieder ein Input. Ich fürchte da besteht das problem weiterhin. Oder hab ich da einen Denkfehler?
    INSTR schaut IM String nach ob "xxxxx" enthalten ist. Mit input
    hast Du leider recht ich hatte noch nichts gegessen und war erst
    einmal beim Subway.

    Der Print befehl hängt ja automatich ein CR an, es gibt auch Terminals
    die das können.Hterm z.B. kann man so einstellen. Mit ISCHARWAITING
    kann man prüfen ob etwas im Eingangsbuffer ist, also mit nen Timer
    IRQ aufrufen und nachsehen dann (enn ja) nach dem IRQ erst Gosub
    input. Wenn mann alle xyz ms nachschaut soll das klappen.

    Oder halt

    Code:
    DO
    INKEY A$
    if A$ =(irgendwas) then abbruch
    B$ = B$+A$
    abbruch
    Print B$
    LOOP
    So kannst Du ohne CR beliebig lange Strings empfangen und
    mit INSTR auswerten (irgendwas) kann z.B. ein ESC sein, nimmt
    man gewöhnlich gerne zum Abbruch.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad