胡鵬瑞,王子逸,莊肖波,2,祝王磊,于唯楚
(1.江蘇科技大學(xué) 電子信息學(xué)院,江蘇,鎮(zhèn)江,212003;2.鎮(zhèn)江比太系統(tǒng)工程有限公司 江蘇 鎮(zhèn)江212003)
基于LabVIEW的實(shí)時(shí)語(yǔ)音通信技術(shù)實(shí)現(xiàn)
胡鵬瑞1,王子逸1,莊肖波1,2,祝王磊1,于唯楚1
(1.江蘇科技大學(xué) 電子信息學(xué)院,江蘇,鎮(zhèn)江,212003;2.鎮(zhèn)江比太系統(tǒng)工程有限公司 江蘇 鎮(zhèn)江212003)
針對(duì)工業(yè)現(xiàn)場(chǎng)工作人員需要與后方進(jìn)行實(shí)時(shí)通信的問(wèn)題,本文基于美國(guó)國(guó)家儀器(National Instruments,簡(jiǎn)稱(chēng)NI)公司推出的LabVIEW軟件平臺(tái),利用其面向測(cè)控領(lǐng)域推出的網(wǎng)絡(luò)通信技術(shù)DataSocket技術(shù)實(shí)現(xiàn)兩臺(tái)通訊設(shè)備的實(shí)時(shí)語(yǔ)音通訊。針對(duì)通訊過(guò)程中數(shù)據(jù)流向是雙向的問(wèn)題,本文對(duì)傳統(tǒng)C/S(client/server)模式進(jìn)行改進(jìn),使客戶(hù)端和服務(wù)器端都具有數(shù)據(jù)接收發(fā)送的功能,在實(shí)驗(yàn)室環(huán)境下,利用兩臺(tái)電腦實(shí)現(xiàn)了實(shí)時(shí)語(yǔ)音通信.
LabVIEW;DataSocket;C/S模式;實(shí)時(shí)語(yǔ)音通信
隨著計(jì)算機(jī)技術(shù),網(wǎng)絡(luò)通信技術(shù),大規(guī)模集成電路的發(fā)展,一種全新的儀器概念——虛擬儀器應(yīng)運(yùn)而出。美國(guó)國(guó)家儀器(National Instruments,NI)公司研發(fā)推出了圖形化編程環(huán)境開(kāi)發(fā)平臺(tái)——LabVIEW,目前已成為最主流的虛擬儀器軟件設(shè)計(jì)工具之一。將LabVIEW軟件平臺(tái)和網(wǎng)絡(luò)技術(shù)相結(jié)合,就可以構(gòu)成網(wǎng)絡(luò)化虛擬儀器系統(tǒng),通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)共享。目前,LabVIEW實(shí)現(xiàn)網(wǎng)絡(luò)通信的方法有3大類(lèi):1)使用包括TCP/IP協(xié)議、UDP、串口通信協(xié)議、無(wú)線(xiàn)網(wǎng)絡(luò)協(xié)議等的網(wǎng)絡(luò)通信協(xié)議編程實(shí)現(xiàn)網(wǎng)絡(luò)通信;2)使用共享變量實(shí)現(xiàn)網(wǎng)絡(luò)通信;3)使用基于TCP/IP數(shù)據(jù)傳輸協(xié)議的DataSocket技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)通信;文中使用第三種方法,利用DataSocket技術(shù)實(shí)現(xiàn)實(shí)時(shí)語(yǔ)音通信。
1.1 DataSocket技術(shù)
DataSocket技術(shù)是LabVIEW的網(wǎng)絡(luò)編程的主要技術(shù)。用于共享傳輸實(shí)時(shí)數(shù)據(jù),它支持多種通信協(xié)議,通過(guò)統(tǒng)一標(biāo)識(shí)符URL(Uniform Resource Locator)確定通信地址和所遵循的通信協(xié)議。它基于microsoft的ActiveX和COM技術(shù),對(duì)TCP/ IP協(xié)議高度封裝,用戶(hù)不需要掌握TCP/IP的底層編程技術(shù)就可以進(jìn)行高層程序開(kāi)發(fā)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳輸,從而簡(jiǎn)化通信程序的編寫(xiě)過(guò)程,提高編程效率。
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)通信信道容量不斷擴(kuò)大,現(xiàn)代檢測(cè)和與自動(dòng)化應(yīng)用中的測(cè)控系統(tǒng)正逐漸向網(wǎng)絡(luò)化方向發(fā)展。通過(guò)DataSocket技術(shù)與網(wǎng)絡(luò)技術(shù)的結(jié)合,人們將更方便的對(duì)遠(yuǎn)程數(shù)據(jù)行采集、分析和處理,獲得及時(shí)的信息與結(jié)果。目前,在10M網(wǎng)絡(luò)的帶寬下,DataSocket的傳輸速率可達(dá)640kbit/s,傳輸效果可以滿(mǎn)足一般的數(shù)據(jù)采集傳輸系統(tǒng)。
1.2 DataSocket的邏輯構(gòu)成
Datasocket包 括 datasocket server manager,datasocket server和datasocket API三部分。Datasocket server manager個(gè)獨(dú)立運(yùn)行的應(yīng)用程序,他的主要功能有設(shè)置datasocket server的參數(shù),配置數(shù)據(jù)項(xiàng),如設(shè)置連接的創(chuàng)建數(shù)據(jù)項(xiàng)和客服端程序的最大數(shù)目,默認(rèn)的最大數(shù)據(jù)包的數(shù)量和最大緩沖區(qū)的大小,創(chuàng)建用戶(hù)組和用戶(hù)等。Datasocket server程序是運(yùn)行在服務(wù)器端的獨(dú)立應(yīng)用程序,用于監(jiān)管manager中用戶(hù)組和客戶(hù)端之間的數(shù)據(jù)交換,所有虛擬儀器軟件采集到的數(shù)據(jù)都是通過(guò)datasocket server進(jìn)行傳輸,所以采用datasocket技術(shù)進(jìn)行通信必須在服務(wù)器和客服端的計(jì)算機(jī)上運(yùn)行 datasocket server。Datasocket相關(guān)函數(shù)稱(chēng)作API,負(fù)責(zé)打開(kāi),讀寫(xiě)和關(guān)閉URL連接的數(shù)據(jù)項(xiàng)。LabVIEW提供幾個(gè)datasocket API函數(shù),分別是打開(kāi)datasocket函數(shù),寫(xiě)入 datasocket函數(shù),讀取datasocket函數(shù)。一般利用打開(kāi)datasocket函數(shù)打開(kāi)URL中數(shù)據(jù)連接,返回連接ID,使用打開(kāi)datasocket函數(shù)寫(xiě)入數(shù)據(jù),使用讀取datasocket函數(shù)讀取數(shù)據(jù)。

