APP下载

Android平台双以太网接口设计与实现

2017-09-09张建民高大利

软件导刊 2017年8期
关键词:宿主机有线IP地址

张建民+高大利

摘 要:随着嵌入式技术的飞速发展,移动设备融合了PC的以太网等功能。介绍了有线通信终端的软硬件平台,使用USB2.0 HUB和USB转以太网芯片,在嵌入式硬件平台上设计了双以太网接口,然后使用Eclipse集成开发工具,采用Java语言编程实现了双以太网IP地址设置软件,并通过功能测试验证了双以太网的接口功能。该方法能够较好地解决嵌入式硬件平台多以太网接口的设计问题,而且为Android平台多以太网接口的IP地址设置提供了有效的扩展方法。

关键词:Android;双以太网;接口设计;地址设置

DOIDOI:10.11907/rjdk.172175

中图分类号:TP319

文献标识码:A 文章编号文章编号:1672-7800(2017)008-0097-03

0 引言

Android是一种基于Linux的开源操作系统[1],由Google公司开发。Android系统主要应用于移动设备,如智能手机和平板电脑等。随着嵌入式技术的飞速发展,移动设备融合了PC的诸多特性[2-4],如支持以太网等功能。由于原生的Android系统不支持以太网等功能,这就要求对Android系统进行定制开发,以实现特定功能。

对安全保密性要求较高的行业,大多采用以太网接口进行有线通信。本文以有线通信终端为例,介绍了有线通信终端的软硬件平台,在嵌入式硬件平台上设计了双以太网接口,并在Ubuntu12.04宿主机上,使用Eclipse集成开发工具,采用Java语言编程实现了双以太网IP地址设置软件。

1 有线通信终端软硬件平台

1.1 有线通信终端硬件平台

有线通信终端硬件平台由三星Exynos 4412四核ARM处理器、1GB DDR3内存、4GB eMMC闪存、USB/OTG、液晶屏、触摸屏、摄像头、电源管理芯片、音频芯片等部分组成。USB2.0 HUB芯片USB3503通过HSIC总线与Exynos 4412处理器相连,可扩展3个USB2.0接口,通过扩展的USB2.0接口连接2个USB转以太网芯片DM9621,可对外提供2个10/100M自适应的以太网接口。有线通信终端的硬件平台如图1所示。

1.2 有线通信终端软件平台

有线通信终端软件平台采用Android4.4系统,由Linux 内核、Android运行时和库、应用程序框架、应用程序4个层次组成[5-7]。Linux内核包括显示驱动、摄像头驱动、触摸屏驱动、音频驱动、USB驱动、电源管理等;Android运行时和库包括界面管理器、媒体框架、SQLite、WebKit、libc、核心库、Dalvik虚拟机等;应用程序框架包括活动管理器、窗口管理器、内容提供者、通知管理器、位置管理器等;应用程序包括主程序、联系人、电话、浏览器、小部件等。有线通信终端软件平台如图2所示。

有线通信终端的Linux内核中,已适配了USB2.0 HUB芯片USB3503与USB转以太网芯片DM9621的驱动,在Linux shell环境下通过ifconfig命令可对以太网接口的IP地址进行设置,使用ping命令可测试双以太网接口功能是否正常。但对于大部分终端使用者而言,不会使用命令来设置以太网接口的IP地址。因此,通过友好的界面设置以太网接口IP地址是十分必要的。

Android平台双以太网IP地址设置软件的设计思路是:①界面设计采用Windows平台以太网设置的传统风格,为用户提供直观友好的操作界面;②将用户界面中的设置参数自动转化成命令脚本来设置以太网接口IP地址;③对于多个以太网接口,只需增加标签选项卡,复用代码即可实现多个以太网接口IP地址设置软件的开发,具有较好的扩展性。

该软件在Ubuntu12.04的宿主机上进行开发,需要安装Java 语言软件开发工具包(Java Development Kit,JDK的版本为1.6)、Android SDK(Software Development Kit)以及Eclipse ADT插件和编译环境所需的软件包。JDK是Java的核心,包含了Java运行环境(Java Runtime Environment)、Java工具和Java類库。Android SDK提供了使用Java 语言开发 Android 应用程序的 API接口和工具,以便开发者便捷地开发应用程序。Eclipse 是一个开放源代码的、基于Java的可扩展开发平台,可以通过在Eclipse中添加ADT(Android Development Tools,安卓开发工具)来搭建安卓应用程序开发和调试环境。

