eigentlich meinte ich albi1989, hab aber eben gemerkt dass der thread schon etwas älter ist
printint ist aus der neuen lib, die hier im rn entstanden ist. sie funktioniert einwandfrei, was für fehler hast du denn gefunden?
Du hast schon Recht mit dem Array.Zitat von farratt
Ich hab in meiner Asuro Lib mal die Funktion rausgesucht, und dort steht es richtig mit 7:
Damaltor hat übrigens nicht dich gemeint.Code:void PrintInt ( int wert) { char text [7]; // "-12345" itoa (wert, text, 10); SerPrint (text); }
Grüße,
Harri
eigentlich meinte ich albi1989, hab aber eben gemerkt dass der thread schon etwas älter ist
printint ist aus der neuen lib, die hier im rn entstanden ist. sie funktioniert einwandfrei, was für fehler hast du denn gefunden?
Oben hat jemand eine Funktion PrintInt aus der Lib zitiert und diese Version enthielt Fehler (siehe mein Beiträge etwas weiter oben). Aber harry3 meinte, dass die von mir genannten Fehler in der aktuellen Lib nicht mehr vorkommen, von daher hat sichs erledigt.
radbruch hat die Funktion falsch gepostet. In der Asurolib selbst ist sie allerdings richtig(siehe print.c)Zitat von damaltor
Grüße,
Harri
also ich blick da jetz mit hilfe derAsuro-Lib langsam durch! nur egal was ich programmiere, immer zeigt er beim durchlaufen mit der makedatei den selben fehler an:
"test.c:15: error: `for' loop initial declaration used outside C99 mode
test.c:21: error: `for' loop initial declaration used outside C99 mode
test.c:29: error: `for' loop initial declaration used outside C99 mode"
könnte mir einer von euch helfen wie ich diese fehler weg bekomme?
Zitat von zumi411
Bin mir nicht 100%ig sicher, aber ich denke es liegt daran:
Früher musste man bei C die Variablen immer am Blockanfang definieren, also z.B. mussten in der main Funktion alle Variablen am Anfang von main definiert werden, und erst dann konnte man weitermachen.
Durch eine Erneuerung des C Standards war es dann möglich, Variablen dort zu definieren, wo man sie braucht.
Ich empfehle aber den alten Weg, also alle Variablen am Anfang zu definieren.
Konkret heißt das:
Du hast wohl geschrieben:
for(int n=0;n<MAX;n++)
Du hast also n erst in der for Schleife definiert!
Definiere n am Anfang von main und das Problem sollte verschwunden sein!
Grüße,
Harri
also ich habe gar keine for Angabe. Hier ist die komplette datei.Villeicht kannst du mir ja weiter helfen.:
00001 /************************************************** *************************
00002 *
00003 * File Name: kollisiontest.c
00004 * Project : ASURO
00005 *
00006 * Description: Kollisionstest mit Hilfe der Tastensensoren
00007 *
00008 * Ver. Date Author Comments
00009 * ------- ---------- ----------------- ------------------------------
00010 * 1.0 10.09.2005 m.a.r.v.i.n initial build
00011 * 1.1 08.01.2006 m.a.r.v.i.n 2x PollSwitch + Vergleich,
00012 * anstelle 8x PollSwitch
00013 *
00014 * benoetigt die modifizierte Asuro Bibliothek 'asuro.c'
00015 * von waste, stochri und andun. Zu finden bei www.roboternetz.de
00016 */
00017 /************************************************** *************************
00018 * *
00019 * This program is free software; you can redistribute it and/or modify *
00020 * it under the terms of the GNU General Public License as published by *
00021 * the Free Software Foundation; either version 2 of the License, or *
00022 * any later version. *
00023 ************************************************** *************************/
00024
00025 #include "asuro.h"
00026
00027 #define FULL_L 250
00028 #define FULL_R 220
00029
00030 /* Motor vorwärts */
00031 void MotorFwd(void)
00032 {
00033 MotorDir(FWD,FWD);
00034 MotorSpeed(FULL_L,FULL_R);
00035 }
00036
00037 /* Motor rückwärts */
00038 void MotorRwd(void)
00039 {
00040 MotorDir(RWD,RWD);
00041 MotorSpeed(FULL_L,FULL_R);
00042 }
00043
00044 /* Motor rückwärts Links */
00045 void MotorRwdL(void)
00046 {
00047 MotorDir(RWD,RWD);
00048 MotorSpeed(FULL_L,0);
00049 }
00050
00051 /* Motor rückwärts Rechts */
00052 void MotorRwdR(void)
00053 {
00054 MotorDir(RWD,RWD);
00055 MotorSpeed(0, FULL_R);
00056 }
00057
00058 /* Motor stop */
00059 void MotorStop(void)
00060 {
00061 MotorSpeed(0,0);
00062 }
00063
00064 int main(void)
00065 {
00066 unsigned char t1, t2;
00067
00068 Init();
00069 while (1)
00070 {
00071 t1 = PollSwitch();
00072 t2 = PollSwitch();
00073 if (t1 == 0 && t2 == 0) /* keine Taste */
00074 {
00075 MotorFwd(); /* vorwärts fahren */
00076 FrontLED(ON);
00077 BackLED(OFF,OFF);
00078 }
00079 else if (t1 && t2 && t1 == t2)
00080 {
00081 MotorStop();
00082 if (t1 & 0x07) /* Tasten links gedrückt? */
00083 {
00084 MotorRwdL(); /* Rückwärtskurve links fahren */
00085 FrontLED(OFF);
00086 BackLED(ON,OFF);
00087 }
00088 if (t1 & 0x3/* Tasten rechts gedrückt? */
00089 {
00090 MotorRwdR(); /* Rückwärtskurve rechts fahren */
00091 FrontLED(OFF);
00092 BackLED(OFF,ON);
00093 }
00094 Msleep(1000); /* 1 Sekunde fahren */
00095 }
00096 }
00097 return 0;
00098 }
00099
das mit dem fehler hat sich erledigt: mein Programmers Notepad spinnt nen bischen hab jetz die .hex Datei nur will mir das flashprogramm die datei nicht auf den Asuro senden da steht immer:
Failed to Open!
Already in use!?!
Aber ich habe die datei doch garnicht geöffnet!
das mit dem Flashen hat sich auch erledigt. nur kann mir mal einer sagen was mit meinem Programmers Notepad los ist ?
bei der gleichen Datei wie oben zeigt er jetz nicht mehr die "alten" Fehler an sondern die neuen nämlich:
test.c:1: error: parse error before numeric constant
test.c:25: error: syntax error at '#' token
test.c:27: error: syntax error at '#' token
test.c:28:1: invalid digit "8" in octal constant
test.c:28: error: syntax error at '#' token
test.c:29:1: invalid digit "9" in octal constant
test.c:38:1: invalid digit "8" in octal constant
test.c:39:1: invalid digit "9" in octal constant
test.c:48:1: invalid digit "8" in octal constant
test.c:49:1: invalid digit "9" in octal constant
test.c:58:1: invalid digit "8" in octal constant
test.c:59:1: invalid digit "9" in octal constant
test.c:68:1: invalid digit "8" in octal constant
test.c:69:1: invalid digit "9" in octal constant
test.c:78:1: invalid digit "8" in octal constant
test.c:79:1: invalid digit "9" in octal constant
test.c:80:1: invalid digit "8" in octal constant
test.c:81:1: invalid digit "8" in octal constant
test.c:82:1: invalid digit "8" in octal constant
test.c:83:1: invalid digit "8" in octal constant
test.c:84:1: invalid digit "8" in octal constant
test.c:85:1: invalid digit "8" in octal constant
test.c:86:1: invalid digit "8" in octal constant
test.c:87:1: invalid digit "8" in octal constant
test.c:88:1: invalid digit "8" in octal constant
test.c:89:1: invalid digit "9" in octal constant
test.c:90:1: invalid digit "9" in octal constant
test.c:91:1: invalid digit "9" in octal constant
test.c:92:1: invalid digit "9" in octal constant
test.c:93:1: invalid digit "9" in octal constant
test.c:94:1: invalid digit "9" in octal constant
test.c:95:1: invalid digit "9" in octal constant
test.c:96:1: invalid digit "9" in octal constant
test.c:97:1: invalid digit "9" in octal constant
test.c:98:1: invalid digit "9" in octal constant
test.c:99:1: invalid digit "9" in octal constant
wa isn das fürn mist programm!
Stehen die Zeilennummern auch im Programm?
Wenn ja weg damit!
Poste deinen Code bitte mit dem Code Tag und ohne Zeilennummern, das erleichtert für uns das Anschauen um einiges!
Wenn du mit Programmers Notepad nicht zufrieden bist so kannst du z.B. auch AVR Studio verwenden. Gibts gratis im WWW.
Grüße,
Harri
Lesezeichen