圖1 DataSocket實(shí)現(xiàn)網(wǎng)絡(luò)通信的體系結(jié)構(gòu)
C/S(client/server)模式即客戶(hù)端和服務(wù)器模式,采用C/S模式進(jìn)行雙機(jī)通信是LabVIEW進(jìn)行網(wǎng)絡(luò)通信中廣泛使用的方法之一。C/S模式是軟件體系結(jié)構(gòu),在Client/Server結(jié)構(gòu)的系統(tǒng)中,應(yīng)用程序分為客戶(hù)端和服務(wù)器端兩大部分,通常將數(shù)據(jù)計(jì)算,管理任務(wù)分配給服務(wù)器端,而將人機(jī)交互等任務(wù)任務(wù)交給客戶(hù)端處理。通過(guò)這種方式合理利用硬件資源提供了更好的運(yùn)行性能和更高的可靠性。在基于服務(wù)器的網(wǎng)絡(luò)中,共享數(shù)據(jù)全部集中在服務(wù)器上,不必將每臺(tái)機(jī)器的資源共享。利用傳統(tǒng)C/S模式實(shí)現(xiàn)雙機(jī)通信時(shí),客戶(hù)端和服務(wù)器分別處在不同的計(jì)算機(jī)上,其通訊原理是一個(gè)具有具體IP地址的服務(wù)器端監(jiān)聽(tīng)相應(yīng)端口的請(qǐng)求,當(dāng)客戶(hù)端發(fā)送連接請(qǐng)求時(shí),服務(wù)器接收到此請(qǐng)求,建立連接,服務(wù)器處理此請(qǐng)求,發(fā)送客戶(hù)端需要的數(shù)據(jù),如此重復(fù)上述過(guò)程,直至一次會(huì)話(huà)完成。
這種傳統(tǒng)模式存在其弊端,數(shù)據(jù)集中保存在服務(wù)器端,只能根據(jù)請(qǐng)求將自身數(shù)據(jù)共享出去,然而在實(shí)現(xiàn)雙機(jī)語(yǔ)音的過(guò)程中,數(shù)據(jù)的流向是雙向同時(shí)進(jìn)行的,所以將客戶(hù)端程序與服務(wù)器功能結(jié)合在一個(gè)應(yīng)用程序中,使運(yùn)行此程序的兩臺(tái)計(jì)算機(jī)都具備數(shù)據(jù)接收發(fā)送的功能,通訊過(guò)程中即作為服務(wù)器處理發(fā)送語(yǔ)音,同時(shí)又接收來(lái)自對(duì)方的語(yǔ)音數(shù)據(jù),從而實(shí)現(xiàn)實(shí)時(shí)的語(yǔ)音通信。

