klappt trotzdem nicht![]()
klappt trotzdem nicht![]()
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.
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
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: "?
So hab das mal im Simulator getestet. Dieser Code hier funktioniert nur bei Zahlen!
Und wenn du, wie bei dir, den COM3 benutzt musst du das COM1 durch COM3 ersetzen und das #1 durch #3.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
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.
"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.
Keine Ahnung woran es liegt:--(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
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.
Danke schön, hat geklappt![]()
Lesezeichen