DIY之樂:基于PIC32的以太網(wǎng)音箱設(shè)計(jì)案例,硬件框圖、器件選型、數(shù)據(jù)結(jié)構(gòu)、軟件流程
4軟件設(shè)計(jì)
本系統(tǒng)的整個(gè)設(shè)計(jì)包括以太網(wǎng)音響終端設(shè)備軟件設(shè)計(jì)和PC服務(wù)器軟件設(shè)計(jì)。以太網(wǎng)音響終端設(shè)備實(shí)現(xiàn)了UDP數(shù)據(jù)通信,MP3軟解碼和DAC 驅(qū)動(dòng)。而PC服務(wù)器軟件實(shí)現(xiàn)了對(duì)MP3文件的初步分析,分析提取MP3幀;通過TCP/IP的socket,以MP3幀為最小單位,按每秒26耗描勻速發(fā)送給以太網(wǎng)音響終端設(shè)備。
4.1PC服務(wù)器軟件設(shè)計(jì)
4.1.1通信數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
PC服務(wù)器利用非連接UDP和以太網(wǎng)音響終端設(shè)備通信,因此在應(yīng)用上傳輸?shù)臄?shù)據(jù)大小不宜超過數(shù)據(jù)鏈路層上的最大數(shù)據(jù)單元。因?yàn)?,如果超過數(shù)據(jù)鏈路層的上最大數(shù)據(jù)單元,會(huì)造成數(shù)據(jù)在數(shù)據(jù)鏈路層上被拆分,而且由于數(shù)據(jù)在UDP上的不可靠性,會(huì)導(dǎo)致由于整批數(shù)據(jù)中的一個(gè)分段丟失導(dǎo)致了整個(gè)數(shù)據(jù)錯(cuò)誤,因此應(yīng)用上傳輸?shù)淖畲髷?shù)據(jù)大小應(yīng)小于數(shù)據(jù)鏈路層上的最大數(shù)據(jù)單元。
上面就是發(fā)送的數(shù)據(jù)結(jié)構(gòu)。usDataHeader是數(shù)據(jù)包頭部分,其高4為該數(shù)據(jù)的類型:0x1表示該數(shù)據(jù)的為MP3幀,0x03表示該數(shù)據(jù)為MP3最后一幀;第27位到第20位為數(shù)據(jù)序號(hào);第19位到第16位為保留字段;低16位為MP3幀數(shù)據(jù)大小。ucDataBuffer為MP3數(shù)據(jù)幀。
4.1.2應(yīng)用程序界面設(shè)計(jì)
圖9展示了PC程序的主界面,其分別有服務(wù)器設(shè)置,設(shè)置IP地址、端口和音頻文件。音頻屬性中顯示了選中音頻的相關(guān)信息。以太網(wǎng)音響信息,會(huì)顯示終端設(shè)備的IP地址和它的端口號(hào)。播放控制和現(xiàn)實(shí)中現(xiàn)實(shí)了播放間隔和相應(yīng)的數(shù)據(jù)包長度,并且可以控制是否發(fā)送數(shù)據(jù)和停止。
圖9 PC程序界面
4.1.3應(yīng)用程序設(shè)計(jì)
PC服務(wù)器可以配置綁定本機(jī)網(wǎng)卡地址和端口號(hào)。然后選擇MP3音頻節(jié)目,等待以太網(wǎng)終端設(shè)備發(fā)起數(shù)據(jù)請(qǐng)求。當(dāng)收到終端設(shè)備發(fā)來的連接請(qǐng)求時(shí),將其IP地址和發(fā)送數(shù)據(jù)的端口號(hào)記錄下來,作為向終端設(shè)備發(fā)送數(shù)據(jù)的地址并將該信息現(xiàn)實(shí)到PC程序的界面上。
圖10PC服務(wù)器主程序
圖11PC服務(wù)器等待請(qǐng)求線程
圖12PC服務(wù)器發(fā)送數(shù)據(jù)定時(shí)器中斷
PC服務(wù)器在開啟時(shí)候會(huì)運(yùn)行主界面程序(其流程圖如圖9所示)和接收終端設(shè)備請(qǐng)求線程(其流程圖如圖10所示)。當(dāng)用戶播放數(shù)據(jù)之后,程序會(huì)運(yùn)行定時(shí)器終端程序,定時(shí)發(fā)送MP3數(shù)據(jù)幀。
DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY
模擬信號(hào)相關(guān)文章:什么是模擬信號(hào)
數(shù)字通信相關(guān)文章:數(shù)字通信原理
評(píng)論