圖2 程序?qū)崿F(xiàn)整體框圖
本節(jié)介紹利用DataSocket實(shí)現(xiàn)實(shí)時(shí)語(yǔ)音通信。它的主要工作原理就是通過(guò)本機(jī)的IP地址將采集到的聲音寫(xiě)入到DataSocket中,然后通過(guò)對(duì)方的IP將寫(xiě)入到DataSocket中的語(yǔ)音按照給定的格式輸出,從而實(shí)現(xiàn)本機(jī)的數(shù)據(jù)采集和對(duì)方的數(shù)據(jù)輸出,具體工作過(guò)程如下:
3.1 語(yǔ)音采集
將本機(jī)的IP地址寫(xiě)入寫(xiě)入DataSocket模塊中,根據(jù)自身需求配置聲音輸入,其中,在配置聲音輸入VI中(圖3中黑框所示部分—①),每通道的采樣總數(shù)指定是緩沖區(qū)中每通道的采樣數(shù)量。 如需程序中需要連續(xù)采樣則應(yīng)使用較大的采樣數(shù)量。通常情況下,采樣的數(shù)量越少,對(duì)內(nèi)存的占用就越少。文中因?qū)崿F(xiàn)即時(shí)語(yǔ)音通信,采集數(shù)量較大,故設(shè)置10 000較大值。采樣模式主要指定VI每次采集一個(gè)采樣的方式有限采樣或連續(xù)采樣。在有限采樣模式下,在寫(xiě)入每通道采樣總數(shù)配置的指定的采樣數(shù)之前,程序模塊只調(diào)用讀取聲音輸入。在連續(xù)采樣的模式下,可以根據(jù)程序或者采集需要反復(fù)調(diào)用“讀取聲音輸入”程序框圖。 本文中所介紹方法采用連續(xù)采樣。設(shè)備ID指的是聲音操作時(shí)使用的輸入或輸出設(shè)備。通常,在沒(méi)有特殊要求或者需求的情況下都應(yīng)選擇默認(rèn)值0,可選值的范圍為0到n-1,n指的是是計(jì)算機(jī)上輸入或輸出設(shè)備的個(gè)數(shù),文中實(shí)現(xiàn)功能采用默認(rèn)值0即可。采樣率(S/s)設(shè)置聲音操作的采樣率,通常為44 100 S/s、22 050 S/s、11 025 S/s,默認(rèn)值為22 050 S/s,根據(jù)要求及設(shè)備需要,文中所介紹方法,采用默認(rèn)值即可。在讀取聲音輸入VI(圖3中紅色框所示部分—②)中,每通道的采樣總數(shù)指定了每條通道從緩沖區(qū)讀取的采樣數(shù),設(shè)為4410即可,設(shè)置任務(wù)ID是為了要操縱或輸入的已配置設(shè)備的聲音操作。 通過(guò)配置聲音輸入VI可生成任務(wù)ID,途中直接可將配置聲音輸入VI中生成的任務(wù)ID與自身任務(wù)ID相連即可。在寫(xiě)入DataSocket(函數(shù))中(圖3綠色框所示部分—③),將數(shù)據(jù)與數(shù)據(jù)線(xiàn)連接,連接輸入接本機(jī)IP。寫(xiě)入循環(huán)框,定時(shí)時(shí)間設(shè)為10毫秒,即每10毫秒采樣一次,放入讀取聲音輸出模塊以及寫(xiě)入 Data Socket模塊,按要求連接線(xiàn)路。循環(huán)框外放置聲音輸入清零模塊及簡(jiǎn)易錯(cuò)誤處理器,按要求連接即可完成聲音采集部分。
3.2 語(yǔ)音輸出
將對(duì)方的IP地址寫(xiě)入讀取DataSocket模塊中,設(shè)置聲音波形常量,根據(jù)自身需求配置聲音輸出模塊,寫(xiě)入循環(huán)框,定時(shí)時(shí)間設(shè)為10毫秒,即每10毫秒采樣一次,放入設(shè)置聲音輸出音量模塊、寫(xiě)入聲音輸出模塊以及讀取DataSocket模塊,連接線(xiàn)路。循環(huán)框外放置聲音輸出清零模塊及錯(cuò)誤合并輸出模塊,連接即可完成聲音輸出部分。
3.3 地址設(shè)置部分
將地址輸入設(shè)為固定格式,用字符串拼接,界面只需輸入IP地址即可固定加上dstp://前綴以及/SampleNum后綴以滿(mǎn)足NI服務(wù)器所需要求。

