Befehl Input macht bei 2. Befehl schlapp

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Befehl Input macht bei 2. Befehl schlapp

      Hi,

      wie der Titel bereits erläutert habe ich (wiedermal a_48_7237538e ) Probleme, wenn ich über das Terminal Daten an meinen ATmega schicken möchte...

      Die erste Variable gibt er immer ohne Probleme per Print-Befehl zurück, jedoch ab der zweiten wird die Variable nicht mehr mit dem eingegebenen Wert gefüttert...dabei spielt auch der Datentyp keine Rolle...
      Anbei der Code:


      BASCOM Source Code

      1. $regfile = "m16def.dat"
      2. $crystal = 8000000
      3. $hwstack = 32
      4. $swstack = 24
      5. $framesize = 24
      6. $baud = 38400
      7. Dim Speed as Single
      8. Dim Length as Word
      9. Input "Gebe eine Länge ein: " , Length
      10. Print Length ; " mm"
      11. Input "Gebe deine Geschwindigkeit an: " , Speed
      12. Print Speed ; " m/min"
      13. End
      Display All
      Ich habe ihn schon durch den Simulator gejagt ohne Probleme...dort tut es was es soll, nur bei meiner Hardware macht er Probleme...
      Ob das Problem auch bei älteren Versionen existiert weiß ich nicht, da ich aktuell keine mehr habe und auch damals nie irgendwelche Programme mit Terminaleingabe geschrieben hatte...

      Ich benutze die Version 2.0.8.1

      Hat jemand die Gleichen Probleme wie ich? Muss ich irgendwas danach clearen? Mit dem Input befehl habe ich bisher noch nicht so viel gemacht, Im Notfall werde ich die Daten Statisch im Programm rein schreiben...ist nur für einen Versuch gedacht bei dem ich die Werte einer Funktion übergeben wollte ohne sie von Vorneherein immer im Programm ab zu ändern und den Chip immer wieder neu brennen zu müssen

      Edit: ich habe mal noch die Bilddatei angehängt, was ich im Terminal ausgegeben bekomme (nicht wundern, ich habe hier zum testen die Beiden Inputs und Prints von oben nach unten getauscht...)

      Gruß Kai
      Files
      • Serial.jpg

        (98.22 kB, downloaded 22 times, last: )

      The post was edited 1 time, last by Crazy_Prof_93 ().

    • Ich sehe da in deiner zweiten Eingabe vor dem Wert "100" ein "\n" (=LineFeed).
      Checke das mal mit 1200bd. Wenn es dann weg... :)

      INPUT soll vom Prinzip die Daten mit einer ENDE-Kennung übernehmen. Das ist in der Regel die Sequenz CRLF (\r\n).
      Es kann sein, das auch bei einem "Solo"-LF der INPUT beendet wird. Ist halt das letzte erwartete terminierungs Zeichen.
      Das kann durch die Baudrate entstehen

      PS.: sehe grad, du gehst direkt über die default- serielle...
      Dann könnte auch das schon helfen:

      Config Com1 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
      Config Serialin = Buffered , Size = 25
      Dann aber auch INPUT #1, [deine Variable]
      cu zipp

      The post was edited 4 times, last by zipp ().

    • Crazy_Prof_93 wrote:

      Michael wrote:

      INPUT erwartet nur CR.
      Das LF steckt noch in der Pipeline und versaut die nacholgende Variable.
      Abhilfe schafft Config Input = CRLF oder ohne LF senden.
      Dummheitsfehler... Das wars a_64_3a718cae a_64_3a718cae ... ich danke dir Michael a_17_af3b400f ... (ich hatte es tatsächlich irgendwo gelesen...und doch überlesen a_71_f9c57bbe )...aber für die Zukunft weiß ich bescheid...
      Aus den Fehlern anderer zu lernen ist zwar bequem, aus eigenen Fehlern zu lernen aber wesentlich nachhaltiger. Diese Dinge vergisst man zukünftig nicht mehr.
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.