Hallo,
ich habe eine dll die von einer Anwendungen Kooedinaten von Robotern in einer globalen Variablen abspeichert. Dann habe ich eine zweite Anwendung die diese Variable auslesen möchte. Die erste Anwendungen aktualisert die Variable. Das kann ich prüfen wenn ich mir die Werte in eine Textdatei ausgeben lasse. Die zweite Anwendung läd auch die dll, ruft die Funktion auch auf, aber bekommt immer nur eine 0 als Koordinaten.
Kann es sein, dass nur eine Anwendung auf die Variable zugreifen kann?
Wie löse ich dieses Problem?
hier die cpp datei:
die Strategy wird bis zu 60 mal in der Sekunde aufgerufen und die getX und getY Methoden bekommen immer nur "0".
ich habe eine dll die von einer Anwendungen Kooedinaten von Robotern in einer globalen Variablen abspeichert. Dann habe ich eine zweite Anwendung die diese Variable auslesen möchte. Die erste Anwendungen aktualisert die Variable. Das kann ich prüfen wenn ich mir die Werte in eine Textdatei ausgeben lasse. Die zweite Anwendung läd auch die dll, ruft die Funktion auch auf, aber bekommt immer nur eine 0 als Koordinaten.
Kann es sein, dass nur eine Anwendung auf die Variable zugreifen kann?
Wie löse ich dieses Problem?
hier die cpp datei:
die Strategy wird bis zu 60 mal in der Sekunde aufgerufen und die getX und getY Methoden bekommen immer nur "0".
Code:
extern "C" VIDEOTRACKING_API void Strategy ( Environment *env )
{
setCoordinates(env);
}
void setCoordinates(Environment *env)
{
cout<<"DLL setcoord";
double MULTIPLIER=2.54;
int i;
for (i=0;i<5;i++)
{
xValues[i]=(env->home[i].pos.x) * MULTIPLIER;
xValues[i+5]=(env->opponent[i].pos.x) * MULTIPLIER;
yValues[i]=(env->home[i].pos.y) * MULTIPLIER;
yValues[i+5]=(env->opponent[i].pos.y) * MULTIPLIER;
rotation[i]= env->home[i].rotation;
rotation[i+5]= env->opponent[i].rotation;
}
}
VIDEOTRACKING_API double getX(int robotID)
{
return xValues[robotID-1];
}
VIDEOTRACKING_API double getY(int robotID)
{
return yValues[robotID-1];
}
VIDEOTRACKING_API double getDirection(int robotID)
{
double direction;
if ((rotation[robotID-1]<=90)&&(rotation[robotID-1]>=0)
||(rotation[robotID-1]<0)&&(rotation[robotID-1]>=-180))
return direction=rotation[robotID-1]*(-1)+90;
if ((rotation[robotID-1]>90)&&(rotation[robotID-1]<=180))
return direction=rotation[robotID-1]*(-1)+450;
}