Ich entwickle gerade einen Stimulus-Anbieter für den visuellen Kortex des Gehirns als Teil eines Universitätsprojekts. Das Programm soll (vorzugsweise) in C++ geschrieben werden, unter Verwendung von Visual Studio und OpenCV. Die Art und Weise, wie es funktionieren soll, ist, dass das Programm eine Anzahl von Threads entsprechend der Menge verschiedener Frequenzen erzeugt, von denen jede einen Timer für ihre jeweilige Frequenz ausführt. Der Code sieht wie folgt aus bisher:Bild bei bestimmten Frequenzen wechseln C++
void timerThread(void *param) {
t *args = (t*)param;
int id = args->data1;
float freq = args->data2;
unsigned long period = round((double)1000/(double)freq)-1;
while (true) {
Sleep(period);
show[id] = 1;
Sleep(period);
show[id] = 0;
}
}
Es scheint, für einen Teil der Frequenzen in Ordnung zu arbeiten, aber andere variieren ziemlich viel in Framerate. Ich habe versucht, meine eigene Timing-Funktion zu erstellen, ähnlich wie in Arduino's "blinkWithoutDelay" -Funktion, obwohl das sehr schlecht funktioniert hat. Ich habe es auch mit der Funktion waitKey() versucht, das funktionierte genauso wie die Funktion Sleep(), die jetzt verwendet wird.
Jede Hilfe würde sehr geschätzt werden!
Der Code, den Sie bieten nicht ausreicht, um das Problem zu beschreiben: was ist das 'show [id] 'verwendet für? – Antonio
Und für welche Art von Frequenzen funktioniert das gut und welche Frequenzen haben Probleme? Und was sind Ihre guten und schlechten Bildraten? Und welcher Typ ist 'show'? – Useless
'(double) 1000/(double) freq' ==>' 1000.0/freq' –