圖3 語(yǔ)音采集程序

圖4 語(yǔ)音輸出程序
3.4 整體程序展示
整體程序展示如圖5所示。

圖5 整體程序展示
測(cè)試結(jié)果如圖6~8所示。
上圖兩個(gè)測(cè)試界面為不同IP地址的PC機(jī)上語(yǔ)音測(cè)試[16]時(shí)接收到的波形圖像,從圖像上可以看出兩臺(tái)PC機(jī)均可收到對(duì)方語(yǔ)音信號(hào),實(shí)現(xiàn)了既定的功能。
文中介紹了一種DataSocket技術(shù)實(shí)現(xiàn)雙機(jī)語(yǔ)音實(shí)時(shí)通信的方法,在LabVIEW平臺(tái)強(qiáng)大的網(wǎng)絡(luò)通信功能下,利用DataSocket對(duì)TCP/IP底層完全封裝,利于開(kāi)發(fā)的優(yōu)勢(shì),傳統(tǒng)C/S模式服務(wù)器與客戶(hù)機(jī)程序結(jié)合,兩臺(tái)計(jì)算機(jī)同時(shí)采集數(shù)據(jù),通過(guò)DSTP(DataSocket Transfer Protocol?)通信協(xié)議傳遞至對(duì)方揚(yáng)聲器播放從而實(shí)現(xiàn)雙機(jī)網(wǎng)絡(luò)通信,體現(xiàn)了實(shí)時(shí),雙向的特點(diǎn)。

圖6 輸入界面

圖7 測(cè)試界面1

