APP下载

基于LabVIEW的实时语音通信技术实现

2016-12-23胡鹏瑞王子逸庄肖波祝王磊于唯楚

电子设计工程 2016年24期
关键词:虚拟仪器服务器端网络通信

胡鹏瑞,王子逸,庄肖波,2,祝王磊,于唯楚

(1.江苏科技大学 电子信息学院,江苏,镇江,212003;2.镇江比太系统工程有限公司 江苏 镇江212003)

基于LabVIEW的实时语音通信技术实现

胡鹏瑞1,王子逸1,庄肖波1,2,祝王磊1,于唯楚1

(1.江苏科技大学 电子信息学院,江苏,镇江,212003;2.镇江比太系统工程有限公司 江苏 镇江212003)

针对工业现场工作人员需要与后方进行实时通信的问题,本文基于美国国家仪器(National Instruments,简称NI)公司推出的LabVIEW软件平台,利用其面向测控领域推出的网络通信技术DataSocket技术实现两台通讯设备的实时语音通讯。针对通讯过程中数据流向是双向的问题,本文对传统C/S(client/server)模式进行改进,使客户端和服务器端都具有数据接收发送的功能,在实验室环境下,利用两台电脑实现了实时语音通信.

LabVIEW;DataSocket;C/S模式;实时语音通信

随着计算机技术,网络通信技术,大规模集成电路的发展,一种全新的仪器概念——虚拟仪器应运而出。美国国家仪器(National Instruments,NI)公司研发推出了图形化编程环境开发平台——LabVIEW,目前已成为最主流的虚拟仪器软件设计工具之一。将LabVIEW软件平台和网络技术相结合,就可以构成网络化虚拟仪器系统,通过网络进行数据共享。目前,LabVIEW实现网络通信的方法有3大类:1)使用包括TCP/IP协议、UDP、串口通信协议、无线网络协议等的网络通信协议编程实现网络通信;2)使用共享变量实现网络通信;3)使用基于TCP/IP数据传输协议的DataSocket技术实现网络通信;文中使用第三种方法,利用DataSocket技术实现实时语音通信。

1 DataSocket的主要内容

1.1 DataSocket技术

DataSocket技术是LabVIEW的网络编程的主要技术。用于共享传输实时数据,它支持多种通信协议,通过统一标识符URL(Uniform Resource Locator)确定通信地址和所遵循的通信协议。它基于microsoft的ActiveX和COM技术,对TCP/ IP协议高度封装,用户不需要掌握TCP/IP的底层编程技术就可以进行高层程序开发实现网络数据传输,从而简化通信程序的编写过程,提高编程效率。

随着计算机网络技术的发展,网络通信信道容量不断扩大,现代检测和与自动化应用中的测控系统正逐渐向网络化方向发展。通过DataSocket技术与网络技术的结合,人们将更方便的对远程数据行采集、分析和处理,获得及时的信息与结果。目前,在10M网络的带宽下,DataSocket的传输速率可达640kbit/s,传输效果可以满足一般的数据采集传输系统。

1.2 DataSocket的逻辑构成

Datasocket包 括 datasocket server manager,datasocket server和datasocket API三部分。Datasocket server manager个独立运行的应用程序,他的主要功能有设置datasocket server的参数,配置数据项,如设置连接的创建数据项和客服端程序的最大数目,默认的最大数据包的数量和最大缓冲区的大小,创建用户组和用户等。Datasocket server程序是运行在服务器端的独立应用程序,用于监管manager中用户组和客户端之间的数据交换,所有虚拟仪器软件采集到的数据都是通过datasocket server进行传输,所以采用datasocket技术进行通信必须在服务器和客服端的计算机上运行 datasocket server。Datasocket相关函数称作API,负责打开,读写和关闭URL连接的数据项。LabVIEW提供几个datasocket API函数,分别是打开datasocket函数,写入 datasocket函数,读取datasocket函数。一般利用打开datasocket函数打开URL中数据连接,返回连接ID,使用打开datasocket函数写入数据,使用读取datasocket函数读取数据。

