Hallo Diplomand,
mögliche Lösungen auf einem "stinknormalen" Windows-PC:
1. Lese 2 Werte pro Schleifendurchlauf und warte dann bis zur nächsten Millisekunde. Nachteil: Jitter...
2. Suche hier im Forum nach HPC ("High Performance Counter") oder "warten Mikrosekunden". Irgendjemand hatte mal ein (prozessorintensives) Beispiel gepostet, um auch unter Windows im Mikrosekundenbreich zu warten. Vorteil ggü. Lösung eins: geringfügig geringerer Jitter bei allerdings deutlich höherer CPU-Last.
3. Schreib dir eine Wrapper-DLL, um die Abfrage evtl. genauer zu takten und die Daten , wie vorgeschlagen, in einem Buffer zu sammeln...
Anmerkungen:
- Falls deine DLL einfach zu langsam ist (du schreibst: nur ~500 Durchläufe pro Sekunde"), wird die Schleife auch ohne Wartezeiten kaum schneller werden...
- Wartet der DLL-Call evtl. auf einen neuen Wert im Buffer? Oder bekommst du sofort den zuletzt gelesenen Wert zurückgemeldet?
Quintessenz:
- "Scheiß DLL"
- Unter Windows ist es schwer, Schleifen unter 1ms zu takten. Und noch schwerer, dies mit geringem Jitter hinzubekommen...
Zitat:Lesezugriff von 1500 bis 2000 pro Minute
Reden wir jetzt über nur noch 25 bis 33 Hz Samplerate??? Dann ist das oben genannte hinfällig und du nimmst einfach eine Wartezeit von 40ms in die Schleife...