APP下载

Android系统下卫星天线M&C的实现

2016-02-24马曙晖

计算机技术与发展 2016年10期
关键词:手动应用程序代码

马曙晖

(南京邮电大学 通信与信息工程学院,江苏 南京 210003)

Android系统下卫星天线M&C的实现

马曙晖

(南京邮电大学 通信与信息工程学院,江苏 南京 210003)

卫星通信便携式地球站因其体积较小、组网下的高灵活性优点而被广泛应用。作为系统重要的组成部分,以往的监控平台难以满足流行的运行终端,故提出Android平台下的M&C系统。该系统通过与天线系统的连接,以友好的图形用户界面显示寻星效果,使通信地球站的对星精度基本满足要求,实现便携站与下位机的通信链路的监控。从Android开发的基本应用知识开始,加以必要的需求分析,在软件方面,给出包括代码的主要模块化设计与编写,提出了主要子模块模型和最终软件结构设计思路,最终实现简约图形用户界面,功能主要有参数设置,包括方位定位、自动和手动对星等。软件在Eclipse配置的SDK环境下,使用当下流行的Java语言开发。

卫星通信;M&C系统;Android;图形用户界面;Java

0 引 言

一个完整的地球通信站[1]主要包括终端设备、伺服收发跟踪系统和监控系统。其中监控系统是整个通信系统的大脑,负责对天线系统主要参数进行控制、监管,使操作人员可以通过监控端监视和控制卫星通信系统设备的运行状况,同时当设备存在故障时将故障内容(error.log)记录在事件中,从而给检修人员提供帮助。监控系统为用户提供了友好便捷的可视化界面,极大方便了非专业用户的操作。

近些年大多数软件运行在PC端。由于PC相对手机来说不便携带,所以PC端虽然拥有比较丰富的开发资源,但是为了软件运行所耗费的精力和时间也较多,成本也相对较高,而且准备工作又比较繁琐。

由于近年来Android系统[2-3]在终端领域的井喷式发展,使得基于Android平台的监控系统具有巨大的应用前景,因此设计一款能运行在Android操作系统下的控制软件,这样既轻小便携,又简单易操作,更有其重要的实际价值,对于企业和客户来说均能节约不少成本。

1 Android系统的体系架构

Android的系统架构如图1所示[4],与其操作系统一样,采用了分层架构。从架构图看,Android分为四层,从高到低分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。

图1 Android架构

(1)应用程序:Android系统一般内置有Email、短信收发程序、浏览器、联系人等功能的应用程序。除了内置的应用程序外,开发者还可以编写更多的应用程序,让用户能够使用更多便利的功能。

(2)应用程序框架:其实就是Android的API(Application Programming Interface),开发者只要善用此API即可开发出Android应用程序。应用程序就是依赖框架层次API,所有应用都是一组服务和系统,一般包含:一套丰富且可扩展的视图组件,Activity Manager(活动管理器),Content Providers(内容提供器),Resource Manager(资源管理器),Notification Manager(信息管理器)。

(3)系统运行库:Android有一个内部函数库,此函数库主要用C/C++编写。Android应用程序开发人员并非直接使用此函数库,而是通过更上层的应用程序框架来使用此函数库功能,所以有人称此类函数库为原生函数库(Native Libraries)。此函数库依照功能也可细分成各种类型的函数库。

(4)Linux内核:Android以Linux 2.6版作为整个系统的核心,Linux提供Android主要的系统服务,如:安全性管理(Security)、内存管理(Memory Management)、进程管理(Process Management)、网络栈(Network Stack)、驱动模型(Driver Model)、电源管理(Power Management)等。

2 总体设计

2.1 系统顶层建模

建模过程[5]如图2所示,像多数管理软件一样,user可以设置成管理员和普通用户不同的登录模式,均可实现基本操作,不同的是管理员对系统参数设置有更高的权限,主要可以管理数据库[6]。

图2 顶端模型图

2.2 自动与手动对星建模

如图3所示,自动模式即采用自动对星方式寻星,并且在界面实时显示参数,而手动是在事先知道卫星参数情况下手动调整,或是卫星偏移较大以至于长时间难以自动对准而手动调到参数附近位置,然后再采用自动模式,手动调整的是俯仰、方位以及极化角度。

图3 自动与手动对星模型图

2.3 系统软件结构图

软件结构图如图4所示。

图4 软件结构图

3 系统的具体实现

3.1 Socket通信模式

Socket套接字机制[7]广泛运用于网络通信,采用TCP协议[8],通过面向连接的可靠性服务实现C/S模式的通信。操作Socket过程大致如下:

(1)调用Socket类的构造函数,以服务器的指定IP地址或指定的主机名和指定的端口号为参数,创建一个Socket流,在创建Socket流的过程中包含了向服务器请求建立通信连接的过程实现。

(2)建立了client端通信Socket后,就可以使用Socket的方法getInputStream()和getOutputStream()来创建输入/输出流。这样,使用Socket类后,网络输入输出也转化为使用流对象的过程。

