消除笔记本的高频电流噪音

消除笔记本的高频电流噪音

ID:15511622

大小:43.00 KB

页数:7页

时间:2018-08-03

消除笔记本的高频电流噪音_第1页
消除笔记本的高频电流噪音_第2页
消除笔记本的高频电流噪音_第3页
消除笔记本的高频电流噪音_第4页
消除笔记本的高频电流噪音_第5页
资源描述:

《消除笔记本的高频电流噪音》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、消除笔记本的高频电流噪音季光dummyshining365@gmail.com.dum摘要:有些笔记本在使用中发出一种高频电流噪音。这种噪音随着硬盘的读写,用户对窗口界面中的滚动条的拉动发生变化,并在操作系统启动之后几乎始终存在,只有当用户播放音频文件时这种噪音会消失。本文利用这一特点针对Windows操作系统给出了消除噪音解决方案。本文设计了一个占用资源较少的Windows系统服务,在里面模拟音频文件的播放,从而将噪音消除。关键字:笔记本高频电流噪音 Windows系统服务 问题分析有些笔记本由于设计方面的问题,如果使用了USB设备或蓝牙模块,在运行中会发出一种高频电流噪音。例子

2、包括DellD610,ThinkR60e(在使用电池的模式下)。这种噪音的来源并未得到官方的解释。但是有些厂商已经发布了修复这种噪音问题的BIOS补丁[1]。但是某些厂商并未正面解决这个问题[2]。有一种比较方便易行的方法可以把这种噪音消除:播放一个音频文件,然后按下暂停按钮。某些用户反映在运行一些游戏时也可以将噪音消除,其实也是利用了游戏背景音乐的作用。但是这种方法的缺点是需要手工操作,并且音乐播放器往往占用大量的内存。我们应该考虑用一种节省的方式实现它。设计与实现Windows提供了一组波形音频的编程接口。我们可以利用它们模拟播放器的暂停状态://代码: 模拟播放器的暂停状态H

3、WAVEOUT hWaveOut;          //波形音频输出句柄BYTE mute[MUTE_LENGTH];     //静音符号串WAVEFORMATEX waveformat = {    WAVE_FORMAT_PCM, 1, SAMPLE_RATE, SAMPLE_RATE, 1, 8, 0};                          //设定波形音频的格式WAVEHDR waveHdr = {    0, MUTE_LENGTH, 0, 0, 0, 1, NULL, 0};                          //音频数据信息头Fill

4、Memory(mute, MUTE_LENGTH, (BYTE)0x80);  //用静音符号填充waveHdr.lpData = mute;                      //初始化信息头指针//打开音频设备waveOutOpen (&hWaveOut, WAVE_MAPPER, &waveformat, 0, 0, CALLBACK_FUNCTION);//准备信息头waveOutPrepareHeader (hWaveOut, &waveHdr, sizeof (WAVEHDR)) ;//播放静音符号waveOutWrite (hWaveOut, &waveHdr

5、, sizeof (WAVEHDR)) ;//暂停waveOutPause(hWaveOut) ;利用这段代码写一个win32程序,保证程序进程不会退出(可利用一个含有Sleep调用的死循环或弹出一个模态对话框实现),即可实现消除噪音的作用。然而这样做仍然不够完善。我们希望系统在启动的时候,无论有用户登录与否,都能够自动地调用它。为了解决这一问题,我们应当把它改造为Windows的系统服务。Windows系统服务的编写需要服从一定的格式规范,请参阅相关文献[3],本文不予详述。需要注意的是,如果编写为独立的Windows服务,仍然需要1,900K左右的内存;如果编写为寄存在svch

6、ost中的服务[4],则可以把内存占用量大大降低,达到300~400K。本文采用了后者。完整代码如下(我们把服务名取作DenoiseSvc31):/*消电流噪声 svchost版 3.1*/#include #include #define SLEEP_TIME 10000#define SERVICE_NAME "DenoiseSvc31"//服务名#define MUTE_LENGTH 128#define SAMPLE_RATE 11025SERVICE_STATUS          ServiceStatus;SERVICE_STA

7、TUS_HANDLE   hStatus;void InitService(void) {    HWAVEOUT hWaveOut ;    BYTE mute[MUTE_LENGTH];    WAVEFORMATEX waveformat = {        WAVE_FORMAT_PCM, 1, SAMPLE_RATE, SAMPLE_RATE, 1, 8, 0    };    WAVEHDR waveHdr = {        0, MUTE_LENG

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。