2 Android平台双以太网IP地址设置软件实现

Android平台双以太网IP地址设置软件采用Java语言编程实现,该软件由以太网接口电源控制、静态IP地址设置、自动获取IP地址等部分组成。每部分的设计与实现简述如下:

2.1 以太网接口电源控制

以太网接口供电通过Exynos 4412处理器的GPIO进行控制,若以太网接口供电未打开,以太网IP地址设置软件会提示“请先开启以太网!”。单击“开启”按钮后,Exynos 4412处理器的控电GPIO输出高电平,连通供电开关,给以太网接口供电;以太网接口供电打开后,“开启”按钮的标题变为“关闭”,单击“关闭”按钮后,Exynos 4412处理器的控电GPIO输出低电平,切断以太网接口的供电;单击“以太网1”、“以太网2”标签选项卡可对两个以太网接口进行设置,以太网接口电源控制界面如图3所示。

2.2 静态IP地址设置

以太网接口供电打开后,单击“以太网1”或“以太网2” 标签选项卡选择不同的以太网接口,单击“使用下面的IP地址”单选按钮可对以太网接口的静态IP地址进行设置,例如:可将以太网2的IP地址设置为:192.168.0.20,子网掩码:255.255.255.0,默认网关:192.168.0.1,DNS1地址:101.226.4.6,DNS2地址:218.85.152.99。静态IP地址设置界面如图4所示。endprint

静态IP地址设置的实现步骤如下:

(1)静态IP地址设置界面由标签选项卡、单选按钮、文本框、标签和按钮组成,单击“使用下面的IP地址”单选按钮,在文本框中输入静态IP地址的相关参数。

(2)单击“保存”按钮后,用户界面中的设置参数被自动转化为命令脚本,保存在/sdcard/ethset.sh文件中,主要代码如下:

static public String sh_title="#! /system/bin/sh";

static public void ethstaticip(Context i_context,int i_ethtype,String i_addr,String netmask,String i_gw,String i_dns1,String i_dns2)

{ String sendmsg=sh_title+"\\n"

+"busybox ifconfig "+getethstr(i_ethtype)+" "+i_addr+" netmask "+i_netmask+" up \\n"

+"busybox route add default gw "+i_gw+" "+getethstr(i_ethtype)+"\\n"

+"setprop net.dns1 "+i_dns1+"\\n"

+"setprop net.dns2 "+i_dns2+"\\n";

writefile(i_context,sendmsg);

}

以上代码用于生成命令脚本,/sdcard/ethset.sh示例文件内容如下:

#! /system/bin/sh

busybox ifconfig eth1 192.168.0.20 netmask 255.255.255.0 up

busybox route add default gw 192.168.0.1 eth1

setprop net.dns1 101.226.4.6

setprop net.dns2 218.85.152.99

(3)执行/sdcard/ethset.sh命令脚本文件,设置指定以太网接口的静态IP地址、子网掩码、默认网关、DNS1、DNS2,主要代码如下:

public class CommandExecution {

public static final String TAG = "CommandExecution";

public static CommandResult execCommand(String command, boolean isRoot) {

String[] commands = {command};

return execCommand(commands, isRoot); }

}

CommandExecution.execCommand(“/sdcard/ethset.sh”, true)

以上代碼用于执行/sdcard/ethset.sh命令脚本,并设置以太网接口的静态IP地址。

2.3 IP地址自动获取

以太网接口供电打开后,单击“以太网1”或“以太网2”标签选项卡,选择不同的以太网接口,单击“自动获取IP地址”单选按钮可从DHCP服务器获取IP 地址等参数。例如,以太网1设置为“自动获取IP 地址”方式,从DHCP服务器获取IP地址等参数。自动获取IP 地址界面如图5所示。

自动获取IP 地址的实现步骤如下:

(1)自动获取IP 地址界面由标签选项卡、单选按钮和按钮组成,点击“自动获取IP 地址”单选按钮。