图1 DataSocket实现网络通信的体系结构

2 C/S模式的主要内容与改进

C/S(client/server)模式即客户端和服务器模式,采用C/S模式进行双机通信是LabVIEW进行网络通信中广泛使用的方法之一。C/S模式是软件体系结构,在Client/Server结构的系统中,应用程序分为客户端和服务器端两大部分,通常将数据计算,管理任务分配给服务器端,而将人机交互等任务任务交给客户端处理。通过这种方式合理利用硬件资源提供了更好的运行性能和更高的可靠性。在基于服务器的网络中,共享数据全部集中在服务器上,不必将每台机器的资源共享。利用传统C/S模式实现双机通信时,客户端和服务器分别处在不同的计算机上,其通讯原理是一个具有具体IP地址的服务器端监听相应端口的请求,当客户端发送连接请求时,服务器接收到此请求,建立连接,服务器处理此请求,发送客户端需要的数据,如此重复上述过程,直至一次会话完成。

这种传统模式存在其弊端,数据集中保存在服务器端,只能根据请求将自身数据共享出去,然而在实现双机语音的过程中,数据的流向是双向同时进行的,所以将客户端程序与服务器功能结合在一个应用程序中,使运行此程序的两台计算机都具备数据接收发送的功能,通讯过程中即作为服务器处理发送语音,同时又接收来自对方的语音数据,从而实现实时的语音通信。

图2 程序实现整体框图

3 实现实时语音通信的方法

本节介绍利用DataSocket实现实时语音通信。它的主要工作原理就是通过本机的IP地址将采集到的声音写入到DataSocket中,然后通过对方的IP将写入到DataSocket中的语音按照给定的格式输出,从而实现本机的数据采集和对方的数据输出,具体工作过程如下:

3.1 语音采集

将本机的IP地址写入写入DataSocket模块中,根据自身需求配置声音输入,其中,在配置声音输入VI中(图3中黑框所示部分—①),每通道的采样总数指定是缓冲区中每通道的采样数量。 如需程序中需要连续采样则应使用较大的采样数量。通常情况下,采样的数量越少,对内存的占用就越少。文中因实现即时语音通信,采集数量较大,故设置10 000较大值。采样模式主要指定VI每次采集一个采样的方式有限采样或连续采样。在有限采样模式下,在写入每通道采样总数配置的指定的采样数之前,程序模块只调用读取声音输入。在连续采样的模式下,可以根据程序或者采集需要反复调用“读取声音输入”程序框图。 本文中所介绍方法采用连续采样。设备ID指的是声音操作时使用的输入或输出设备。通常,在没有特殊要求或者需求的情况下都应选择默认值0,可选值的范围为0到n-1,n指的是是计算机上输入或输出设备的个数,文中实现功能采用默认值0即可。采样率(S/s)设置声音操作的采样率,通常为44 100 S/s、22 050 S/s、11 025 S/s,默认值为22 050 S/s,根据要求及设备需要,文中所介绍方法,采用默认值即可。在读取声音输入VI(图3中红色框所示部分—②)中,每通道的采样总数指定了每条通道从缓冲区读取的采样数,设为4410即可,设置任务ID是为了要操纵或输入的已配置设备的声音操作。 通过配置声音输入VI可生成任务ID,途中直接可将配置声音输入VI中生成的任务ID与自身任务ID相连即可。在写入DataSocket(函数)中(图3绿色框所示部分—③),将数据与数据线连接,连接输入接本机IP。写入循环框,定时时间设为10毫秒,即每10毫秒采样一次,放入读取声音输出模块以及写入 Data Socket模块,按要求连接线路。循环框外放置声音输入清零模块及简易错误处理器,按要求连接即可完成声音采集部分。

3.2 语音输出

