Absender: Timo Sandmann
Datum: Fr, 10.09.2010 21:12:59
In-reply-to:
<9DD5454FB74E49BABC1EAF57CD9B8505@FrankPC>
References:
<096FD558C4D20046A1BABE72DFF0C6C33B3ED5A41C@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx><CE1FB7FF-4A39-47CE-80F6-316DD3A2D068@xxxxxxxxxxxxxxx><20100826195514.307630@xxxxxxx> <9FC1FC43-9D8F-4DF1-A899-DD2305A89771@xxxxxxxxxxxxxxx> <9DD5454FB74E49BABC1EAF57CD9B8505@FrankPC>
Hallo Frank, sehr gut, erstmal ein paar grundsätzliche Anmerkungen (sind nur Kleinigkeiten, aber machen das Leben leichter): - Bitte die Datei .cproject nicht mit in den Patch einschließen, dann wird der auch nicht so groß. - Patch nicht als Workspace-Patch, sondern als Projekt-Patch (kann man in Eclipse auswählen). - Die Datei "tokenizer.c" bitte in "ubasic_tokenizer.c" und "include/tokenizer.h" in "include/ubasic_tokenizer.h" umbenennen, dann haben wir ein einheitliches Namensschema für alle Teile des Basic-Interpreters. - Beim Kopieren von Dateien bitte die Header-Informationen anpassen. In behaviour_ubasic.h findet sich z.B. noch /*! * @file behaviour_delay.h * @brief Delay-Routinen als Verhalten * @author Benjamin Benz (bbe@xxxxxxxx) * @date 12.07.07 */ - In einige Dateien fehlt solch ein Header komplett, bitte ergänzen. - Ein Pfad wie "C:\" existiert nur unter Windows, ich denke ein Unterverzeichnis im Bot-Projekt wäre angebrachter, dann kann der Code einfach eine relative Pfadangabe verwenden. Am besten ist die per #define an übersichtlicher Stelle einstellbar. - Über den Quellcode einmal die Auto-Formatierung von Eclipse laufen lassen (Source -> Format), dann passt die Textformatierung größtenteils zum vorhandenen Quellcode. Ich habe das Ganze jetzt gerade mal im Sim ausprobiert bzw. ausprobieren wollen, allerdings beendet sich der Bot-Code, sobald ich auf Taste 1 drücke: Thread 0 Crashed: Dispatch queue: com.apple.main-thread 0 libSystem.B.dylib 0x00007fff876ee3d6 __kill + 10 1 libSystem.B.dylib 0x00007fff8778e913 __abort + 103 2 libSystem.B.dylib 0x00007fff87783157 mach_msg_receive + 0 3 libSystem.B.dylib 0x00007fff876e2abf __strcat_chk + 40 4 ct-Bot 0x000000010000c7b6 read_ubasic_src + 102 (behaviour_ubasic.c:127) 5 ct-Bot 0x000000010000cce8 ubasic_disp_key_handler + 179 (behaviour_ubasic.c:305) 6 ct-Bot 0x000000010000ce98 drive_ubasic_display + 105 (behaviour_ubasic.c:367) 7 ct-Bot 0x0000000100006821 gui_display + 118 (gui.c:225) 8 ct-Bot 0x0000000100001ab6 main + 206 (ct-Bot.c:121) 9 ct-Bot 0x0000000100000f9c start + 52 Thread 1: 0 libSystem.B.dylib 0x00007fff876a1f02 read$NOCANCEL + 10 1 libSystem.B.dylib 0x00007fff876f140f __sread + 16 2 libSystem.B.dylib 0x00007fff876e914c _sread + 19 3 libSystem.B.dylib 0x00007fff876e8fe2 __srefill + 41 4 libSystem.B.dylib 0x00007fff876ff1a6 fgets + 105 5 ct-Bot 0x0000000100007963 read_command_thread + 77 (cmd-tools_pc.c:281) 6 libSystem.B.dylib 0x00007fff876d9456 _pthread_start + 331 7 libSystem.B.dylib 0x00007fff876d9309 thread_start + 13 Thread 0 crashed with X86 Thread State (64-bit): rax: 0x0000000000000000 rbx: 0x00007fff5fbff6b0 rcx: 0x00007fff5fbff6a8 rdx: 0x0000000000000000 rdi: 0x00000000000048ec rsi: 0x0000000000000006 rbp: 0x00007fff5fbff6d0 rsp: 0x00007fff5fbff6a8 r8: 0x0000000000000001 r9: 0x0000000100100e70 r10: 0x00007fff876ea412 r11: 0xffffff80002e1680 r12: 0x0000000000000000 r13: 0x0000000000000000 r14: 0x0000000000000000 r15: 0x0000000000000000 rip: 0x00007fff876ee3d6 rfl: 0x0000000000000202 cr2: 0x00000001000c7000 Das passiert übrigens auch, wenn ich den Pfad ändere (s.o.). Scheinbar läuft in read_ubasic_src() irgendwas mit der String-Behandlung falsch (Pufferüberlauf?), der Grund ist für mich auf die Schnelle aber nicht ersichtlich, ich habe jetzt nicht den ganzen Code durchgeschaut. Daher kann ich da im Moment leicht auch nicht mehr testen. Auf dem echten Bot habe ich es noch nicht getestet, dazu dann später mehr. Grüße, Timo Am 10.09.2010 um 14:22 schrieb Frank Menzel: > Hallo Timo, > anbei nun doch schon mal meine vorhandene Version des Basic Interpreters also Patch sowie 2 Beispielprogramme. Letztere müssen in das Dir c:\t kopiert werden, dann wird das entsprechende Prog über das Screendisplay nach Tastendruck geladen (also 1 für bas1.txt u.s.w.). Das erste Prog ist einfach das simple-Verhalten, der bot fährt also im Quadrat. Das 2. ist ein Wandfolger als Basicvariante. Alternativ kann das Prog auch direkt in den Speicher reincompiliert werden (für MCU-da gibt's keine Laderoutine), dazu einfach in der ubasic_behaviour die Kommentare entsprechend entfernen. > Probiert habe ich das ganze bisher nur im sim, wo es ganz gut läuft. > Die angesprochenen Änderungen des Basic-Interpreters selbst lassen noch auf sich warten, daher dies schon mal vorab zum rumspielen, probieren und staunen:-) > > Gruß, Frank