- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 10

Thema: Befehl Input und Output klappen nicht

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164

    Befehl Input und Output klappen nicht

    Anzeige

    E-Bike
    Hallo zusammen,

    ich möchte die Eingabe über den Terminal wieder ausgeben und habe folgendes Programm geschrieben:


    Code:
    Dim Eingabe As Byte
    Dim Ausgabe As Byte
    
    Config Porth = Output
    Out1 Alias Porth.0
    Out2 Alias Porth.1
    Out3 Alias Porth.2
    Out4 Alias Porth.3
    Out5 Alias Porth.4
    Out6 Alias Porth.5
    Out7 Alias Porth.6
    Out8 Alias Porth.7
    
    
    
    Do
       Led = 1
    
       Wait 1
    
       Led = 0
    
       Wait 1
    
       Input "Eingabe machen: " , Eingabe
    
       Ausgabe = Eingabe
    
       Print Ausgabe
    
    
    
    Loop
    
    End
    Leider kann ich im Terminalfenster nur drei Zeichen eingeben. Wenn ich Buchstaben eingebe, werden diese nicht wieder ausgegeben, z.B.: bei Eingabe AAA wird eine 0 im Print ausgegeben.

    Was mache ich falsch, fehlen evt. noch weitere Angaben?

    Grüße

    datatom

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Warum machste diesen Befehl ins Programm:

    Ausgabe = Eingabe

    Schreib doch einfach:

    Print Eingabe

    Damit sparst du dir 1 Variable. Und dann funktioniert es auch. Weil mit dem Input-Befehl wird die Eingabe ja automatisch unter der Variable "Eingabe" gespeichert.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164
    klappt trotzdem nicht

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Also ich habs im Simulator getestet und da funktioniert es. Ist dein Programm was du da oben gepostet hast das komplette oder nur ein Ausschnitt.
    Weil da fehlt noch das $regfile, $crystal, $baud, usw. Und erscheint im Terminal den wenigstens das "Eingabe machen: "? Weil wenn das schon nicht erscheint ist dein RS232 vlt nicht in Ordnung. Du musst Rx mit Tx verbinden und Tx mit Rx.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164
    Sorry, ist nur ein Ausschnitt:

    Code:
    $prog , 255 , &B11011100 ,                                  '&B11011001 ,                                  'Quarz an / Teiler aus / Jtag aus
    $regfile = "m2560def.dat"
    $hwstack = 82                                               '80
    $framesize = 68                                             ' 64
    $swstack = 68                                               '44
    $crystal = 16000000                                         'Quarzfrequenz
    Config Pind.5 = Output
    Led Alias Portd.5
    $baud = 19200
    
    
    'Config Com1 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    'Config Com2 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Config Com3 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    'Config Com4 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    'Open "com1:" For Binary As #1                               'RS232
    'Open "com2:" For Binary As #2                               'RS232
    Open "com3:" For Binary As #3                               'RS232
    'Open "com4:" For Binary As #4                               'RS232
    
    
    Dim Eingabe As Byte
    Dim Ausgabe As Byte
    
    Config Porth = Output
    Out1 Alias Porth.0
    Out2 Alias Porth.1
    Out3 Alias Porth.2
    Out4 Alias Porth.3
    Out5 Alias Porth.4
    Out6 Alias Porth.5
    Out7 Alias Porth.6
    Out8 Alias Porth.7
    
    
    
    Do
       Led = 1
    
       Wait 1
    
       Led = 0
    
       Wait 1
    
       Input "Eingabe machen: " , Eingabe
    
      ' Ausgabe = Eingabe
       Print 1
    
       Print Eingabe                                            'Ausgabe
    
    
    
    Loop
    
    End

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Wenn du mehrere COM-Ports am Controller benutzt und einstellst solltest du das auch bei dem Print hin schreiben. Und du hast da 2x ne Baudrate deffiniert. Einmal ganz oben im Kopf und dann nochmal da drunter. Wenn du COM 3 aktiv hast versuch es mal so:

    Print #3, Eingabe

    Wird den was im Terminal angezeigt? Also schreibt er den wenigstens "Eingabe machen: "?

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    So hab das mal im Simulator getestet. Dieser Code hier funktioniert nur bei Zahlen!

    Code:
    $sim
    $regfile = "m2560def.dat"
    $crystal = 8000000
    
    Dim Eingabe As Byte
    
    Config Com1 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    
    Open "com1:" For Binary As #1
    
    Do
    
       Input #1 , "Eingabe machen: " , Eingabe
    
       Print #1 , Eingabe
    
    
    Loop
    
    End
    Und wenn du, wie bei dir, den COM3 benutzt musst du das COM1 durch COM3 ersetzen und das #1 durch #3.
    So wenn du jetzt Buchstaben eintippen willst musst du statt:

    Dim Eingabe As Byte

    das hier schreiben:

    Dim Eingabe As String * 10

    Damit wird die Variable ein String mit 10 Zeichen länge. Und damit kannst du auch Buchstaben eingeben. Wenn du die Variable nur als Byte oder Integer deffinierst klappt das sonst nicht.
    Ach und das:

    $sim

    muss auch raus, weil das nur für den Simulator ist.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164
    "Eingabe machen" schreibt er. Aber sonst kommen die falschen Werte zurück. Ich lasse extra nochmal einen Wert ausgeben, den ich jedesmal um 1 erhöhe, wenn ich das Programm auf dem Controller ändere. Die Zahl wird ebenfalls richtig ausgegeben, nur der Inputwert leider nicht.

    Code:
    $prog , 255 , &B11011100 ,                                  '&B11011001 ,                                  'Quarz an / Teiler aus / Jtag aus
    $regfile = "m2560def.dat"
    $hwstack = 82                                               '80
    $framesize = 68                                             ' 64
    $swstack = 68                                               '44
    $crystal = 16000000                                         'Quarzfrequenz
    Config Pind.5 = Output
    Led Alias Portd.5
    $baud = 19200
    
    
    Config Com1 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    'Config Com2 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Config Com3 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    'Config Com4 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Open "com1:" For Binary As #1                               'RS232
    'Open "com2:" For Binary As #2                               'RS232
    Open "com3:" For Binary As #3                               'RS232
    'Open "com4:" For Binary As #4                               'RS232
    
    
    Dim Eingabe As Byte
    Dim Ausgabe As Byte
    
    Config Porth = Output
    Out1 Alias Porth.0
    Out2 Alias Porth.1
    Out3 Alias Porth.2
    Out4 Alias Porth.3
    Out5 Alias Porth.4
    Out6 Alias Porth.5
    Out7 Alias Porth.6
    Out8 Alias Porth.7
    
    
    
    Do
       Led = 1
    
       Wait 1
    
       Led = 0
    
       Wait 1
    
       Input "Eingabe machen: " , Eingabe
    
      ' Ausgabe = Eingabe
       Print #1 , 3
    
       Print #1 , Eingabe                                       'Ausgabe
    
    
    
    Loop
    
    End
    Keine Ahnung woran es liegt:--(

  9. #9
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Ja Zahlenwerte gibt dein Programm richtig aus. Nur wenn du auch Buchstaben und Texte richtig ausgeben willst musst du:

    Dim Eingabe As String * 10 schreiben.

    Dann klappt es auch.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164
    Danke schön, hat geklappt

Ähnliche Themen

  1. Mega2560 und Input Output
    Von bertl100 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 01.06.2011, 15:18
  2. LPT Druckeranschluss Input/Output
    Von runner02 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 3
    Letzter Beitrag: 01.06.2011, 15:17
  3. Input/(Output) Card
    Von TimBS im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 2
    Letzter Beitrag: 25.06.2009, 18:28
  4. INPUT- Befehl "reagiert" nicht?
    Von Diron im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 01.03.2009, 12:30
  5. KEYLCD input output
    Von maximum2006 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 10.04.2006, 21:39

Berechtigungen

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

Solar Speicher und Akkus Tests