darxon69
10.02.2006, 13:40
Also inzwischen treibt mich Bascom in den Wahnsinn, da die Logik, die man in die Programmierung steckt anscheinend nicht zu 100% in Code umgewandelt wird.
Zum Sachverhalt:
Ich habe mein Controllerboard mit ATMega8 und extermen Quarz (6MHz) Soweit am Laufen, daß ich davon ausgehen kann, daß die Hardware sauber läuft. Nun bin ich an der Softwareentwicklung und habe da schon diverse unzulänglichkeiten bzw. die Unmöglichkeit Serielle Eingaben zu simulieren und Bascom kennen gelernt. Also musste ich mir etwas einfallen lassen, wie ich direkt sehe, was der ATMEga auf dem Board macht. Meine Lösung: Ich schicke einfach die Debug infos per RS232 zurück und kann sie auslesen. Da habe ich aber anscheinend nicht die Rechnung mit BASCOM gemacht. mein Code sieht so aus:
Dim command as String * 9
Dim Subcommandchar as String *1
....
'Command enthält den String "FV000000²"
Subcommandchar = Mid(command , 2 , 1)
Print command
Print Subcommandchar
Select Case Subcommandchar 'in entsprechende Unterroutinen verzweigen
Case "V" : Responsecommand "FV0000033" 'Firmware zurück geben
Case "G" : Gotocommand
Case "I" : Moveincommand
Case "O" : Moveoutcommand
Case "L" : Travelcommand
Case "N" : Backlashcommand
Case "C" : Configcommand
Case "T" : Readtemperature
Case Else : Print Command
End Select
Die beiden Zeilen Print command und Print Subcommandchar
dienen der Ausgabe der benötigten infos. Der erste Befehl wird noch ausgeführt und liefert auch schön das gewünschte ergebnis. Der 2. Printbefehl, der eigenlich das "V" zurück geben sollte wird nicht mehr ausgeführt. Auch wird die Case anweisung nicht durchlaufen.
Jetzt erklär mir mal einer, wo da der Fehler steckt. Ich bin mit meinem Latein am Ende.
Zum Sachverhalt:
Ich habe mein Controllerboard mit ATMega8 und extermen Quarz (6MHz) Soweit am Laufen, daß ich davon ausgehen kann, daß die Hardware sauber läuft. Nun bin ich an der Softwareentwicklung und habe da schon diverse unzulänglichkeiten bzw. die Unmöglichkeit Serielle Eingaben zu simulieren und Bascom kennen gelernt. Also musste ich mir etwas einfallen lassen, wie ich direkt sehe, was der ATMEga auf dem Board macht. Meine Lösung: Ich schicke einfach die Debug infos per RS232 zurück und kann sie auslesen. Da habe ich aber anscheinend nicht die Rechnung mit BASCOM gemacht. mein Code sieht so aus:
Dim command as String * 9
Dim Subcommandchar as String *1
....
'Command enthält den String "FV000000²"
Subcommandchar = Mid(command , 2 , 1)
Print command
Print Subcommandchar
Select Case Subcommandchar 'in entsprechende Unterroutinen verzweigen
Case "V" : Responsecommand "FV0000033" 'Firmware zurück geben
Case "G" : Gotocommand
Case "I" : Moveincommand
Case "O" : Moveoutcommand
Case "L" : Travelcommand
Case "N" : Backlashcommand
Case "C" : Configcommand
Case "T" : Readtemperature
Case Else : Print Command
End Select
Die beiden Zeilen Print command und Print Subcommandchar
dienen der Ausgabe der benötigten infos. Der erste Befehl wird noch ausgeführt und liefert auch schön das gewünschte ergebnis. Der 2. Printbefehl, der eigenlich das "V" zurück geben sollte wird nicht mehr ausgeführt. Auch wird die Case anweisung nicht durchlaufen.
Jetzt erklär mir mal einer, wo da der Fehler steckt. Ich bin mit meinem Latein am Ende.