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