李 堅(jiān) 耿 珂
讓我們來(lái)嘗試一下61A板MIC錄入語(yǔ)音的方法和播放效果。首先點(diǎn)擊光盤→電子競(jìng)賽→基礎(chǔ)篇→語(yǔ)音功能→DVR FLASH,先瀏覽DVR FLASH.pdf文件,將要進(jìn)行的工程項(xiàng)目的功能是:點(diǎn)按K1鍵,開始錄音;點(diǎn)按K2鍵,停止錄音;點(diǎn)按K3鍵,播放錄音內(nèi)容。再將DVR FLASH文件夾拷貝到自己的硬盤目錄下,進(jìn)入IDE,打開工程項(xiàng)目DVR FLASH.spj ,點(diǎn)擊橡皮擦圖標(biāo),選定體名稱SPCE061A→OK,編譯鏈接 Build后,出現(xiàn)的錯(cuò)誤信息表明缺少兩個(gè)頭文件hardware.h和dvr.h(圖1),
尋找發(fā)現(xiàn)在Include中有所需頭文件(圖2),添加頭文件(圖3)到工程項(xiàng)目中,編譯鏈接 Build后,出現(xiàn)的錯(cuò)誤信息表明,用來(lái)產(chǎn)生目標(biāo)文件的hardware.h頭文件不符合規(guī)定(圖4)。試著將Include文件夾下的此文件復(fù)制到工程項(xiàng)目DVR DLASH.spj 所在目錄下,hardware.h頭文件問題解決了,新出現(xiàn)的dvr.h頭文件問題(圖5)估計(jì)與hardware.h頭文件的問題相同,所以依上述方法辦理。
再次編譯鏈接Build,出現(xiàn)五個(gè)錯(cuò)誤(圖6),錯(cuò)誤分為兩類:一是文件調(diào)用;一是函數(shù)定義。這次直接將兩個(gè).inc文件從Include文件夾下復(fù)制到所用工程項(xiàng)目目錄下,再次編譯鏈接Build,問題集中到hardware.asm文件上(圖7),尋找D:盤,無(wú)錯(cuò)誤信息提示中的路徑D:program FilessunplusunSOIED180,工程項(xiàng)目中又包含有hardware.asm這個(gè)文件,并提示所包含的文件在Include目錄下,無(wú)奈下試著將Include目錄下的該文件拷貝到DVR FLASH.spj所在目錄下,即向DVR_FLASH目錄中添加hardware.asm文件(圖8),編譯鏈接Build后,錯(cuò)誤信息發(fā)生了變化(圖9),不知為什么會(huì)有這樣的變化,按理說(shuō)hardware.asm是同一個(gè)文件,只是在不同的目錄下,但畢竟是有了變化,而且這些錯(cuò)誤我們以前曾經(jīng)見過(guò),在Resource.asm文件中添加對(duì)這些函數(shù)的定義即可。在文件Resource.asm中添加函數(shù)定義以后,編譯鏈接成功(圖10),問題解決了。
下載運(yùn)行程序,按鍵錄音放音均無(wú)反應(yīng)。更換一個(gè)已完成的工程項(xiàng)目,播音正常,說(shuō)明61A板的狀態(tài)是好的??梢耘袛鄦栴}還是出在軟件上,可是如何查找,真是讓人一時(shí)間無(wú)從下手,因?yàn)榫臀覀儸F(xiàn)在的情況而言,對(duì)61A板及凌陽(yáng)單片機(jī)系統(tǒng)還只是學(xué)到了一點(diǎn)皮毛,無(wú)法從根本上判斷出問題的癥結(jié)。怎么辦呢?想來(lái)想去,最后把思路鎖定在那條指明路徑的錯(cuò)誤信息上。錯(cuò)誤信息告訴我們,這個(gè)工程項(xiàng)目所使用的文件hardware.asm應(yīng)當(dāng)在D:program FilessunplusunSOIED180目錄下,可以推斷出當(dāng)時(shí)凌陽(yáng)工程師完成這個(gè)工程項(xiàng)目時(shí),所使用的文件hardware.asm是存放在這個(gè)目錄下的,那么是不是并非所有的工程項(xiàng)目均公用同一個(gè)hardware.asm文件呢?從圖10中我們已知現(xiàn)在使用的hardware.asm文件大小為17.8KB,于是,迫不及待地開始了搜尋工作,進(jìn)入光盤,點(diǎn)擊光盤→電子競(jìng)賽→基礎(chǔ)篇→語(yǔ)音功能→語(yǔ)音辨識(shí)→guard SD(圖11),在guardSD目錄下,找到了與上述大小不同的hardware.asm文件(圖12),該文件大小為27.6KB。真是山窮水復(fù)疑無(wú)路,柳暗花明又一村哪!我們知道語(yǔ)音辨識(shí)中有語(yǔ)音訓(xùn)練的內(nèi)容,也就是需要通過(guò)61A板的MIC,向單片機(jī)中錄入語(yǔ)音,換句話說(shuō),這個(gè)語(yǔ)音辨識(shí)工程項(xiàng)目具有語(yǔ)音錄入功能,那么它所使用的hardware.asm文件,應(yīng)當(dāng)是能夠滿足語(yǔ)音錄入功能的一個(gè)必要條件。立刻將工程項(xiàng)目DVR_FLASH中的文件hardware.asm移除,用此27.6KB大小的hardware.asm文件覆蓋DVR_FLASH目錄下的17.8KB大小的hardware.asm文件,并添加到Source Files中,再次編譯鏈接Build出現(xiàn)一個(gè)錯(cuò)誤,一個(gè)函數(shù)定義了兩次(圖13)。這說(shuō)明新的hardware.asm文件已經(jīng)定義了這個(gè)變量,打開hardware.asm文件看一下,果然如此,我們應(yīng)刪除hardware.asm文件中后來(lái)添加的那些語(yǔ)句,刪除后再次編譯鏈接Build,下載運(yùn)行程序,OK啦!按鍵錄音、放音,全部OK啦!
雖說(shuō)我們是新手,雖說(shuō)我們遇到了許多溝溝坎坎,磕磕絆絆的一路走來(lái),可掂掂我們的行囊,卻有了幾分重量,有了幾分收獲,到了稍事整理的時(shí)候了,下期我們盤點(diǎn)一下收獲,梳理一下思路,希望能匯集到朋友們的寶貴信息,也歡迎大家到電子世界論壇(bbs.eleworld.com)討論、交流。