(3)使用输入输出流对象的相应方法读写字节流,因为流连接着通信所用的Socket,Socket又是和服务器端建立连接的一个接口,因此数据将通过连接从服务器得到或发向服务器。这时就可以对字节流数据按客户端和服务器之间的协议进行处理,完成双方的通信任务。

(4)通信结束时,先关闭输入输出流,再关闭Socket,分别采用对应的close()方法。

3.2 登录界面的实现

经过登录界面进入时,会有三个空白窗,分别为user、password和IP地址。IP地址作为唯一识别对应天线的参数,一般情况下,天线型号与IP地址相关联能够解析出对应的IP地址,而该IP是由后台Web服务器端通过WiFi设置的,要想修改IP,需要先修改Web端对应的IP。

登录界面关键实现代码如下:

UserImpl impl=new UserImpl(Login.this);

Cursor cursor=impl.login(name.getText().

toString(), password.getText().toString(),

ipadd.getText().toString());

//管理消息

if(cursor.moveToNext()) {

Toast.makeText(Login.this,"登陆成功",Toast.LENGTH_SHORT).show();

}else {Toast.makeText(Login.this,"输入错误",Toast.LENGTH_ SHORT).show();

}

3.3 参数设置界面的实现

鉴于卫星主要的参数均设置在界面当中,若用户要对其进行修改,直接修改即可。卫星信息已经关联了数据库,重新选择通信卫星,直接在下拉菜单中选中,比如中星6A,对应显示其经纬度,用户若想对卫星数据进行修改,直接操作数据库中数据即可。值得一提的是,卫星通信保证有500 MHz的频带传输,其中上行频段为14.0~14.5 GHz,下行频段为12.25~12.75 GHz,变频之后的信号必须在此范围内,且保证传码率以及接收发送的频率都必须一致才能互通。最后选择接收机,只能选DVB接收机与信标机之一。

布局与数据读入关键代码:

public classSetActivity extends Avtivity{

private Cursor cursor;

private DataBase db=new DataBase(this);

/*省略部分代码*/

MytabActivity mytabs=(MytabActivity) this.getParent();

public void onCreate(Bundle savedInstanceState) {…}

cursor=db.getAllTitles();

SimpleCursorAdapteradapter=new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item, mycursor,new String[]{"卫星名称"},new int[]{ android.R.id.text});

/*省略部分代码*/

