Servus Forumsgemeinde!
Habe endlich mal wieder meine Elektronik-Bastelleien ausgekramt. Zur Zeit vezweifele ich ein wenig an der Steuerung von Ausgängen via UART.
Es gibt von "gerold" im Lötstelle-Forum ein nett gemachtes Program (Thread-Link), das mir vom Aufbau sehr gefällt Einfache Steuerbefehle, die mit einem Steuerbefehl abgeschlossen werden. Im original mit einem CARRIAGE RETURN (ASCII-13 ). Mit dem AVR-Terminal war mir das zu umständlich und habe daher das Sterzeichen gegen ein "!" (33) ausgetauscht.
Das Programm ignoriert was auf der UART passiert, bis das das "!" empfangen wird und genau dann bleibt es stehen. Jetzt frage ich mich, wo da der Fehler ist.
Die Hauptschleife sieht so aus:
Was ich mich als erstes schon mal frage ist, wer "sagt" den der Sub "Serial0charmatch()" das sie angesprungen werden soll?
Hoffe ihr könnt mir weiter helfen und danke für eure Antworten schonmal im Voraus.
Gruß
MarcE
Habe endlich mal wieder meine Elektronik-Bastelleien ausgekramt. Zur Zeit vezweifele ich ein wenig an der Steuerung von Ausgängen via UART.
Es gibt von "gerold" im Lötstelle-Forum ein nett gemachtes Program (Thread-Link), das mir vom Aufbau sehr gefällt Einfache Steuerbefehle, die mit einem Steuerbefehl abgeschlossen werden. Im original mit einem CARRIAGE RETURN (ASCII-13 ). Mit dem AVR-Terminal war mir das zu umständlich und habe daher das Sterzeichen gegen ein "!" (33) ausgetauscht.
Das Programm ignoriert was auf der UART passiert, bis das das "!" empfangen wird und genau dann bleibt es stehen. Jetzt frage ich mich, wo da der Fehler ist.
Die Hauptschleife sieht so aus:
Code:
'Prozeduren
Declare Sub Serial0charmatch()
Declare Sub Do_get_command(cmd_output As String)
Declare Sub Do_set_command(cmd_output As String , Cmd_status As String)
Declare Sub Do_all_command(cmd_status As String)
'UART-Buffer
Config Serialin = Buffered , Size = 15 , Bytematch = 33
Enable Interrupts
Do
If New_command <> "" Then
'Alles in Großbuchstaben umwandeln
New_command = Ucase(new_command)
'Anweisung aufteilen
Tmp = Split(new_command , Command_array(1) , " ")
Select Case Command_array(1)
Case "GET"
'Status des Ausganges/der Ausgänge zurück geben
Call Do_get_command(command_array(2))
Case "SET"
'Stellt einen oder alle Ausgänge ein
Call Do_set_command(command_array(2) , Command_array(3))
Case "ALL"
'Stellt alle Ausgänge ein
Call Do_all_command(command_array(2))
Case Else
Print "ERROR: unknown command"
End Select
New_command = ""
End If
Loop
End
'Wird automatisch ausgeführt, wenn CARRIAGE RETURN empfangen wird.
Sub Serial0charmatch()
Input New_command Noecho
End Sub
Was ich mich als erstes schon mal frage ist, wer "sagt" den der Sub "Serial0charmatch()" das sie angesprungen werden soll?
Hoffe ihr könnt mir weiter helfen und danke für eure Antworten schonmal im Voraus.
Gruß
MarcE