前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇通信软件范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
前言
在发动机电控系统开发过程中,通常采用单线程编程方法和结构化的软件开发方法。该方法无论从理论上还是从工程实践方面都比较成熟,也取得了一定的成果。而随着柴油机电控系统控制要求的提高,其软件系统变得越来越复杂,开发时间也变得较长[1]。传统方式在通用性上不能令人满意,且开发周期长、难度大。引入面向对象方法开发软件可很好地解决这一问题。CAN总线通信已发展成为发动机进行数据标定和通信的主流总线,并有基于CAN总线通信协议的CCP、KWP2000和SAEJ1939等应用层通信标准[2]。国内对如何有效简洁地表达CAN通信协议的内容进行了有针对性的研究,取得了一些成果[3]。本文中采用统一建模语言(unifiedmodelinglanguage,UML)分析和设计遵循CCP协议的CAN通信软件,并探索面向对象软件开发方法在发动机控制领域的应用。
1CCP协议和UML建模
1.1CAN总线和CCP协议CAN即控制器局域网,主要用于汽车控制系统,它拥有诸多优点,是发动机控制系统通信的主要总线之一。发动机的动力性、燃油经济性和排放的改善,都依赖于大量预先存储在控制单元软件中的控制和调节参数(如特征值、曲线、脉谱等,统称标定参数)[4]。CCP协议就是用于发动机电控系统参数标定、数据采集和实时监控的CAN通信应用层协议。CCP协议有两个数据流向,一个是命令接收对象(CRO),其报文格式如图1所示;另一个是数据传输对象(DTO)。DTO又分为两种报文:命令返回报文(CRM)和数据采集报文(DAQ),其帧格式如图2和图3所示。CRM用于反映指令执行是否成功。在这些帧中,CMD表示指令代码,CTR表示指令计数器,PID表示数据包号码,ERR表示错误代码[5]。根据CCP协议,数据标定可分为两种模式,一种是DAQ模式,可对一块数据进行采集、监控和标定;另一种是查询(POLLING)模式,只能对单独的数据进行采集、监控和标定。CCP协议有一套复杂的指令代码和较高的实时性要求。开发基于CCP协议的CAN通信软件须考虑到这两个方面。
1.2UML建模方法UML是一种绘制软件蓝图的标准建模语言[6],其目的是对面向对象的系统进行可视化、详细和完整地描述。UML可运用于软件开发过程各个阶段的建模活动,尤其是分析与设计。将UML运用于面向对象的软件系统建模时,为了体现系统的静态和动态模型,可运用UML的用例图、类图、协作图、顺序图和状态图5类图形[7]进行描述。这5类图是相互联系的,从不同角度来描述系统,实际上往往只需3~4种图即可精确地定义需求。(1)用例图用于表达系统对外部提供的服务,它描述了系统的功能模型。(2)类图用于表示系统内部的静态结构,它表示出所有对象的属性、特征和操作,同时体现了类之间的关系。(3)协作图和顺序图一般用于描述系统的动态行为和可视化对象间的通信。协作图关注对象交互的结构方面。顺序图表示以时间顺序安排的对象交互,能更加清晰地显示控制流和事件顺序。(4)状态图通过状态和迁移,描述实体的动态行为及组成实体元素的状态条件、响应和动作。在系统的静态和动态模型中,用例图模型是系统建模的核心[8]。运用UML软件的建模过程如下。(1)进行系统需求分析,在分析的基础上建立系统的用例图。(2)建立系统的静态模型,将系统功能需求分解到各个对象类,确定各个对象类的作用。(3)建立系统的动态模型,确定系统各个状态的转换过程和各个动作的时序,最终完成整个建模活动。
2发动机CAN通信软件的UML建模
2.1系统介绍通过燃烧分析仪了解气缸内燃烧情况,电子控制单元通过传感器获取发动机当前状态,并通过CAN总线上传到上位机,上位机则根据这些信息对控制参数进行标定。发动机标定系统组成见图4。
2.2系统需求分析在发动机标定过程中,每个信号量的变化率和对标定目标的影响是不同的。通常冷却液温度、进气温度和进气压力等数据在发动机运行过程中变化率较小,为降低系统开销,应降低数据采集和数据上传的频率。而对于转速和共轨系统轨压等高频信号,须有较高的采样频率,同时要采用适当的容错机制尽量避免总线仲裁机制的触发,提高传输速率。发动机标定参数可分为:敏感型参数和非敏感型参数。在进行发动机外特性曲线标定时,喷油提前角、喷油量及其修正系数、燃油温度及其修正系数和喷油延迟时间等,对发动机的动力性能影响较大,属于敏感型参数;而机油压力和燃油温度等对发动机的动力性能影响不大,属于非敏感型参数。总的来说,首先进行敏感型参数的标定,而后进行非敏感型参数的标定。在此过程中须根据个人需求,在数据采集功能中定义敏感型和非敏感型参数的范围。根据CCP协议,数据的标定有POLLING和DAQ两种模式。对于非敏感型参数建议使用DAQ模式,对于敏感型参数建议使用POLLING模式。这样既可提高标定效率,也可改善标定的质量。发动机的状态监控功能要实时反映其运行状态。在此功能中,上位机要对发动机的重要参数进行监控,确保其处在可控的运行状态下。
2.3系统用例建模总结系统需求和CAN的功能,上位机通过4个用例跟系统进行联系,即数据采集、数据分类、状态监控和数据标定,如图5所示。在数据采集功能下,系统根据设置,按照一定的条件对系统的数据进行采集并存放在上位机的存储空间内,以便离线诊断和数据分析。数据分类功能将数据进行分类,确定每种数据的优先级、属性和采取的数据标定模式。作为一种容错手段,该功能分离出数据库中的冗余数据,保证标定软件的稳定。此外,数据分类功能还将设置每种数据的正常变化和正常变化率范围的门限,超出门限的数据将被认为是错误的。若连续多次出现,也将以错误标志位的方式放入CAN通信数据库。在状态监测功能下,系统调用命令处理功能,解析上位机发送的指令代码进行数据的传输。传输模式可通过数据分类功能来设定。在数据标定功能下,系统首先解析上位机发送的命令指令选定标定模式,而后在数据库中寻找到需要标定的数据,最后按照上位机的要求更改数据,执行编程指令完成标定工作。系统自身有错误诊断功能(错误机制),其操作都在系统的监控之下,如果出现错误,系统将启动错误机制,以保证系统不会出现崩溃状态。同时,系统会以错误帧的形式向上位机告知当前错误状态。
2.4建立系统的静态模型图6为几种重要的类之间的关系。上位机类与数据标定类是使用关系(《use》)。数据标定类和系统是相关联的,1个系统只有1个数据标定类,1个数据标定类可对应多个系统。DAQ模式类和POLLING模式类是数据标定的子类,它们继承了数据标定类的所有特性,并有各自的特点。DAQ模式类和数据类通过对象描述表(ODT)相关联,1个DAQ模式类对应多个ODT,1个ODT对应多个数据。而POLLING模式类直接和数据联系,而且是多对多的。图7和图8分别为数据标定类和数据类的属性和操作。数据标定类是一种抽象类,没有直接的实例与之对应。作为父类,它允许子类继承该父类的所有属性和操作。该类属性中命令代码表征了符合CCP协议的标定命令,如CONNECT的代码是0x01;数据包号反映了数据发送模式,如PID为255表示从设备反馈给主设备的响应。不论是在DAQ模式还是POLLING模式下进行标定,都须包含与上位机建立逻辑连接、断开连接、接收CRO信息、发送DTO信息、命令解析和发送成功返回等操作。后文会介绍该类操作的一些应用。数据类是一种具体类,CAN数据库中待标定的数据都属于该类。数据的属性包括名称、首地址、数据类型、数量和该数据的正常范围,通过这些属性可确定该数据的所有特征。对数据类的操作包括数据滤波和合理性检查。在数据采集功能中,数据滤波可对采集到的不合理数据进行筛除。在状态监测功能中,若检查数据不在正常范围之内,则启动数据错误报警功能告知上位机。
2.5建立系统的动态模型在系统动态建模的过程中一般使用状态图和顺序图。状态图能清晰地反映系统状态在迁移时实体元素的状态条件、响应和动作。顺序图可依据时间清晰地展示控制流的方向,适合描述系统的动态行为。经综合考虑,软件的初始化过程使用状态图描述,实际的通信实现使用顺序图。图9为从系统初始化到软件安装完毕所经历的整个状态过程。上电后,系统进入启动状态。如果系统启动失败,系统就会退出;如果系统启动成功,系统进入CAN驱动安装状态。安装完成后,系统进入CCP驱动安装状态。完成后,系统进入下一个装置的安装。图10为CAN驱动安装状态。在CAN驱动安装过程中,系统从初始化参数中获得ID信息,进入寄存器配置状态,配置完成CAN的控制寄存器并清除寄存器的所有标志位。完成后,进行CAN接收和传送功能的配置。配置接收功能的3个操作为:获取发送者的ID;将接收到的内容移至缓冲区和清除寄存器标志位,准备下一次接收。配置发送功能的3个操作为:配置发送寄存器的ID;将缓冲区的内容放入发送寄存器和发送成功校验。完成之后,CAN驱动安装完毕,进入下一个步骤。图11为CCP驱动安装状态。在CCP驱动安装过程中,系统首先建立命令处理环境。其主要功能是对接收到的信息进行解析。如果上位机要求数据采集采用DAQ模式,则系统开始建立DAQ环境。在这个过程中,要先安装DAQ相关组件,然后建立DAQ处理功能,最后完成命令代码和DAQ处理的链接。完成后,系统进入CCP初始化状态。该状态下,系统将建立版本检查函数、打开数据通道和所有CCP软件参数清零等功能。之后,系统连接底层驱动和CCP应用软件的接口,最终完成CCP驱动安装。如果上位机要求采用POLL-ING模式,则系统直接进入CCP初始化状态。图12为在CCP协议的DAQ模式下的通信过程,参与通信的主要有:上位机、命令处理模块、数据采集模块、DAQ模块和数据等。CCP协议在BAQ模式下的通信过程如下。(1)上位机与系统进行连接。上位机向系统的命令处理模块发送建立连接的请求,而后系统发送CRM(握手报文)。连接成功后,PC和系统以一问一答的方式进行获得版本号和交换ID的动作。(2)PC开始与系统正式通信。上位机发送控制信息给系统的命令处理模块。命令处理模块在接收完毕后,对控制信息进行解析。(3)命令处理模块会将解析后的上位机请求发送给数据标定模式模块,开始准备进行数据传输。(4)数据标定模式模块进行数据传输初始化。在这之前,数据采集用例会选择采用POLLING模式还是DAQ模式。在DAQ模式下,它会链接若干个DAQ列表,每个DAQ列表包含若干个ODT,ODT的每个字节都指向DAQ上需要的数据所对应地址。(5)链接完所有的DAQ列表后,DAQ模块会去数据类中获取相关的数据,将所得到的数据填入DAQ列表。DAQ模块会将该DAQ列表传递给数据标定模式模块,并准备发送。(6)当条件具备时,数据标定模式模块会发送上位机请求的数据。发送完毕后,数据标定模式模块会进行校验,以确保发送成功。然后才能再次接收上位机发送的命令请求,否则不作响应。
PowerPC和DSP通过双口存储器进行数据通信。该中还介绍了总线通信系统中PowerPC和DSP的故障管理功能。本软件充分利用系统资源,实现了通信总线的控制与管理,满足航电系统总线通信与管理的要求。
PowerPC是IBM和Motorola公司共同开发的高性能、低功耗、开放架构的处理器,采用简单的指令集(RISC),同时集成了PCI -Express、千兆网络、RapidIO及CAN等多种网络通信控制器,支持DMA、I2C、UART等数据交换组件,具有处理能力强、网络通信接口多等优点,被广泛应用于汽车电子、航空航天、工业控制等要求高性能和高可靠性的领域[1-3]。鉴于此,文中设计了一种基于PowerPC750配有VME总线的CPU模块,满足现代武器装备的需求。
TMS320F240系列DSP是美国TI公司于1997年推出的,专为数字电机控制和其他控制应用系统而设计的16位定点数字信号处理器。它将数字信号处理的高速运算功能与面向电机的强大控制能力结合在一起,从而成为传统的多微处理器单元和多片设计系统的理想替代品。
F240片内外设包括双10位A/D转换器,带有锁相环PLL时钟模块,带中断的看门狗定时器模块,串行通信接口SCI及串行外设接口SPI,另外,还集成了一个事件管理模块EVM。因此,F240不仅具有高速数据处理能力,还具有控制和事件管理能力,可完成人机界面,与上位机进行串行通信[4-5]。
1 总线通信系统架构
总线通信系统由一个CPU(PowerPC)模块、一个DSP模块以及电源模块组成。CPU模块采用PowerPC750处理器,同时集成了网卡和大容量FLASH,具有高速的数据采集及处理、仿真任务调度以及数据存储等功能。DSP模块采用TMS320F240系列芯片,通过局部总线,与外界设备通过RS422、ARINC429等数据交换总线相连。
用户通过PowerPC发送和接收任务数据,PowerPC再通过双口存储器与DSP相连接,进行数据交换,DSP则负责RS422串行通信总线和ARINC429总线通信的控制管理、数据接收和发送等,以上整个系统完成了总线的通信功能。总线通信系统架构如图1所示。
2 总线通信系统软件设计
2.1总线通信系统软件概述
总线通信系统软件由驱动软件和控制软件组成,是实现RS422串行通信和ARINC429总线通信的专用软件。其中,驱动软件实现DSP与主机应用软件间的接口控制与数据传递,它可提供各类消息数据的读、写支持,对DSP内程序的调度。控制软件负责RS422串行通信和ARINC429总线通信的控制、数据接收和发送等。
2.2驱动软件
驱动软件运行在PowerPC模块上,是应用软件与控制软件的接口软件,为实现应用软件的管理功能,驱动软件控制DSP模块的初始化、启动、停止、自测试,监控DSP模块状态,控制DSP模块和主机的数据交换。驱动软件操作状态及转换关系如图2所示。
当DSP在处在停止状态,调用DSP_Bit进行DSP自检测,调用DSP_Initialize进行DSP初始化。初始化完成后可调用DSP_Go将DSP转入运行状态。在运行状态下可调用操作信息驱动程序、RS422驱动程序和ARINC429总线驱动程序,进行消息传输,也可调用DSP_Stop将DSP转入停止状态。
驱动软件按其功能分为:模块控制程序、RS422控制程序、ARINC429总线控制程序、操作信息控制程序。
模块控制程序的主要功能是启动DSP模块上的初始化程序,使DSP初始化,然后启动DSP上的启动程序使DSP开始工作,还可以停止DSP运行以及启动DSP上的BIT程序进行自检测。
RS422控制程序的主要功能包括对RS422各通道进行初始化(各通道的接收/发送数据缓冲区划分,每个数据块的新数据、错误、中断等标志字的设置,波特率、奇偶校验位、数据位和停止位的设置),接着从双口存储器读DSP端RS422接收到的消息,并将要通过RS422发送的消息数据写入双口存储器,最终由DSP上的RS422进行数据发送。通过检查RS422的接收缓冲区,可以检查是否有新数据。
ARINC429总线控制程序主要功能包括对ARINC429总线通道进行初始化,从双口存储器读ARINC429总线接收到的消息,并将要通过ARINC429总线发送的消息写入双口存储器。
操作信息控制程序主要包括读DSP模块的自检测结果,读取DSP的HeartBeat计数器的当前值,读取DSP的状态,建立主机和DSP之间的通讯,复位DSP模块。
2.3控制软件
控制软件运行在DSP模块上,它负责RS422串行通信总线和ARINC429总线通信的控制、数据发送和接收等。控制软件的主程序中包括对DSP的初始化、启动、自检测、停止及复位等功能。控制软件响应来自运行在PowerPC上驱动软件的下发的命令,进行相应功能操作。在DSP模块初始化中,定时器中断被使能。定时器中断服务程序会以固定的周期执行,其中包括RS422通信握手,RS422在线状态判断,RS422发送和接收数据,ARINC429总线发送和接收数据等程序。
RS422通信握手程序首先从PowerPC写入双口存储器的相应地址中读取通信状态字,然后判断各通道状态,若三次接收到的通信状态字均为预值,则通信建立成功。
RS422在线状态判断程序负责读取各通道的在线状态,如果该通道已建立好通信,则清空接收寄存器,发送该通道在线状态命令;接收在线状态程序接收的现行状态数据长度若等于该通道的数据长度,则判断该通道的设备在线。
RS422串行通信总线和ARINC429总线均采用查询方式进行数据的发送和接收。
2.4故障管理
故障管理分为两部分:PowerPC故障管理和DSP故障管理,每部分包含了故障检测、故障过滤和故障处理。如图3所示。
DSP的故障检测的手段主要有BIT和软件注入,PowerPC模块主要有BIT,VxWorks5.5捕获软件故障、DSP注入、应用软件注入。BIT包含PUBIT、PBIT和IBIT,PUBIT上电后对系统硬件资源的检测,PBIT系统运行过程中对硬件资源周期性的检测,IBIT由用户启动对系统硬件资源的检测,BIT能够完成整个周期硬件资源的检测。
应用软件在运行过程中,发现故障,将该故障注入故障队列中,实现应用软件故障的管理。DSP发生致命性的,自己无法处理或者需要PowerPC处理的故障时,将此类故障注入PowerPC的故障队列中,以提高系统处理故障的能力。系统运行过程中,VxWorks5.5将捕获的异常信息注入故障队列中,以解决运行过程中产生的异常。
系统中的故障按照存在程度分为暂时性故障和永久性故障。暂时性故障带有间断性,是在一定条件下产生的故障,通过系统的调整或者运行环境的改变消失的故障。永久性故障具有永恒性,一旦发生故障,则系统无法自身的恢复,一直处于故障状态。
按照故障的严重程度将故障分为破坏性故障和非破坏性故障,破坏性故障一旦发生,将对系统造成致命的破坏,导致系统无法正常工作;非破坏性故障一般是局部的,影响系统的部分功能,但不会对系统造成致命性破坏。故障管理需要将同时具有非破坏性和暂时性的故障采用门限值的方式过滤掉,将过滤后的故障和其他类型的故障提交给故障处理机制处理。
门限值的过滤方式:在故障检测时,发现设备故障后,设备的故障数N=N+1,当N超过门限值W时,则向故障处理机制提交故障;再次检测时,发现该设备正常则N=N-1,当N<0时,则将N设为0。
3 小结
在总线通信软件中采用PowerPC + DSP的结构,既能发挥PowerPC高速信号采集和处理能力,又能发挥DSP高速数字信号处理能力。PowerPC上运行的驱动软件是应用软件与控制软件的接口软件,实现了应用软件的管理功能;DSP上运行的控制软件,它负责RS422串行通信总线和ARINC429总线通信的控制、数据发送和接收等。该软件充分利用系统资源,实现了通信总线的控制与管理,满足了航电总线通信与管理的要求。
关键词:即时通信软件; P2P模式; Jxta; Java
中图分类号:TN87+; TP311 文献标识码:A 文章编号:1004-373X(2010)14-0136-04
Java Realization of P2P Instant Messaging Software Based on Jxta
QING Lin
(Hunan Normal University, Changsha 410006,China)
Abstract: The purpose of this software is to figure out the problem that the common instant message software mostly depended on the ability of the centre pole. The software is based on the frame of JXTA of the JAVA, and uses the development method of linking GUI with IMbean, achieves the posting of messages between every Peer.
Keywords: instant messaging software; P2P; Jxta; Java
P2P技术是目前非常流行的一种分布式计算技术,P2P网络的基础单位是对等点,每个对等点之间能够互访。SUN公司针对P2P技术的特点提出了自己关于P2P网络的Jxta研究项目,本文设计的即时通信软件便是基于该技术来开发的。
1 软件实现
1.1 系统架构
Jxta P2P applications即本文所设计的软件是建立在JavaBean上的,JavaBean是一种类,它针对特定的用途封装了属性和方法[1],实现特定的用途,而下面的JAL是Java的抽象层,它直接隔开了Jxta的平台,为上层的程序管理Jxta的对等体,广告,管道以及其他各种底层的实现和细节[2]。
1.2 总体设计步骤和方法
总体设计步骤和方法[3]如下:
(1) 设计JAL;
(2) 设计本软件的中的JavaBean,即IMbean;
(3) 创建应用程序VSJChat的GUI图形界面;
(4) 链接IMbean和应用程序GUI,以实现功能[4]。
1.3 设计JAL的Peer接口
JAL实际上也是API即引用程序接口,实现以下功能:
(1) 发现Peer同时能被发现;
(2) 搜索其他Peer和Peer群;
(3) 创建和管理Peer群;
(4) 和其他Peer的交流;
(5) 获得其他Peer或者Peer群的信息[5]。
Peer接口设计程序如下所示:
public interface Peer{ //开始
public void boot(String name)
throws Exception;
public void boot(String name,
String group)throws Exceptio
//申明可用性
public void publish()
throws Exception; //Peer信息
public String getName();
public String[]getPeers()
throws Exception; //发送和接收信息
public boolean sendMessage(
String name,Message msg)
throws Exception;
public boolean broadcast
(Messagemsg)throws Exception
public Message receiveMessage()
throws Exception; //信息处理
public Message newMessage();
public void pushObject(Message m
String tag,Object obj)
throws Exception;
public Object popObject(
Message msg,String tag)
throws Exception; //群处理
public void createGroup(
String name)throws Exceptio
public void joinGroup(String name
throws Exception;
public String[]getGroups()
throws Exception;
public void createAndOrJoinGroup
String name)throws Exceptio
public void leaveGroup(String nam
throws Exception;
//信息效用
public boolean
searchGroupWithName(String name)
throws Exceptio
public boolean
searchPeerWithName(String n
throws Exception;
public void displayPeers()
throws Exception;
public void displayGroups()
throws Exception;
public void displayServices()
throws Exception;
public String getPeerStatistics();
}
1.4 IMbean的设计
IMBean是在JAL基础上开发的一个应用JavaBean。它的作用是:处理所有的Jxta细节问题(包括初始化Peer,异常处理)[6];处理输入信息,传输到VSJChat;处理输出信息,通过Jxta网络发送。
1.5 应用程序VSJChat的GUI图形界面的创建
利用图形编辑器创建GUI图形界面。使用的开发工具是NetBeans,利用其中的图形编辑器创建。层结构和每个GUI组件的类型,各个按钮的名字将显示在图像界面中。
GUI产生代码程序如下所示:
Public class VSJChat extends Javax.swing.JFrame{
/**产生新模板VSJchat*/
public VSJChat(){
...
}
private void initComponents(){
chatBean1=new
org.Jxta.ezel.beans.imbean.IMBean();
jPanel1=new Javax.swing.JPanel();
jTextField1=new Javax.swing.JTextField();
jButton1=new Javax.swing.JButton();
jPanel2=new Javax.swing.JPanel();
jTextArea1=new Javax.swing.JTextArea();
setTitle("VSJ P2P World Wide Messaging-100%Java Edition");
addWindowListener(new
Java.awt.event.WindowAdapter(){
public void windowClosing
(Java.awt.event.WindowEvent evt){
exitForm(evt);
}
});
jPanel1.setLayout(new Java.awt.BorderLayo
jTextField1.setColumns(40);
jTextField1.setFont(new Java.awt.Font(
"Dialog",0,10));
jPanel1.add(jTextField1,
Java.awt.BorderLayout.CENTER);
jButton1.setText("Send Message");
jPanel1.add(jButton1,Java.awt.BorderLayou
getContentPane().add(jPanel1,
Java.awt.BorderLayout.SOUTH);
jPanel2.setLayout(new Java.awt.BorderLayo
jTextArea1.setEditable(false);
jTextArea1.setFont(new
Java.awt.Font("Dialog",2,12));
jTextArea1.setFocusable(false);
jTextArea1.setMinimumSize(new
Java.awt.Dimension(500,400));
1.6 建立IMBean和应用程序VSJChat的链接
1.6.1 导入IMBean
在IDE开发工具中加入代码来导入IMBean,修改VSJChat产生构造器来完成的。在源程序中创建了┮桓霆特别的构造器,它用2个字符串作为参数,并为┮桓霆私有方法localInit()构造出初始化代码。用一个发送者或对等机名字和一个群名调用initBean()方法将激活在特定的群中的关联对等机名的Jxta平台。使用IMBean可加入到存在的被提供用户名的IM会话中。在localInit()方法中,可以设置其他可获得的IMBean参数,如alias和topic properties[7]。
程序:导入bean
public VSJChat(){
mySenderName="noname";
myGroupName="netpeergroup";
localInit();
}
public VSJChat(String peername,String groupname){
mySenderName=peername;
myGroupName=groupname;localInit();
}
private void localInit(){
initComponents();
try{
chatBean1.initBean(mySenderName,myGroupName);
}catch(Exception ex){
ex.printStackTrace();
}
chatBean1.setSenderName(mySenderName);
chatBean1.setAlias("NOALIAS");
chatBean1.setTopic("ALL");
jTextField1.requestFocus();
1.6.2 实现IMBean发信息的功能
在GUI图形界面中把jBotton1的按纽命名为“Send Message”。运用NetBeans3.5的GUI编辑器,选中jBotton1组件,选择事件标签的属性列,点击为事件名“actionPerformed”的属性名,再输入事件处理器的名字“SendClick”。这将在VSJChat中自动创建一个事件处理器方法。
产生事件监听者程序[8] 如下所示:
jButton1.addActionListener(new Java.awt.event.ActionListener(){
public void actionPerformed(Java.awt.event.ActionEvent evt)
SendClicked(evt);
}
);
SendClicked()方法也同时产生了。填充这个方法,通过IMbean来取得用户输入和发送的消息。
获得用户输入和发送的信息程序如下所示:
private static final String CHAT_SEP=">";
private static final String CR="\\n";
private static final String EMPTY_TEXT="";
private StringBuffer curMsgs=new
StringBuffer(EMPTY_TEXT);
private void SendClicked(
Java.awt.event.ActionEvent evt){
try{String latestMsg=jTextField1.getText();
chatBean1.sendMessage(latestMsg);
curMsgs.append(mySenderName+
CHAT_SEP+latestMsg+CR);
jTextArea1.setText(curMsgs.toString());
jTextField1.setText(EMPTY_TEXT);
jTextField1.requestFocus();
}catch(Exception ex){
ex.printStackTrace();
} }
在使用者打完字时按下回车键来发送信息。这可以在处理jTextFieldv1组件的actionPerformed()事件中完成。再一次使用GUI编辑器,这次选择jTextField1组件,调用TextFieldComplete()处理方法[9]。
程序:发送信息快捷方式
jTextField1.addActionListener(new
ava.awt.event.ActionListener(){
public void actionPerformed(
Java.awt.event.ActionEvent
evt){
TextFieldComplete(evt);
} });
然后可以填充TextFieldComplete()方法来简单调用SendClick(),因为回车等同于点击“Send Message”按纽。
发送信息程序如下所示:
private void TextFieldComplete(
Java.awt.event.ActionEvent evt){
SendClicked(evt);
})
1.6.3 实现IMBean接收信息功能
IMBean有2种接收信息的模式,事件处理和轮流检测。因应用程序不同,2种方法可以任选其一。本文用的是事件处理方式。可以在组件层级显示中通过点击IMBean组件,在属性列表中选择“event”标签,运用IDE来加入1个对IMBean的MessageReceive事件的监听程序。这个事件处理器可称为“messageHandler”。
IDE也为messageHandler()方法产生一个架构代码。这里,给找到接收的信息和刷新显示在jTextArea中的信息填充逻辑语言[10]。
刷新显示在jTextArea中的信息程序如下所示:
private void messageHandler(MessageReceivedEvent evt){
curMsgs.append(evt.getSender()+
CHAT_SEP+evt.getMessageText()
+CR);
jTextArea1.setText(
curMsgs.toString());
}
完成以上工作以后,VSJChat应用程序的编写就完成了。
1.7 实验结果
当第一次运行VSJChat,Jxta GUI配置器会弹出,并要求设置配置参数,在初始化配置后,这些配置将存储在一个.Jxta目录中,以后重启时将只为使用安全用户名和密码者提醒。按局域网上配置测试参数。首先,创建集合点,这个可以用网上的目录code/test/rdvnode中的runit.bat文件开始。仔细研究runit.bat文件,看到它实际上开始的是uk.co.vsj.Jxta2.wwm.RunRDV类,即:这个类的代码创建一个Jxta群,把它作为一个群的集合点。现在开始第一个对等点,即peer1,在code/test/peer1目录下运行runit,bat文件。继续配置peer2,和peer1同样设置。这个对等点可以通过code/test/peer2目录下的runit.bat文件开始。运行这2个Peer,运用以上的命令,就可以用peer1和peer2运行VSJChat了。虽然只运行了2个peer,但按照上面的配置方法,只改变Peer的IP配置,在同一个VSJChat上运行多少个Peer都是可以的。
2 结 语
本文着重介绍了如何实现了基于P2P网络技术的即时通信软件的对等体双方互相收发信息。当然P2P网络时代的应用还很多,今后本软件将向着包含网络存储,分布式下载等更多的应用功能的方向发展。
参考文献
[1]吴先涛,吴承治.P2P技术及其演进[J].现代传输,2008 (3):64-65.
[2]杨天路,刘宇宏,张文,等.P2P网络技术原理与系统开发案例[M].北京:人民邮电出版社,2007.
[3]Scott Oaks,Bernard Traversat. Jxta技术手册[M].北京:清华大学出版社,2004.
[4]宋雪昌.基于Jxta对等网络的即时通信系统的研究与实现[D].苏州:苏州大学,2005.
[5]周功业,黎书生.新一代网络计算模型:P2P及其Jxta体系结构的设计与实现[J].计算机应用研究,2002(9):139-140.
[6]邓杰文.P2P系统模型综述[J].中国科技信息,2008(6): 116-117.
[7]吴国庆.对等网络技术研究[J].计算机技术与发展,2008(7):100-101.
[8]许斌.Jxta-Java P2P网络编程技术[M].北京:清华大学出版社,2003.
一、传统数字通信原理实验现状
(一)数字通信原理硬件实验平台。1.采样基础及采样编码类实验。包括:脉冲幅度调制、脉冲编码调制、自适应差分脉冲编码调制和连续可变斜率增量调制实验。2.调制解调类实验。包括:移频键控、二进制移相键控、差分二进制相移键控、最小移频键控、高斯最小频移键控、正交相移键控、偏移四相相移键控和正交幅度调制实验。3.编码解码类实验。包括:汉明码实验、加扰码实验、传号交替反转码/三阶高密度双极性码码型变换和传号反转码码型变换实验。4.接口类实验。包括:用户环路接口实验、双音多频检测实验、RS442接口实验和RS232接口实验。5.系统性实验。包括:IS95扩频系统Walsh码特性测量、IS95(CDMA/DS)系统信号传输实验和移动衰落信道通信系统综合测试。
(二)数字通信原理硬件实验平台面临的问题。前面所提到的实验平台集多种功能于一体,包括对无线通信常用的技术教学,帮助学生时间,里面涵盖了数字通信的原理已经当前最现代的技术技能,此实验平台系统结合了数字通信硬件平台的原理、技术、实践多方面,可以说实用又简便,虽然现在硬件平台凸显很多优点,但是还面临很多问题需要改进实验平台。1.在实验时,试验箱中的专有模拟芯片,虽然根据数字通信原理设计,但是由于设计效果欠佳,模拟锁相环实验时方法比较老,所以模拟芯片的电路时常有受损情况。2.在数字调制实验数字实验箱链接的处理方式通常是很模糊的,特别是解调和同步算法的结果不能被测试和评价这个问题,使学生按照规定的顺序操作得到的仅仅是实验结论,并没办法进一步的研究的内部机理。3.这个硬件平台受限于模拟芯片的容量和处理分析能力,内容和实践具体步骤受限,发展空间也有一定的局限性,对学生的创新能力的发挥有很大影响。4.由于这个数字硬件实验平台的相关部件比较容易受损,这也导致实验成本升高。针对以上陈述,本文利用Matlab的GUI工具,将用于用于数字通信原理实验软件平台和数字通信原理有机结合,总之,硬件平台的发展,对于提高学生的自主设计能力,理论与实践相结合,以及提高数字通信理论课程的教学效果有很大帮助。
二、数字通信实验软件平台设计
(一)数字通信实验软件平台系统。此次根据数字通信原理设计的软件平台既有发送装置,又有接收装置,分为这两个部分。根据图1我们可以看出,此软件平台有几个构成部分。被虚线框住的软件部分代表的是软件平台增加的扩展部分。整个平台系统分为以下一个部分:采样、量化、编码、重构。编码和调制就是我们常用的信道编码和调制,这样不仅可以在软件平台上实现功能,还能在硬件平台上实现调制实验和信道编码。在这些模块都完备以后,我们还要完善其他子模块,以便于各项数据可以在一个模块流转到下一模块,图中接收端没有展开探讨是因为接收端是发送端的逆过程,所以不予考虑。系统在具体应用调试时,还要不断修改和完善。
图1 数字通信原理软件实验平台系统框图
(二)数字通信实验软件平台。软件实验平台采用了Matlab软件中的GUI工具,数字通信原理软件实验平台系统界面见图2。
图2 数字通信原理软件实验平台系统界面
由图2可知,Matlab软件中的GUI工具也有图1中的接受和发送部分,除此之外,还有数字通信软件平台的参数和显示,这些方面最终以时频域的方式表现出来,显示运行结果。
在Matlab软件中还有相对应的存储模块来存放通信信号以及临时通信信号,在数字通信实验软件平台中发送信号要经历采集样本、输入序码,以及整个数字信道的编码和数字调制的全过程,在采集样本时要实现将信号化为数字数列这样的形式,只有转变成为数字序列,才能将其存入文件;输入序码指的就是文件中抽取序码读取;信道编码就是仿真常见的编码方式,比如CRC码和卷积码,以此进行差错控制;数字调制采用的不同进制的调制方法,调制后会将信号绘制成波形或功率谱,主要运用的进制方法有ASK、FSK、PSK或者MSK等等;扩频指的是对载波的调制方式,主要是运用高速伪随机的序列方式,因为他的速率远远大于原来我们说的元新号码的速率,方便信号的充分扩展。他的优点就是可以预防被窃听,具备一定的防干扰能力。由于每个用户拥有不同的扩谱码,所以可以将相互正交的扩谱码做为根据,这样就将移动通信系统和数字通信原理、DS-CDMA原理很好的糅合在一起,运用相关技术,将先进技术融入到现在的软件平台中,每个用户可以用同一个频带。接收装置是对发送信号的仿真,引入了高斯白噪声的过程,也是以波形和功率谱的形式绘制出来。
三、数字通信实验软件平台实现
(一)数字通信实验软件平台验证。在进行数字通信实验软件平台验证的时候,要根据图一的整体构造对模块编程,软件实验平台的功能更加完善,比硬件平台的功能更加完善,也能实现大部分实验功能,在同一时间,有更多的扩展,如AMI/ CMI / HDB3编码部分和汉明码的编码和调制部分,BFSK,D /BASK调制技术也是一种可以实现硬件实验平台的技术。因此,操作和测试对于波形的硬件平台和软件平台是可以比较的。图3是FSK图形示波器测试和实际使用的GUI工具硬件平台的比较。
图3 软件仿真与实测对比(以FSK调制为例)
编码、调制、扩频3个主要环节都进行了有效扩展:其中编码环节增加了奇偶校验码、循环码、BCH码、RS码、卷积码、Turbo码;调制环节增加了16QaM和256QaM;扩频环节增加了扩频码设计。
(二)数字通信实验软件平台各模块。为了让学生更加清晰掌握整个操作,在数字通信实验软件平台的GUI运行后,要先在软件实验平台上点击“采样”,这样就可以提取信号,并将信号以文本格式保存在文件中,假如信号是数字就不需要这样的步骤。然后点击“输入码序列”,打开刚才的文本文件,可以看到数据就在相对应的位置,我们可以根据图4所显示的,对信道编码进行编码,选择最恰当的编码方式,图4就是从文件中读取输入码序列,然后表现编码结果,根据相对应的参数,点击“调制”,然后信号同样是以波形和功率谱的形式表现出来,图5就是演示此过程,调制方式为FSK。
图4 数字信源及其CRC信道编码波形 图5 BFSK调制信号波形及功率谱
然后对信号进行扩频,点击“扩频”按钮。输入一个信噪比值,点击“噪声”按钮,加入噪声。扩频以及加入噪声后的波形和频谱如图6所示(图中所加噪声,其信噪比为5dB)。再点击“解扩”按钮可从扩频信号中恢复原信号,然后点击“解调”按钮,对信号进行解调,然后译码得到有用信号,最后将其与输入信号进行比较。
另外需要说明的是噪声虽然在信道中存在,但实际上是在接收端引入的,所以将引入噪声这一步归在接收模块。在做卷积码仿真时,由于所用方法译码时不能将原数据全部恢复,所以需要在编码时补零,这样译码得到的才是完整的初始码序列。这次设计的GUI只包含了通信的一些基本步骤,实际情况要复杂得多。比如实际信道中还包括衰减、延迟、多径、多普勒频移等很多问题,此外,在接收端还要考虑滤波器设计、均衡、同步等问题。
参考文献
[1]皮宇锋,郭杰荣.信息通信教学软件的开发设计[J].中国电力教育,2010,15:84-86.
[2]自动化技术、计算机技术[J].中国无线电电子学文摘,2007,03:183-248.
关键词 软件通信体系结构 无线电系统 软件定义
中图分类号:TP319 文献标识码:A
在现实生活中,软件定义无线电技术在军事方面的应用不断地发展研究,各国为了早日实现军事化的软件定义无线电技术,加大了对软件定义无线电的研究。目前,软件定义无线电技术已成为未来军事通信发展的趋势。①
1 软件通信体系结构
1.1 硬件体系结构
软件通信体系中硬件体系结构采用了面向对象技术,通过面向面向对象技术的概念对系统内部的典型模块进行划分,要求实际系统一旦实现,必须将其详细的、完整的接口进行公开。软件开发人员可以通过公开的接口,对硬件的性能和容量以加载特定的波形,第三方则通过公开的接口,提供系统内部模块,方便了新技术的插入。
硬件体系结构除了要对所有无线设备系统内部硬件模块的组成进行定义,还要给出所有无线设备内部硬件的物理属性。当无线设备系统内部硬件物理属性符合条件时,这些硬件设备就可以应用到实际平台硬件模块,具有统一性,针对所有的通信设备来说都是通用的,实现了硬件模块设计的实用性与通用性,节约了系统成本。未来无线通信系统发展主要以软件为主,而现代无线通信系统是由软件与硬件相结合来实现无线通信的功能。因此,为满足无线通信系统未来发展的需求,硬件模块要具有一定的可扩展性,这可以确保在原有硬件模块基础上,通过增加新的功能或者在已有的硬件模块中增加新的硬件模块来实现新的技术,既保证了硬件模块统一性,又增加了硬件模块内在的灵活性,满足软件无线电发展的需求。②
1.2 软件体系结构
在软件通信体系中软件与硬件所承担的功能不同,根据软件在通信体系中所承担的功能,可将软件体系结构由上到下分为应用程序、核心框架、公共对象请求体系中间件和嵌入式实时操作系统四部分。其中核心框架、公共对象请求体系中间件以及嵌入式实时操作系统三部分共同构成了软件体系结构中的核心内容,也是软件体系结构中一个通用的软件平台。软件平台的构成给开发人员和波形的设计带来了新的要求与限制,有利于实现波形从一个无线通信系统到另一个无线通信系统的移植。
1.3 安全体系结构
软件通信体系中安全体系结构,为了保证在不同的无线通信系统能够相互通连与相互操作,是为了确保用户的信息在传输、发送、处理以及存储过程中的完整性与机密性。在安合体系结构中,整个系统的安全功能是由一个通信保密模块、红边处理器以及黑边处理器三部分共同来完成的,而非一个边界分明的安全模块来单独完成。③
2 软件定义无线电系统
软件定义无线电系统又称为软件无线电系统,是一种可以通过软件进行编辑,实现全部功能的无线电,具有较高的灵活性与通用性。用户通过软件无线电系统,对动态修改配置对系统中的网络装备与软件更新设备进行修改,从而获得更好的服务与性能。软件定义无线电系统是通过一个简单的终端设备,运用软件重配置功能来支持各种不同种类的无线系统与服务的新技术。固定或者移动的软件定义无线电设备,都能让用户通过改变软件改变接收与发送的特征。移动无线电系统与改变运行模式的软件定义无线电设备相互通联,并且能够同时在多种公共安全频带中工作。
软件定义无线电系统不仅具备基本的无线通信功能,还具有以下三个方面的功能:一是通过软件定义无线电系统能够升级系统所装载的软件,以此来达到对系统的升级与功能的更新。④二是软件定义无线电系统可以支持不同电台系统的相互通联,达到不同独立运行的电台系统能够互传信息。三是软件定义无线电系统主要以软件为主,解放了硬件通信业务传输方式,通过软件定义无线电系统所装载不同软件实现动态配置系统功能。
3 软件定义无线电的发展
软件定义无线电技术采用现代化高端软件进行操纵与控制,具有高自动化程度与较强的扩展能力,打破传统依赖于硬件发展的通信体系。软件定义无线电体系的发展是通信领域的第三次革命,经历了从固定通信到移运通信,模拟通信到数字通信的改革。
软件定义无线电技术作为现代通信行业新技术,在未来的无线电通信应用中有良好的发展前景,可能成为未来无线电通信技术的支柱。软件定义无线电技术可以多频段多模式的手机、卫星通信、智能天线以及蜂窝移动通信系统、无线局域网等各个相关的应用领域。
4 总结
随着科学技术的不断发展,软件定义无线电系统在各个领域中得到了广泛的应用,无线通信体系朝着通信数字化、智能一体化的发展。由于我国目前无线通信体系硬件水平的有限,导致软件无线电通信还达不到理想的要求。针对软件通信体系与软件定义无线电系统的研究,可以预见,软件定义无线电技术可能成为未来通信行业发展的核心内容。⑤
注释
① 范建华,王晓波,李云洲.基于软件通信体系结构的软件定义无线电系统[J].通信技术,2011,51(8):1031-1037.
② 刘献,张栋岭,陈涵生.软件定义无线电及软件通信体系结构的规范[J].计算机工程,2009,30(1):95-98.
③ 邱永红,朱勤.基于软件通信系统的无线通信系统研究[J].系统工程与电子技术,2009,26(5)621-625.