基于Wifi的電子看板的語音系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
壓縮的數(shù)據(jù)通過idudpclient控件傳輸。參考代碼如下:
idudpclient 1.host:=IP
idudoclient 1.PORT:=PORT
idudoclient 1.SendBuffer
idudpclient控件brodcastenable屬性可以打開廣播。采用廣播方式,所有下位機(jī)都可以接收到上位機(jī)發(fā)出的數(shù)據(jù)包。
Delphi使用IdUDPServer控件監(jiān)聽端口讀取下位機(jī)聲音數(shù)據(jù),解碼調(diào)用waveOutOpen(),waveOutPrepareHeader(),wave()utWrit()播放聲音。程序流程參如圖4所示。
圖4 上位機(jī)聲音采集及傳輸流程圖
3 下位機(jī)程序設(shè)計(jì)
下位機(jī)為分布在生產(chǎn)線或者車間內(nèi)的管理看板。采用linux操作系統(tǒng)。Linux操作系統(tǒng)下把硬件作為一個(gè)設(shè)備文件。文件位于dev目錄下,文件名為dsp,讀取聲音使用read函數(shù),播放使用write函數(shù)。下位機(jī)軟件同樣啟動兩個(gè)線程一個(gè)監(jiān)聽相應(yīng)的端口獲取壓縮后的聲音數(shù)據(jù)并解壓播放,另外一個(gè)線程采集聲卡數(shù)據(jù)壓縮后傳送。
1)首先打開設(shè)備文件:
fd=open("/dev/dsp",oflag);設(shè)置采樣位數(shù)、頻率等。
2)建立線程1:pthread_create.
建立udp網(wǎng)絡(luò)連接sockfd()
讀取聲卡:
read(fd,inbuf,sizeof(inbuf));
3)adpcm編碼并傳輸
4)建立線程2
建立udp網(wǎng)絡(luò)連接監(jiān)聽端口,獲取網(wǎng)絡(luò)數(shù)據(jù),解壓縮。
寫入聲卡設(shè)備:
write(fd,outbuf,sizeof(outbuf));
程序流程參如圖5所示。
圖5 下位機(jī)程序框圖
結(jié)論
通過實(shí)踐,新型管理看板能實(shí)時(shí)、準(zhǔn)確的反映現(xiàn)場的情況。改善了生產(chǎn)及管理信息傳遞性,并且改善了傳統(tǒng)監(jiān)控的模式,看板安裝方便,無須考慮布線可以根據(jù)已有的無線路由自適應(yīng)組網(wǎng)。此外聲音廣播及上下位機(jī)實(shí)時(shí)語音通話方便了管理人員及操作人員。
評論