手动驱动电脑内部扬声器
有没有什么方法可以在任何语言(首选 C)下直接在 Windows/Linux 下连接 PC 内部扬声器? (无 DOS)我不想在给定的持续时间内以特定的频率驱动它(无蜂鸣声(frq,毫秒)),但我宁愿直接发送信号。
我想它是一位分辨率,所以我打算使用PWM驱动来播放波浪声音。
Is there any way, in any language (C preferred) to interface the PC internal speaker directly under Windows/Linux? (no DOS) I don't want to drive it at a specficic frequency for a given duration (no beep(frq, msecs)), but I'd rather send signals directly.
I suppose it's one bit resolution, so I plan using PWM driving to play wave sounds.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Linux 上,您可能想要制作一个内核驱动程序来驱动扬声器,并提供例如。用于访问它的 /dev 条目。
请注意,Linux 内核中已经有一个支持 PCM 的驱动程序,它作为 ALSA 驱动程序进行接口。看看:http://lxr.linux.no/linux+ v2.6.39/sound/drivers/pcsp/
实际的硬件接口似乎是在 pscp_input.c 中完成的:
pcspkr_do_sound(...)
On Linux, you will probably want to make a kernel driver to drive the speaker, and provide eg. a /dev entry for accessing it.
Note that there is already a driver that supports PCM in the Linux kernel, that interfaces as an ALSA driver. Check it out: http://lxr.linux.no/linux+v2.6.39/sound/drivers/pcsp/
The actual hardware interfacing appears to be done in pscp_input.c:
pcspkr_do_sound(...)
这是一个中断,您可以将其嵌入到任何允许在其代码中使用 ASM 的语言中。或者你可以用 pascal 编写一个小程序并调用它。
我不记得被打扰了,但快速搜索就能找到该信息。
It's an interruption, you can embeed that in any kind of languaje that allows ASM inside it's code. Or you can just write a small program in pascal and call it.
I don't remember the interruption but a fast search will get you that info.
找到这个来自维基百科对电脑扬声器的参考
可能会有用:)
Found this off the wikipedia references for pc-speakers
might be useful :)