- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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 指向你所安排
您可能关注的文档
最近下载
- 机械制图习题集(第7版)钱可强课后习题答案.pdf
- 学堂在线网课《生活英语读写》课后作业单元考核答案.docx VIP
- CCES 02-2004 自密实混凝土设计与施工指南.pdf VIP
- 儿童闭塞性细支气管炎的诊断和治疗专家共识2023.pptx
- 学堂在线 中国共产党与中华民族伟大复兴 期末考试答案.docx VIP
- 2020年第三单元 百年追梦 复兴中华.ppt VIP
- 小学法制安全教育课件.ppt VIP
- 《芣苢》《插秧歌》课件.pptx VIP
- 《C语言程序设计教程》PPT完整全套教学课件.pptx VIP
- 初中地理八上3中国的自然资源优质课金奖课件市公开课一等奖课件名师大赛获奖课件.pptx VIP
文档评论(0)