消除笔记本的高电流噪音.docVIP

  • 2
  • 0
  • 约1.09万字
  • 约 7页
  • 2016-10-18 发布于广东
  • 举报
消除笔记本的高电流噪音

消除笔记本的高频电流噪音 季光dummyshining365@.dum 摘要:有些笔记本在使用中发出一种高频电流噪音。这种噪音随着硬盘的读写,用户对窗口界面中的滚动条的拉动发生变化,并在操作系统启动之后几乎始终存在,只有当用户播放音频文件时这种噪音会消失。本文利用这一特点针对Windows操作系统给出了消除噪音解决方案。本文设计了一个占用资源较少的Windows系统服务,在里面模拟音频文件的播放,从而将噪音消除。 关键字:笔记本高频电流噪音 Windows系统服务 ? 问题分析 有些笔记本由于设计方面的问题,如果使用了USB设备或蓝牙模块,在运行中会发出一种高频电流噪音。例子包括Dell D610,Think R60e(在使用电池的模式下)。这种噪音的来源并未得到官方的解释。但是有些厂商已经发布了修复这种噪音问题的BIOS补丁[1]。但是某些厂商并未正面解决这个问题[2]。 有一种比较方便易行的方法可以把这种噪音消除:播放一个音频文件,然后按下暂停按钮。某些用户反映在运行一些游戏时也可以将噪音消除,其实也是利用了游戏背景音乐的作用。但是这种方法的缺点是需要手工操作,并且音乐播放器往往占用大量的内存。我们应该考虑用一种节省的方式实现它。 设计与实现 Windows提供了一组波形音频的编程接口。我们可以利用它们模拟播放器的暂停状态: //代码:?模拟播放器的暂停状态 HWAVEOUT?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 };??????????????????????????//音频数据信息头 FillMemory(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,?sizeof?(WAVEHDR))?; //暂停 waveOutPause(hWaveOut)?; 利用这段代码写一个win32程序,保证程序进程不会退出(可利用一个含有Sleep调用的死循环或弹出一个模态对话框实现),即可实现消除噪音的作用。 然而这样做仍然不够完善。我们希望系统在启动的时候,无论有用户登录与否,都能够自动地调用它。为了解决这一问题,我们应当把它改造为Windows的系统服务。 Windows系统服务的编写需要服从一定的格式规范,请参阅相关文献[3],本文不予详述。需要注意的是,如果编写为独立的Windows服务,仍然需要1,900K左右的内存;如果编写为寄存在svchost中的服务[4],则可以把内存占用量大大降低,达到300~400K。本文采用了后者。 完整代码如下(我们把服务名取作DenoiseSvc31): /*消电流噪声?svchost版?3.1*/ #include?windows.h #include?stdio.h #define?SLEEP_TIME?10000 #define?SERVICE_NAME?DenoiseSvc31 //服务名 #define?MUTE_LENGTH?128 #define?SAMPLE_RATE?11025 SERVICE_STATUS??????????ServiceStatus; SERVICE_STATUS_HANDLE???hStatus; void?InitService(void)?{ ????HWAVEOUT?hWaveOut?; ????BYTE?mute[MUTE_LENGTH]; ????WAVEFORMATEX?waveformat?=?{ ????????WAVE_FORMAT_PCM,?1,?SAMPLE_RATE,?SAMPLE_RATE,?1,?8,?0 ????}; ????WAV

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档