Entwickler-Ecke

Windows API - Durchgaengiger Ton mit PC-Speaker unter Win2k


Maweki - Fr 22.04.05 17:43
Titel: Durchgaengiger Ton mit PC-Speaker unter Win2k
Hallo
Also, ich will wie ein kleines Keyboard programmieren, und das ganze, wegen dem unverwechselbaren Ton ueber den Speaker ausgeben (nein, nicht ueber den Lautsprecher, den echten PC-Speaker. Das Ding, was am Board haengt).
Jetzt ist es bei einem Keyboard ja so, dass ein Ton solange gehalten werden soll, bis man eine Taste loslaesst.
Das Problem ist, dass man mit dem Windows-Internen Aufruf windows.beep() Frequenz und Dauer angibt. Aber die Dauer steht ja, wenn es Echtzeit sein soll noch nicht fest...

Bei Win9x ist das kein Problem, da der assembler-Interrupt den Ton aktiviert und ein anderer ihn wieder deaktiviert. Aber bei XP meldet er mir bei der 9x-methode einen Zugriffsfehler.
Ich habe schon probiert, viele kurze toene hintereinander, aber das ist ein "Tonflackern", also man hoert die Pause zwischen den Beeps...

Gibt es noch eine andere Moeglichkeit den Speaker so zu benutzen, wie ich das moechte?

Gruesse
Maweki


uall@ogc - Fr 22.04.05 18:03

bei win9x werden die die systembefehle über die interrupts "ausgeführt"
bei 2k wird das alles übers int3 abgewickelt und bei XP über sysenter

nach kurzem debuggen hab ich gesehn das auch nur nen sysenter benutzt wird d.h. der ton wird halt so lange abgespielt wie die parameter angeben, es wird also nicht das abspielen aktiviert und deaktiviert bei bei win9x

vielleicht hilft dir das ja weiter und aknsnt ja selbst mal schaun was die parameter genau sagen

winsta._WinStationBeepOpen


Maweki - Fr 22.04.05 18:11

Ich weiss schon, was die normalen Parameter machen. Und ich weiss auch ganz genau, wo das Problem liegt (XP erlaubt keine Interrupts und eine Absolute Laenge ist nunmal nicht dynamisch)
die Frage, die sich mir stellt:
gibt es noch einen anderen Weg, den Speaker anzusprechen?