将对方的IP地址写入读取DataSocket模块中,设置声音波形常量,根据自身需求配置声音输出模块,写入循环框,定时时间设为10毫秒,即每10毫秒采样一次,放入设置声音输出音量模块、写入声音输出模块以及读取DataSocket模块,连接线路。循环框外放置声音输出清零模块及错误合并输出模块,连接即可完成声音输出部分。

3.3 地址设置部分

将地址输入设为固定格式,用字符串拼接,界面只需输入IP地址即可固定加上dstp://前缀以及/SampleNum后缀以满足NI服务器所需要求。

图3 语音采集程序

图4 语音输出程序

3.4 整体程序展示

整体程序展示如图5所示。

图5 整体程序展示

4 测试结果

测试结果如图6~8所示。

上图两个测试界面为不同IP地址的PC机上语音测试[16]时接收到的波形图像,从图像上可以看出两台PC机均可收到对方语音信号,实现了既定的功能。

5 结束语

文中介绍了一种DataSocket技术实现双机语音实时通信的方法,在LabVIEW平台强大的网络通信功能下,利用DataSocket对TCP/IP底层完全封装,利于开发的优势,传统C/S模式服务器与客户机程序结合,两台计算机同时采集数据,通过DSTP(DataSocket Transfer Protocol?)通信协议传递至对方扬声器播放从而实现双机网络通信,体现了实时,双向的特点。

图6 输入界面

图7 测试界面1

图8 测试界面2

[1]毛顿,郭庆平.LabVIEW中用Datasocket技术实现网络化应用[J].现代电子技术,2002(3):70-71.

[2]黄国兴.基于LabVIEW的网络通信方法[J].新技术新工艺,2008,10(10):40-42.

[3]孟林枫.利用DataSocket技术实现远程数据传输[J].皖西学院学报,2008,2(2):42-45.

[4]焦瑞莉,南利平,李学华.基于LabVIEW的通信专业远程虚拟实验室[J].国外电子测量术,2005(3):3-4.

[5]杨海明,马志强,龚松显,等.基于LabVIEW实现网络语音通信[J].电子产品世界,2015,7(7):46-47.

[6]李洪珠.基于LabVIEW的远程测控系统技术[J].国外电子测量技术,2006(1):51-53.

[7]阮奇桢.我和LabVIEW一个NI工程师的十年编程经验[M].北京:北京航空航天出版社,2012.

[8]程学庆,房晓溪.LabVIEW图形化编程与实例应用 [M].北京:中国铁道出版社,2005.

[9]李江全,任玲,廖洁安,等.LabVIEW虚拟仪器从入门到测控应用130例[M].北京:电子工业出版社,2013.

[10]章加荣,王璨,赵国宇.精通LabVIEW虚拟仪器程序设计与案例实现[M].北京.人民邮电出版社,2013.

[11]陈树学,刘萱.LabVIEW宝典[M].北京.电子工业出版社,2013.

[12]吴成东,孙秋野,盛科.LabVIEW虚拟仪器程序设计及应用[M].北京.人民邮电出版社,2012

[13]NationalInstrumentsCorporation.DAQ E SeriesUser Manual.February 2007,370503K-01.

[14]龙华伟,顾永刚.LabVIEW 8.2.1与DAQ数据采集[M].北京:清华大学出版社,2008.

[15](美)Robert H.Bishop,National Instruments著.LabVIEW实践教程[M].乔瑞萍,林欣,等译.北京:电子工业出版社,2014.

[16]韩红帮,肖红,李海雁.基于IMBE语音编译码算法在PC机上的实时实现[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 稿件编号:201512065

2015年江苏省大学生创新创业训练计划项目(201510289016Z)

胡鹏瑞(1993—),男,山东青岛人。研究方向:计算机测控技术。

猜你喜欢

虚拟仪器服务器端网络通信
Linux环境下基于Socket的数据传输软件设计
基于网络通信的智能照明系统设计
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展
PCB 刻制机功能开发及在虚拟仪器实验室建设中的应用
虚拟仪器及其在电工电子实验中的应用
一种基于虚拟仪器的电控柴油机实验台的设计
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计