EMS-UML嵌入式系统开发实例.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EMS-UML嵌入式系统开发实例

讲义名称:UML嵌入式系统开发实例 本讲义内容包括: 1. 录音程式(Recorder)2. 单晶片嵌入式介面设计--- 以四位数七节LED灯为例 “物件导向ANSI-C” 和 “物件导向Keil C51”两书 UML嵌入式系统开发实例之一 录音程式(Recorder) ---- 情 境:(Record/Play) ---- 建 模:SysML/UML ---- 语 言:物件导向LW_OOPC ---- 资料库:Linter Embedded DBMS ---- 平 台:Win32 基础「录音」概念和技术 认识PCM规格 在你的电脑上,可以使用许多软体来进行录音。本章是假设你想自己写个录音程式,让你自己透过麦克风来录制你的声音,并且存入.wav型态的音档。由于.wav是标准的音档格式,你可使用许多种软体来播放之,包括Microsoft 的Windows Media Player等流行的播放软体。 在撰写录音程式方面,Windows提供了完整的API函数可供你去呼叫,就能用来录制.wav音档了。通常是以8、11、16、22KHz取样后再依据PCM(Pulse Code Modulation) 音轨来进行编码、数位化之后就成为.wav格式之音档了。由于音波可以分PCM能依固定之周期而进行取样。例如,若采取 11.025 kHz, stereo, 8-bit 模式,并且声道每次取样8bit = 1Byte 每秒钟取样11025 (即11.025 * 1000)次 录音声道数= 2 可算出每秒钟将录制 (11025 * 1 * 2) Bytes的音讯资料 若录制N秒,供需要(11025 * 2 * N) Bytes的记忆体空间来存放 8Bit取样意味着每次取样8bit,所以音档每笔资料长度是1Byte16Bit音档每笔资料长度是2 Bytes .wav音档单声道双声道等单声道音档由单一个资料构成声道笔资料,一笔由左声道输出,一笔由右声道 在你的VB.Net录音程式里,只需要将上述的参数指定(assign)给如下的format结构里,然后呼叫Win32 API,就可以了: …… Private format As WAVEFORMATEX …….. 11.025 kHz, stereo, 8-bit 且声道 format.wFormatTag = Wave.WAVE_FORMAT_PCM format.nChannels = 2 format.nSamplesPerSec = 11025 format.wBitsPerSample = 8 format.nBlockAlign = format.nChannels * (format.wBitsPerSample / 8) format.nAvgBytesPerSec = format.nSamplesPerSec * format.nBlockAlign format.cbSize = 0 …… Windows依据format里的资讯而进行音讯之采样,其过程中会不断地把采集到的音讯资料存入缓冲区(buffer)里,而你的程式必须及时给予足够的缓冲区,或者即时从缓冲区取出资料。 设定缓冲区格式 你的程式必须安排缓冲区,并决定其大小,其定义之格式如下: 缓冲区格式之内容: Structure WAVEHDR lpData As IntPtr ---- 指向你所安排的录音缓冲区(例如Byte阵列) dwBufferLength As Integer ---- 缓冲区之长度值 dwBytesRecorded As Integer ---- 是给录音系统使用,说明已经录了几个Byte dwUser As IntPtr ---- 指向原来呼叫waveInxxx来录音之物件 dwFlags As Integer ---- 相关之Flag dwLoops As Integer ---- 回圈Counter lpNext As IntPtr ---- 指向下一个缓冲区定义(WAVEHDR) reserved As Integer ---- 保留做为其他用途 End Structure 设定好缓冲区之后,你的程式就可以从缓冲区不断取出音讯资料。取得资料后,可以将之存入档案里。因之,你必须知道.wav档案的格式,才能准确地存好档案。

文档评论(0)

cwhs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档