(2)单击“保存”按钮后,设置参数被自动转化为命令脚本,保存在/sdcard/ethset.sh文件中,主要代码如下:

static public String sh_title="#! /system/bin/sh";

static public void ethauto(Context i_context,int i_ethtype)

{

String sendmsg=sh_title+"\\n"

+"netcfg "+getethstr(i_ethtype)+" up dhcp \\n"; writefile(i_context,sendmsg);

}

以上代码用于生成命令脚本,/sdcard/ethset.sh示例文件内容如下:

#! /system/bin/sh

netcfg eth0 up dhcp

(3)执行/sdcard/ethset.sh命令脚本文件,从DHCP服务器获取IP地址等参数,主要代码同静态IP地址设置的代码相同。

3 功能测试

将有线通信终端和宿主机通过RJ45双绞线接入路由器,用USB调试线连接有线通信终端和宿主机。在宿主机上通过adb程序将编译好的以太网IP地址设置软件安装到有线通信终端,运行程序后,设置有线通信终端以太网1、以太网2和宿主机的静态IP地址,使它们在同一个网段。以太网1的IP地址为192.168.0.10,以太网2的IP地址为192.168.0.20,宿主机的IP地址为192.168.0.1,子网掩码均为255.255.255.0。在宿主机上通过ping命令进行测试,宿主机和有线通信终端以太网1、以太网2之间均能相互通信,无丢包现象。endprint

将有线通信终端以太网1、以太网2和宿主机均设置为“自动获取IP地址”方式,从路由器自动获取IP地址,在Linux shell环境下通过ifconfig命令可查看到以太网1的IP地址为192.168.0.116,以太网2的IP地址为192.168.0.113,宿主机的IP地址为192.168.0.112,子网掩码均为255.255.255.0。在宿主机上通过ping命令进行测试,宿主机和有线通信终端以太网1、以太网2之间均能相互通信,无丢包现象。

4 结语

本文对有线通信终端的软硬件平台进行了介绍,在三星Exynos 4412硬件平台上采用USB2.0 HUB芯片USB3503扩展了USB2.0接口,通过USB转以太網芯片DM9621实现了以太网功能,并在Android4.4平台上采用Java语言编程实现了双以太网IP地址设置软件。经过大量测试,采用静态IP地址或自动获取IP地址方式,宿主机和有线通信终端以太网1、以太网2之间均能相互通信,无丢包现象。

本文采用的方法简单易行、高效快速,能够较好地解决嵌入式硬件平台多以太网接口的设计问题,为Android平台多以太网接口的IP地址设置提供了有效的扩展方法。在以后的工作中,可根据实际需要设计两个以上的以太网接口,并进一步测试多以太网接口的可靠性和稳定性。

参考文献:

[1] 文波,周渊平.基于Android的MT8880芯片的设计与实现[J].微型机与应用,2016,35(21): 88-92.

[2] 杜奇才,邓诚刚,刘荧,等.基于Android平台的VoIP设计实现[J].微处理机,2017(2):41-45.

[3] 王烨.多媒体技术环境下嵌入式网络视频监控系统研究[J].计算机测量与控制,2017, 25(4): 91-95.

[4] 阎旭鹏.嵌入式计算机技术及其应用的探讨[J].信息与电脑:理论版,2016(17): 73-74.

[5] 陆少鹏,周渊平.基于Android的通讯录实时同步功能[J].计算机系统应用,2017(5): 257-261.

[6] 程传旭,关娜.基于安卓系统的船联网信息终端的设计[J]. 舰船科学技术,2017,39(10): 146-148.

[7] 申鸿烨,于维海. Android网络学习平台安全架构的相关研究[J]. 网络安全技术与应用,2017(5): 114-115.endprint

猜你喜欢

宿主机有线IP地址
铁路远动系统几种组网方式IP地址的申请和设置
通信工程中有线传输技术的改进分析
IP地址切换器(IPCFG)
虚拟网络实验室在农村职校计算机网络技术教学中的应用研究
东方有线点播排行榜
基于SNMP的IP地址管理系统开发与应用
公安网络中IP地址智能管理的研究与思考
通信工程中有线传输技术的改进研究
有线数字电视网络双向化改造
在不连接网线的情况下Windows与VM之间如何ping通