Befehl Input macht bei 2. Befehl schlapp

    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!

    • 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-Quellcode

      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
      Alles anzeigen
      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
      Dateien
      • Serial.jpg

        (98,22 kB, 26 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von 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

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von zipp ()

    • Crazy_Prof_93 schrieb:

      Michael schrieb:

      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.