摘要:对讲机的通信距离有限,提出一种通过Internet传输数字对讲机话音和数据,扩大对讲机通信范围的方案。数 字对讲机通过串口与计算机相连,计算机作为中心站,完成数据的转发功能,并通过Internet传输数据。首先设计了数字对 讲机和计算机之间通信的串口通信协议,在此基础上详细讲述了中心站的软件设计。中心站软件的设计主要包括三个部 分,对讲机模块和计算机之间串口通信协议的设计和实现,通过Internet使用UDP协议的数据传输;使用Access数据库对 对讲机用户号码及中心站IP地址的管理等。通过对中心站软件的测试表明,设计的串口通信协议可行,使用中心站软件能 通过该方案有效地扩大对讲机的通信距离。
关键词:数字对讲机;串口通信;UDP; Acce s s
中图分类号:TP399 文献标识码:B 文章编号:1004-373X(2010)02-073-03
Central Station Software Design for Transmission of Digital Walkie-talkie through Internet
XIN Ran ,XIE Xiaoming
(College of Information Scinece and Technology ,Beijing University of Chemical Technology ^Beijing ,100029 ,China)
Abstract: The communication scope of walkie-talkie is limited ,a scheme which is used for transmission of the voice and data of digital walkie-talkie through Internet to enlarge the communication scope is proposed. The scheme links digital walkie-talkie with computer using serial port ,the computer acts as a central station to forward the data ,and the data is transmitted through Internet. The serial port communication protocol between digital walkie-talkie and computer is designed ,on this basis , the central station software is designed. The software mainly includes three parts ,the design and realization of the communication protocol between walkie-talkie module and computer ,using UDP protocol to transmit data through Internet ,and using Access database to manage the users' number of walkie-talkie and IP address of central station. Through testing the central station software ,it shows that the designed serial port communication protocol is feasible ,using this software through this scheme it can effectively enlarge the communication scope of digital walkie-talkie.
Keywords : digital walkie-takie ; serial port communication ;UDP;Access
0引言
作为无线通信工具,对讲机与移动电话相比具有自 己的特点,在一对一、一对多的定向专项通信中,具有建 立通信迅速的特点,尤其是一对多的特性是普通移动电 话所不能比拟的。以前对讲机广泛应用于部队、公安、 安全、救护、公用事业等政府部门,随着经济的发展,人 民对移动通信要求的增加,对讲机逐步开始应用于出租 车调度、安保、物业管理、工地、酒店等民用场合。但是 对讲机的通信距离有限,常规对讲机的通话距离一般为 3〜5 km[1],某些专业对讲机的通信距离可以达到 10 km以上,而实际通话距离一般只能为2〜7 km,在有 高大建筑物或高山阻挡的情况下,通话距离还会相对短 些。当有系统基站支持时,对讲机的通话范围可达 十几千米,甚至几十千米,这无疑大大增加了系统成本。
收稿日期:2009~08-10
本文探讨了一种利用Internet传输数字对讲机话音和 数据业务的方法,所使用的数字对讲机基于dPMR协 议。利用dPMR协议[2]实现的对讲机,通过拨号建立 呼叫连接,号码为7位数字,除话音通信外,还可实现数 据通信,并可以实现组呼。使用该方法组网简单,可以 大幅度降低成本,有效地扩大对讲机的通信距离。
1系统工作原理
通过互联网传输数字对讲机话音和数据的工作原 理如图1所示。每个中心站及其所连接的通信模块和 该范围的对讲机可以看成一个区域,对应对讲机号码的 一个号段,通信模块与中心站使用串口连接,实现数据 的透明传输,将数据发送给中心站处理。假设左侧中心 站所在区域的某一对讲机拨号发起呼叫,其数据信息通 过无线信道发送到通信模块再发送到中心站,同时也发 送到同一区域的其他对讲机,中心站使用中心站软件对 数据信息解析,若发现被呼对讲机号码在同一区域内则
辛然等:数字对讲机互联网传输的中心站软件设计
软件技术
不处理,由被呼对讲机接收数据;若发现被呼对讲机号 码在其他区域,中心站软件则根据被呼号码查询其所在 区域中心站的IP地址,然后将数据通过Internet转发 到该IP地址所对应的中心站。中心站在整个对讲机系 统中所起的作用是把接收到源对讲机的数据转发给目 的对讲机,其作用与转发台相同,可看作是软转发。数 字对讲机话音和工作原理如图1所示。
x、m•机 x>m•机 x>m•机 x」謂•机
图1数字对讲机话音和数据工作原理示意图
2中心站软件设计概述
这里重点讲述中心站软件的设计。所用的开发环 境是VC++ 6.0,所用的编程语言是VC+ +和MFC。中 心站软件应实现以下主要功能。
(1)对讲机号码,IP地址的管理,包括对讲机号码 及其所在区域中心站IP地址的注册、删除、更新等;
(2)通过串口与通信模块通信,并对数据解析;
(3)通过Internet网将数据转发给远方中心站。 根据要完成的以上三个功能,中心站软件的设计也
应该主要包括三个模块:
(1)使用Access数据库管理对讲机号码和中心站 IP地址。该模块在实现上要在用户界面(UI)上留出接 口 ,使得用户能够通过用户界面方便地管理对讲机号码 和中心站IP地址,包括添加、删除、修改等;
(2)使用MSComm控件实现中心站与对讲机模块 的串口通信。该部分也应该在用户界面上留有接口。 其中,串口端口号,串口通信的波特率,以及校验位、数 据位、停止位等都是用户可设置的;
(3)使用UDP协议通过Internet传输数据。该部 分米用Windows在后台网络实现编程。下面分别对 三个模块的设计和实现做详细讨论。
3使用Access数据库管理对讲机号码和中心站IP 地址
讨论的中心站软件对讲机号码和中心站IP地址的 管理釆用Access数据库,具有使用简单,费用低廉,对 机器的配置要求低等特点。当然也可以根据实际情况 使用其他数据库,如MySQL等。所使用的数据库编程
74
接口是MFC ODBC类[3],所设计的数据库表格至少应 该包括两个字段,中心站IP地址字段和对讲机号码字 段。同一个IP地址可能要对应许多不同的对讲机号 码,还可以根据需要加入其他字段,如中心站所在地字 段,对讲机是否处于漫游状态等字段。需要设计的基本 管理功能如下:
添加当新增对讲机用户时,用于添加中心站IP 地址和对讲机号码。
删除用于删除不需要的对讲机号码,同时删除其 所在的整条记录。
修改对讲机号码当中心站所在区域某一对讲机 更换号码时用来修改号码,而中心站IP地址不变。
修中心站IP地址当更换另一台机器作为中心站 时,应保证以前的中心站IP地址全部修改为新的,而对 应的对讲机号码不变。
以上功能的实现需要使用CRecordSet类的成员 函数[4]。
4中心站与通信模块的通信
4.1串口通信协议
中心站与通信模块釆用串口进行通信。串行通信 接口(RS 232)是计算机标准配置的通信接口,利用串 口进行数据通信、数据釆集等是计算机的重要应用领域 之一。利用串口的数据传输可以根据具体的实际情况 设计自己的数据交换规则,即通信协议[5]。该系统的串 口通信协议参考了 RS 232串口通信协议的格式,靠起 始位和停止位实现字符的界定或同步,而协议当中的具 体字段内容则根据dPMR协议的话音和数据传输来设 计通信过程。所设计的中心站与通信模块间的通信协 议如表1所示。
表1中心站与通信模块通信协议
含义 字节数 说明
起始符 1 0x7E
源ID 7 1234567
目的ID 7 1234567 ,123 * * *
数据类型 1
数据帧说明 1
数据部分长度 1 长度=n
数据部分 n
校验和 1 从起始符到数据部分结束,按字节求和
结束符 1 0x7E
4.2协议说明
中心站与通信模块的通信协议如下:
起始符起始符为1个字节,取值为0x7E。
源ID源ID是发送数据对讲机的ID ,其取值为
7位数字串。
目的ID目的ID是接收数据对讲机的ID ,其取值 为7位数字串,且后4位可以为通配符“ * ”,表示该位 可以为任意数字。
数据类型数据类型表示通信数据的用途,根据通 信数据的不同作用,把数据分为以下几类,如表2所示。
表2数据类型分类
类型取值 作用 类型取值 作用
1 请求连接:用于语音通话 5 图片文件:无需请求连接
2 断开连接:用于语音通话 6 〜255 备用
3 语音 0 未使用
4 短信息:无需请求连接
数据帧 数据帧的说明占1字节,其说明如表3
所示。 表3数据帧说明
bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1
是否文件是否有后 备用 名帧,0否,续帧, 1是 0无,1有
注:该字节的bit 1只在传输文件、短信息时有意义,传输语音时无意 义;bit 2只在传输文件时有意义。在传输文件时,第一帧为文件名,从 第二帧开始为文件内容。
数据长度数据长度指数据部分的长度,1个字 节,取值为0〜255。
数据部分数据部分为实际传输的数据,其内容可 以为空。
校验和检验和的计算方法指从起始符开始到数 据部分的最后一个字节,逐字节求和,然后模256。
结束符结束符为1个字节,取值为0x7E。
4. 3使用MSComm控件实现串口通信
在实现计算机和串口通信时使用MFC的 MSComm控件[6]。如前面提到,串口的某些属性应该 是用户可设置的,如串口的端口选择,串口通信的波特 率,以及校验位、数据位、停止位的选择等。使用 MSComm控件实现串口通信的一个重要函数是On-Comm()函数[7],这个函数是用来处理串口消息事件 的,每当串口接收到数据,就会产生一个串口接收数据 缓冲区中有字符的消息事件,OnComm()函数就会执 行,在OnComm()函数加入相应的处理代码就能实现 自已想要的功能。具体的串口通信过程应按照上文提 到的串口通信协议实现。当中心站接收到串口的数据 时,应该解析出接收数据对讲机的ID ,即目的ID ,因为 对讲机号码是惟一的,所以据此目的ID查找中心站IP 地址,若IP地址就是本地中心站的IP ,说明被呼号码 就在本区域,则不予处理,否则根据中心站IP地址,通
过Internet将数据转发到远端中心站,远端中心站接收 到数据后再通过串口将其发送给该中心站所连接的通 信模块进行数据处理。
5使用UDP协议通过Internet传输数据
考虑到数据传输的实时性,通过Internet传输数据 时米用UDP协议,这里使用Windows系统的Winsock
API网络编程接口[8]。由于各中心站软件是对等关系, 所以并没有采用客户机/服务器模型。为了提高接收数 据的成功率和数据的传输效率,程序使用两个套接字, 一个套接字用来接收数据,另一个用来发送数据,发送 和接收数据使用不同的端口。使用UDP数据报的套 接字编程模型[9]如下:
(1)创建套接字,调用socket函数。socket函数原 型为:
SOCKET socket(int af ,int type ,int protocol)
(2)将本地地址与服务端口绑定,这个过程调用 bind函数完成。该函数原型为:
int bind ( SOCKET s , const struct sockaddr * name , int
namelen)
此处应该注意将主机字节转换为网络字节[1()]。
(3)当收到串口传来的数据,并查到相应的中心站 IP地址后,调用sendto函数发送数据。sendto函数原 型为:
int sendto (SOCKET s ,const char * buf ,int len ,int flags)
(4)接收端等待接收数据,当收到数据时调用rec-from函数接收。函数原型为:
int recvfrom(SOCKET s ,char * buf ,int len ,int flags ,struct sockaddr *from ,int *fromlen)
(5)调用closesocket函数关闭套接字。该函数原
型为:
int clo sesocket ( SOC KET s)
在进行UDP编程时,从串口传来的数据除了根据 串口通信协议从中解出有用的字段,如目的ID等,并不 进行处理,将数据全部通过Internet网进行传输,远端 中心站接收到数据后,通过串口与其所连接的通信模块 进行通信,而对数据的处理则由远端通信模块根据串口 通信协议完成。
6结语
这里提出一种通过Internet网传输数字对讲机话 音和数据的方案,可以扩大对讲机的通信距离。重点讲
图5时钟、输入、未知系统输出、
自适应滤波器的输出及误差信号
从图5的结果可以看出,自适应滤波器在经过开始 的一段振荡后,输出逐渐与未知系统输出一致,二者的 误差逐渐减小到接近零,即实现了无差跟踪,可见,该自 适应滤波器实现了对未知系统的跟踪和建模,且有相当 快的收敛速度。
5结语
本文用Matlab中的Simulink对LMS算法的实现 方法进行了仿真,并在FPGA中实现了 LMS算法,进 而实现了在FPGA中用自适应滤波器对未知系统的建
模,并对FPGA设计的系统建模结果用Matlab软件仿 真以增强Quartus的仿真功能,从而得到完整而且直观 的仿真结果,这种系统建模所釆用的仿真、实现和验证 方法同样适用于消除宽带信号中的窄带干扰、实现自适 应谱线增强以及自适应均衡等[1],具有一定的通用性。
参考文献
[1]陈怀琛.数字信号处理及其Matlab实现[M].北京:电子工 业出版社,1998.
[2]杨跃忠,阙沛文,李亮.自适应LMS滤波器在FPGA中的实 现[J ].微计算机信息,2006 ,22(11) :158 -160.
[3]潘松.EDA技术使用教程[M].北京:科学出版社,1999.
[4]孙耀奇,高火涛,熊超,等.基于Matlab和FPGA的FIR数
字滤波器设计及实现J].现代电子技术,2008,31 (11): 89-92.
[5]郭继昌,向晖,滕建辅,等.基于FPGA的FIR滤波器的实现 [J].电子技术应用,2000 ,26(5) :60-62.
[6]李明纬,黄世震.应用分布式算法在FPGA平台实现FIR低 通滤波器[J].中国集成电路,2007 ,20⑵:90-92.
[7]陈炳权.基于FPGA的FIR滤波器FFT算法与DA算法实 现[J].襄樊学院学报,2005 ,22(2) :54-56.
[8]宋立业,王景胜,彭继慎.自适应滤波器的算法研究及DSP 仿真实现[J ].现代电子技术,2008 ,31(5) :112-114.
[9]胡广书.数字信号处理[M].北京:清华大学出版社,2003.
[10]褚振勇,翁木云.FPGA设计及应用[M].西安:西安电子科 技大学出版社,2002.
自适应滤波器的输出及误差信号如图5所示,其中,输 入信号同样为迭加了随机信号的正弦波。
0 200 400 600 800 1 000 1 200 1 400 1 600 1 800 2 000
-1 0001-i-i-i-i-i-i-i-i-i-1
> 0 200 400 600 800 1 000 1 200 1 400 1 600 1 800 2 000
作者简介刘艳女,1976年出生,陕西宝鸡人,硕士研究生,助理工程师。研究方向为数字信号处理。
(上接第乃页)
述了这一方案中最重要的一部分中心站软件的设计和 实现。通过对笔者所实现的中心站软件进行测试表明, 能够顺利地通过Internet实现数字对讲机话音和数据 的传输,到达预期目的,并且所提出的方案具有组网简 单,建设成本低廉的特点。
参考文献
[1 ]百度百科.对讲机[EB/ OL ]. http :// baike. baidu. com/ view/ 34537. htm.
[2] ETSI TS 102 490 ,Peerto-Peer Digital Private Mobile Radio using FDMA with a Channel Spacing of 6,25 kHz with e. r. p of up to 500 mW[S]. 2005.
[3]刘刀桂,孟繁晶.Visual C+ +实践与提高-数据库篇[M].
北京:中国铁道出版社,2001.
4]韩存兵.Visual C+ +数据库编程实战[M].北京:科学出版 社,2003.
5]王承君.自定义串口数据通信协议的分析与设计[J].计算 机工程,2004 ,30(24) :192-194.
6]王华,岳丽全,岳志高.MSComm控件在VC++ 6.0串口通 信中的应用J ].长春工程学院学报,2009 ,10(1) :1-3.
7]李现勇.Visual C++串口通信与工程实践[M].北京:人民邮 电出版社,2005.
8]夏跃伟,孙爱民.Winsock控件实现基于UDP的网络通讯 [J].计算机科学,2008 ,35(4) :392-393.
9]曹衍龙,刘海英.Visual C++网络通信编程实用案例精选 [M]. 2版.北京:人民邮电出版社,2006.
10]芦东昕,张华强,王陈.基于UDP的可靠数据传递技术研 究[J].计算机工程,2003 ,29(22) :62-63.
作者简介辛然男,1985年出生,内蒙古赤峰人,硕士研究生。主要研究方向为移动通信。
谢晓明男,1969年出生,江西奉新人,副教授。主要研究方向为移动通信技术和宽带通信技术。
陕公网安备 61010302001064号