圖8 測(cè)試界面2
[1]毛頓,郭慶平.LabVIEW中用Datasocket技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)化應(yīng)用[J].現(xiàn)代電子技術(shù),2002(3):70-71.
[2]黃國(guó)興.基于LabVIEW的網(wǎng)絡(luò)通信方法[J].新技術(shù)新工藝,2008,10(10):40-42.
[3]孟林楓.利用DataSocket技術(shù)實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸[J].皖西學(xué)院學(xué)報(bào),2008,2(2):42-45.
[4]焦瑞莉,南利平,李學(xué)華.基于LabVIEW的通信專(zhuān)業(yè)遠(yuǎn)程虛擬實(shí)驗(yàn)室[J].國(guó)外電子測(cè)量術(shù),2005(3):3-4.
[5]楊海明,馬志強(qiáng),龔松顯,等.基于LabVIEW實(shí)現(xiàn)網(wǎng)絡(luò)語(yǔ)音通信[J].電子產(chǎn)品世界,2015,7(7):46-47.
[6]李洪珠.基于LabVIEW的遠(yuǎn)程測(cè)控系統(tǒng)技術(shù)[J].國(guó)外電子測(cè)量技術(shù),2006(1):51-53.
[7]阮奇楨.我和LabVIEW一個(gè)NI工程師的十年編程經(jīng)驗(yàn)[M].北京:北京航空航天出版社,2012.
[8]程學(xué)慶,房曉溪.LabVIEW圖形化編程與實(shí)例應(yīng)用 [M].北京:中國(guó)鐵道出版社,2005.
[9]李江全,任玲,廖潔安,等.LabVIEW虛擬儀器從入門(mén)到測(cè)控應(yīng)用130例[M].北京:電子工業(yè)出版社,2013.
[10]章加榮,王璨,趙國(guó)宇.精通LabVIEW虛擬儀器程序設(shè)計(jì)與案例實(shí)現(xiàn)[M].北京.人民郵電出版社,2013.
[11]陳樹(shù)學(xué),劉萱.LabVIEW寶典[M].北京.電子工業(yè)出版社,2013.
[12]吳成東,孫秋野,盛科.LabVIEW虛擬儀器程序設(shè)計(jì)及應(yīng)用[M].北京.人民郵電出版社,2012
[13]NationalInstrumentsCorporation.DAQ E SeriesUser Manual.February 2007,370503K-01.
[14]龍華偉,顧永剛.LabVIEW 8.2.1與DAQ數(shù)據(jù)采集[M].北京:清華大學(xué)出版社,2008.
[15](美)Robert H.Bishop,National Instruments著.LabVIEW實(shí)踐教程[M].喬瑞萍,林欣,等譯.北京:電子工業(yè)出版社,2014.
[16]韓紅幫,肖紅,李海雁.基于IMBE語(yǔ)音編譯碼算法在PC機(jī)上的實(shí)時(shí)實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2015,23(7):186-188.
Real time voice communication based on LabVIEW
HU Peng-rui1,WANG Zi-yi1,ZHUANG Xiao-bo1,2,ZHU Wang-lei1,YU Wei-chu1
(1.School of Electronic and Information,Jiangsu University of Science and Technology,Zhenjiang 212003,China;2.Zhenjiang Bittek System Engineering Co.,LTD,Zhenjiang 212003,China)
For the realization of the remote communication of virtual instrument,we rely on the NI company's LabVIEW software platform ,and using DataSocket technology which towards to the field of measurement and control network communication,It improved the traditional C/S(client/server)mode,allows two communication device as a server,and can also be used as a client machine,achieve two machines’real-time voice communications.
LabVIEW;DataSocket;C/S;real time voice communications
TN912.11
A
1674-6236(2016)24-0074-04
2015-12-06 稿件編號(hào):201512065
2015年江蘇省大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目(201510289016Z)
胡鵬瑞(1993—),男,山東青島人。研究方向:計(jì)算機(jī)測(cè)控技術(shù)。