03.04.2007, 16:58
Moin,
ich hab folgendes Problem:
[attachment=5975]
Ich möcht in meinem Programm einen Sinus (Dauerton) über die Soundkarte ausgeben (zur Ansteuerung von einem Motor) und gleichzeitig Positionsdaten (des Motors) über die Com-Schnittstelle aufnehmen. Das Programm funktioniert soweit, nur leider ist die Aufnahme der Daten der Com-Schnittstelle zu langsam (solange gleichzeitig der Ton erzeugt wird), so dass der dargestellte Graph bei hohen Frequenzen eckig wird (da zu wenig Messwerte).
Ich hab bereits festgestellt, dass wenn ich die Soundausgabe entferne und den Motor über ein externes Signal ansteuer (Frequenzgenerator), die eingelesenen Daten der Motorposition sauber dargestellt werden, da ich dann ausreichend viele Messwerte bekomme um den Sinus wieder darzustellen.
Im unverändertem Programm kann ich sehen, dass die Anzahl der Bytes at Port ständig steigt, bis der Buffer voll ist. Tritt dies ein, bleibt der Motor stehen, bis alle Daten aus dem Buffer abgefragt wurden und erst dann läuft der Motor weiter.
Am VISA-READ hab ich mal testweise die Anzahl der zu lesenden Bytes herabgesetzt, dadurch erhalte ich eine schönere Ausgabekurve, aber der Buffer für die Werte läuft dann schneller voll :-(
Ist es irgendwie möglich der Soundkarte die Frequenz des Ansteuertones zu übergeben, sodass nicht beide Routinen (Soundausgabe und Daten einlesen) gleichzeitig ablaufen müssen?
Hat jemand ne Idee für mich?
ich hab folgendes Problem:
[attachment=5975]
Ich möcht in meinem Programm einen Sinus (Dauerton) über die Soundkarte ausgeben (zur Ansteuerung von einem Motor) und gleichzeitig Positionsdaten (des Motors) über die Com-Schnittstelle aufnehmen. Das Programm funktioniert soweit, nur leider ist die Aufnahme der Daten der Com-Schnittstelle zu langsam (solange gleichzeitig der Ton erzeugt wird), so dass der dargestellte Graph bei hohen Frequenzen eckig wird (da zu wenig Messwerte).
Ich hab bereits festgestellt, dass wenn ich die Soundausgabe entferne und den Motor über ein externes Signal ansteuer (Frequenzgenerator), die eingelesenen Daten der Motorposition sauber dargestellt werden, da ich dann ausreichend viele Messwerte bekomme um den Sinus wieder darzustellen.
Im unverändertem Programm kann ich sehen, dass die Anzahl der Bytes at Port ständig steigt, bis der Buffer voll ist. Tritt dies ein, bleibt der Motor stehen, bis alle Daten aus dem Buffer abgefragt wurden und erst dann läuft der Motor weiter.
Am VISA-READ hab ich mal testweise die Anzahl der zu lesenden Bytes herabgesetzt, dadurch erhalte ich eine schönere Ausgabekurve, aber der Buffer für die Werte läuft dann schneller voll :-(
Ist es irgendwie möglich der Soundkarte die Frequenz des Ansteuertones zu übergeben, sodass nicht beide Routinen (Soundausgabe und Daten einlesen) gleichzeitig ablaufen müssen?
Hat jemand ne Idee für mich?