PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Msleep



Mk1.12.91
28.01.2010, 19:59
Hallo
ich habe in der Schule im Ramen der SIA(Schüler Ingenieur Akademie) den Asuro gebaut.
nun gings ans Programmieren .
Soweit alles gut .
die ersten programme liefen auch
aber nun kommt das Problem
als wir in der Schule an den Schulrechnern zum ersten mal den c Befehl Msleep verwendeten hat es in der schule noch super funktioniert
nun hab ich mir das programm aber zuhause auf den rechner geladen und musste leider feststellen das wenn ich auf make klicke der fehler

C:\ASURO_src\examples\FirstTry/test.c:10: undefined reference to `Msleep'
C:\ASURO_src\examples\FirstTry/test.c:12: undefined reference to `Msleep'

kommt

somit kann es nicht beendet werden
da es für mich echt wichtig ist brauche ich schnelle hilfe

wenn es geht dann auch mit ausführender lösung für einen anfänger

Dank im vorraus
MFG Mk1.12.91

radbruch
28.01.2010, 21:07
Hallo

Msleep() sieht etwa so aus:

void Msleep(unsigned int pause) // ca. 1/1000 Sekunde Pause blockierend
{
while(pause--) Sleep(72);
}



wenn es geht dann auch mit ausführender lösung für einen anfängerAha. Msleep() ist Bestandteil der erweiterten asuro-Library, welche wohl auf euren Schulrechnern installiert ist. Um in den Genuss von Msleep() zu kommen würde es ausreichen, nur den Code der Funktion in dein Program einzufügen:


#include "asuro.h"

void Msleep(unsigned int pause) // ca. 1/1000 Sekunde Pause blockierend
{
while(pause--) Sleep(72);
}

int main(void)
{
Init();
...


Eine weitere zusätzliche Funktion ist PrintInt() zur Ausgabe von Zahlen auf dem Terminal:


void PrintInt(int wert)
{ char text[6]=" ";
itoa(wert,text,10);
SerWrite(text,5);
}


Gruß

mic

Mk1.12.91
28.01.2010, 21:46
oh ich glaube ich habe nihct genau ausgedrückt
ich weiss wie man msleep anwendet das hat mir der lehrer erklärt
aber was mein problem ist wenn ich die test.c umwandeln möchte in die die man flashen kann dann hab ich das prob dass der im ersten post genannte error kam ...

MFG Mk1.12.91

radbruch
28.01.2010, 22:28
... weil weder in deiner test.c noch in deiner asuro.c die Funktion Msleep() definiert ist. Deshalb kannst du sie selbst in deine test.c irgendwo vor main() einfügen. Dann "weiß" der Kompiler was Msleep() bedeutet und kann das Programm in eine flashbare Hex-Datei umwandeln.

Gruß

mic

Mk1.12.91
29.01.2010, 14:36
ok danke für die hilfe
aber komisch finde ich dennoch dass es in der schule auch ohne ging ...

MFG Mk1.12.91

Thund3r
29.01.2010, 16:12
Hallo

In deiner Schule ging es, da dort eine andere Libary installiert ist. Eine erweiterte um genau zu sein die den Befehl Msleep behinhaltet den du einfach aufrufen kannst. Deine Libary ist nicht erweitert und beinhaltet nicht den Befehl Msleep den du wie oben beschrieben manuel einfügen musst.
Aus der Libary werden alle Befehle bezogen --> heißt wenn du im Programm sagst MotorDir(FWD,FWD) wird in der Libary geguckt was der Befehl für den Robo bedeutet bzw was der dann machen soll um dann zu übersetzen (kompilliert) und die zu flashende Datei gebrauchsfertig für den Roboter zu machen. Da Msleep nicht bei dir drinn steht weiß deine Libary nichts damit anzufangen und meldet Error.

Gruß Thund3r

Mk1.12.91
01.02.2010, 16:07
danke für die hilfe habe eine lib aus der schule installiert und jetzt funktioniert es ...

MFG und danke Mk1.12.91