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文档。上传文档
查看更多
UML嵌式系统开发实例

 PAGE 46 ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ  PAGE 47 ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ  PAGE 47 2008.1.15 by 高焕堂 讲义名称:UML嵌入式系统开发实例 本讲义内容包括: 1. 录音程式(Recorder) p.2 2. 单晶片嵌入式软体介面设计 p.28 以8051控制四位数七节LED灯为例 本文引自 高焕堂所着的 “物件导向ANSI-C” 和 “物件导向Keil C51”两书 UML嵌入式系统开发实例之一 录音程式(Recorder) 情 境:录音及播放(Record/Play) 建 模:SysML/UML 语 言:物件导向LW_OOPC 资料库:Linter Embedded DBMS 平 台:Win32/VC++ 基础「录音」概念和技术 认识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的记忆体空间来存放 其中,这.wav格式之音档除了8Bit之取样模式之外,还可以选择16Bit取样模式。8Bit取样意味着每次取样8bit,所以音档的每笔资料长度是1Byte;若为16Bit音档的话,则每笔资料长度是2 Bytes。当取样频率一样时,每次取样较大可得到较佳的音质。但是所需要较大的储存空间。 .wav音档又分为单声道(channel)或双声道等,单声道录音时,.wav音档是由单一个资料所构成;使用双声道录音时,会同时接收两笔资料,一笔由左声道输出的,另一笔是由右声道输出,依序写入.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 指向你所安排

文档评论(0)

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

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

1亿VIP精品文档

相关文档