satname.setOnItemSelectedListener(new OnItemSelectedListener() {…}

public voidonItemSelected(AdapterView arg0, View arg1,int arg2, long arg3){…}

3.4 位置定位

与监控系统连接的是天线系统[9-11],上面安装有GPS接收机,监控具有两种工作模式—自动模式和人工模式。随着技术的发展,诸如蓝牙、WiFi等多种无线通信模块早已做成集成芯片安装在手机上,充分利用Android智能手机[12-14]内置GPS定位模块,基于Eclipse开发平台通过程序的调用,实现定位功能[15],给出当前天线地理位置的经度和纬度。

利用手机GPS获取地理方位关键代码如下:

private void setLocation(Location location){

if (location!=null) {

String latitudeStr=Double.toString(location.getLatitude());//经度

StringlongitudeStr=Double.toString(location.getLongitude());//纬度

if(latitudeStr!=null&&!latitudeStr.equals("")) {latitude.setText(latitudeStr);}

if(longitudeStr!=null&&!longitudeStr.equals("")) {longitude.setText(longitudeStr);}

if(altitudeStr!=null&&!altitudeStr.equals("")) {altitude.setText(altitudeStr);}

}else{Log.v("location","location为空");}

LocationManager locationMgr=null;

updateToNewLocation(locat); //监听器监听

Locationlocat=locationMgr.getLastKnownLocation(provider); // 获取位置

locationMgr.requestLocationUpdates(provider,100 * 1 000,500,locationListener);

}

3.5 理论计算与代码实现

理论计算是根据所选择参数以及方位信息等通过公式计算天线的俯仰方位和极化。在界面中单击菜单,选择对星按钮后,如果给出所有参数格式且不为空时,系统就会根据读取的参数并参照开发时规定的公式计算出卫星天线的极化角、俯仰角和方位角,并将理论值显示在监控界面上。理论上计算公式如下:

俯仰角:

Fy=

方位角:

极化角:

实现计算关键代码:

privatevoidcomputer(){

doublelocal_j=0;//本地经度

doublelocal_w=0;//本地纬度

//***省略若干初始化计算代码***

doublefw_angle=0,fy_angle=0,fy=0,pf=0,jh_angle=0;

doublezz=PI/180,floattt=sate_j-local_j;

//方位角

fw_angle=Math.atan(Math.tan(tt*zz) /Math.sin(local_w*zz));

fw_angle=PI-fw_angle;//中国所在为东经

//俯仰角

pf=1-(Math.cos(local_w*zz)*Math.cos(-tt*zz))*(Math.cos(local_w*zz)*Math.cos(-tt*zz));

fy=((Math.cos(local_w*zz))*(double)Math.cos(-tt*zz)-0.151 3)/Math.sqrt(pf);

fy_angle=Math.atan(fy); //zz不用再乘

//极化角

if(jComboBox.getSelectedItem()=="垂直"){

jh_angle=Math.atan(Math.sin(tt*zz)/Math.tan(local_w*zz));//垂直方式

v_flag=0;

}

if(jComboBox.getSelectedItem()=="水平"){

jh_angle=Math.atan(Math.sin(tt*zz) /Math.tan(local_w*zz));//水平方式

h_flag=0;

if(jh_angle>0){jh_angle=jh_angle-PI/2;}

else{jh_angle=jh_angle+PI/2;}

}

fw_angle=fw_angle*180/PI;

fy_angle=fy_angle*180 /PI;

jh_angle=jh_angle*180 /PI;

}

4 实现结果

系统采用MVC设计模式,运用Socket编程实现互通,实现了基本操作功能,包括登录、参数设置、寻星的自动与手动模式,如图5所示。

图5 各层次图形界面

5 结束语

该系统是在Android的虚拟环境下开发实现,虽测试能完成相应基本功能,但毕竟是模拟器,在测试响应过程容易受到外部环境(如天气等)的影响,还要加以改进确保无差错响应。对于其他更高层次的功能,如无人值守,气象监控,早已出现在现如今许多地球站,由于能力有限以及设备的局限等主客观原因暂未能实现,但这不失为今后研究的大方向。

[1] 汤 鹏.一种新型便携式卫星通信地球站的M&C系统[D].南京:南京邮电大学,2014.

[2]MeierR.Android4高级编程[M].佘建伟,赵 凯,译.第3版.北京:清华大学出版社,2013.

[3] 农丽萍,王力虎,黄一平.Android在嵌入式车载导航系统的应用研究[J].计算机工程与设计,2010,31(11):2473-2476.

[4] 徐 玲,蒋欣志,张 杰.手机二维码识别系统的设计与实现[J].计算机应用,2012,32(5):1474-1476.

[5]BlahaM,RumbaughJ.UML面向对象建模与设计[M].车皓阳,杨 眉,译.北京:人民邮电出版社,2011.

[6] 吴 中,郑晓华.基于Java的Web数据库访问系统[J].科学之友:上旬,2007(2):158-159.

[7]EckelB.Java编程思想[M].陈昊鹏,译.北京:机械工业出版社,2007.

[8] 张海燕.Java多线程技术在手机联网中的应用[J].农业网络信息,2008(3):97-98.

[9]KrausJD,MarhefkaRJ.Antennas:forallapplications[M].NewYork:NewMcGraw-Hill,2001.

[10]BridgeWM.Crosscouplinginafivehornmonopulsetrackingsystem[J].IEEETransactionsonAntennasandPropagation,1972,20(4):436-442.

[11]WeaverAC,LuoJihao,ZhangXinyuan.MonitoringandcontrolusingtheInternetandJavaindustrialelectronicssociety[C]//ProcofIECON’99.[s.l.]:IEEE,1999:1154-1158.

[12] 代 敏.基于Android平台下手机定位程序的设计及实现[J].计算机与数字工程,2012,40(4):143-145.

[13] 耿东久,索 岳,陈 渝,等.基于Android手机的远程访问和控制系统[J].计算机应用,2011,31(2):559-561.

[14] 王朝华,陈德艳,黄国宏,等.基于Android的智能家居系统的研究与实现[J].计算机技术与发展,2012,22(6):225-228.

[15] 艾国祥,施浒立,吴海涛,等.基于通信卫星的定位系统原理[J].中国科学:G辑,2008,38(12):1615-1633.

Implementation of M&C for Satellite Antenna on Android System

MA Shu-hui

(College of Telecommunications and Information Engineering,Nanjing University of Posts and Telecommunications,Nanjing 210003,China)

Man-pack satellite communication earth station is widely used owing to its compact size and flexibility on networking.As an important part of this system,the previous monitoring system is no longer satisfied with the popular running platform.In view of this,puts forward the thought of M&C system in satellite on the Android system.Through a connection with the antenna system,it displays satellite search effect with a friendly GUI (Graphical User Interface) and basically satisfies requirements of accuracy on search.Meanwhile it achieves the monitoring between portable station and slave computer.Beginning with the basic Android application of knowledge,plus necessary analysis and requirements,in the perspective of the software,the modularized program design and compiling is given.The main submodules and the design idea of final software structure are presented.Finally,it provides a concise GUI which makes users be able to complete the parameter settings,including pointing satellite location by automatic or manual pattern.The software development mainly uses the current Java under SDK environment with Eclipse.

satellite communication;M&C system;Android;GUI;Java

2015-12-24

2016-04-20

时间:2016-09-19

国家自然科学基金资助项目(61271234)

马曙晖(1991-),男,硕士研究生,研究方向为计算机网络、卫星通信技术。

http://www.cnki.net/kcms/detail/61.1450.TP.20160919.0839.016.html

TP39

A

1673-629X(2016)10-0133-04

10.3969/j.issn.1673-629X.2016.10.029

猜你喜欢

手动应用程序代码
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
创世代码
创世代码
创世代码
创世代码
小巧手动起来
风行S5001.6L手动尊享型
宝骏5601.8L手动豪华型
C4世嘉 1.6L手动豪华型