APP下载

Android透明串口传输模块的设计与应用

2014-10-21何塽纳陈国金

中国机械 2014年23期
关键词:无线局域网串口安卓

何塽纳 陈国金

摘 要: Android设备可用作工业控制上位机。设计了一种Android透明串口传输模块,模块集成了蓝牙转串口、WiFi转串口与USB转串口三种通信方式,用户可任意选取一种; 模块自动建立通信连接,提供与下位机串口通信的透明输入输出接口。讨论了Android透明串口传输模块的软件功能、硬件连接与软件实现,并将其应用于自动缝纫设备。

关键词: 安卓;工业控制;蓝牙;串口;无线局域网;通用串行总线

引言

智能移动设备近几年来发展迅速,在日常生活与工业中的应用日益广泛。对传统的工业控制领域,通常采用PC机、操作面板控制设备[1]。PC机成本较高,体积较大,携带性不好;操作面板界面不直观,操作复杂。智能移动设备如智能手机、平板电脑体积较小,在工业现场便于携带,其触摸屏用户体验较好,相比传统的PC机、操作面板更具优势。Android是一款基于Linux的开源移动设备操作系统,具有完全开放性,适合取代工业控制上位机PC与操作面板[2]。工业控制下位机通信接口通常为串口,Android设备可作为上位机通过蓝牙转串口、WiFi转串口或USB转串口模块与下位机串口通信。Android设备虽然支持这三种通信方式,但直接使用Android API开发应用程序较为麻烦,且对于USB转串口通信,目前没有可用API,这使得开发存在一定复杂性。本文旨在提出一种Android透明串口传输模块,简化Android工业控制上位机应用程序的开发。

1.功能说明

本模块集成蓝牙转串口、WiFi转串口与USB转串口三种通信方式,可直接与下位机串口通信。用户选择三种方式中的一种,模块建立对应通信连接,这一过程由模块自动处理与维护,对用户透明。模块提供一组统一的read(),write()方法作为对外数据通信接口,用户通过此接口与下位机串口通信。

3.Android透明串口传输模块的软件设计

Android透明串口传输软件模块分为三个部分:通信方式选择功能设计、自动建立通信功能设计以及数据通信功能设计。

3.1 通信方式选择功能设计

通信方式选择功能用于选择模块通信方式,配置通用通信地址。通信方式m_ComMode可为蓝牙转串口、WiFi转串口和USB转串口通信中的一种,通用通信地址m_ComAddr为与通信方式对应的蓝牙Mac地址、WiFi IP地址与端口号以及串口设备名称与波特率。

3.2 自动建立通信功能设计

自动建立通信功能根据用户置入的通信方式与通用通信地址,自动建立通信。

3.2.1 Android蓝牙转串口、WiFi转串口、USB转串口通信建立方法

Android从2.2版本开始支持蓝牙功能,并且为开发者提供开发蓝牙应用程序的API[3]。开发蓝牙应用程序首先需要在Manifest中添加权限。

利用Android API建立蓝牙转串口通信的主要步骤如下:根据蓝牙Mac地址返回蓝牙设备对象、建立蓝牙套接字、得到输入输出流。

利用Android API建立WiFi转串口通信的主要步骤如下[4]:建立套接字、得到输入输出流。

对于USB转串口通信应用程序开发, Android SDK未提供API,本文在开源项目android-serialport-api基础上进行开发修改[5]。

首先在工程中导入开源项目android-serialport-api的源代码,然后修改代码。建立串口通信代码如下:

// 调用android-serialport-api自带的open方法,根据选择的波特率与设备名称打开串口

FileDescriptor m_FileDescriptor = open ( device_name , baudrate, flags);

// 得到输入输出流

InputStream m_com_InStream = new FileInputStream ( m_FileDescriptor );

OutputStream m_com_OutStream = new FileOutputStream ( m_FileDescriptor );

3.2.2 通信的自动建立

Android的蓝牙转串口、WiFi转串口和USB转串口虽然在建立通信过程中的实现细节不同,但其过程皆可以概括为利用所需参数(蓝牙Mac地址、WiFi IP地址与端口号、串口波特率与设备名称)经过多步配置建立连接,最终得到输入输出流。可以利用其过程中的相似性编写统一的建立通信方法,方法根据通信方式m_ComMode 调用对应的通信建立程序,通过通用通信地址m_ComAddr经多步配置建立连接,得到输入输出流。

3.3 数据通信功能设计

数据通信功能是Android透明串口传输模块面向用户的接口,提供一组输入输出方法read()、write(),用户通过此方法经蓝牙转串口、WiFi转串口或USB转串口模块与下位机串口通信。

InputStream/OutputStream类与DataInputStream/DataOutputStream类存在继承关系,它们的read()、write()方法具有相同的名称与参数形式,无论建立何种通信方式,都可以用同样的方法对它们进行读写。输入输出流读写主要方法的如下:根据通信方式选择对应的输入流读取数据、根据通信方式选择对应的输出流写入数据。

对于设备流数据读写,一般为阻塞方式, 为适应阻塞操作,本模块创建一个用于数据读写的读写线程[6]。读写方法read()、write()将读写输入输出流所需参数m_receive_byte_Offset(接收数据起始位)、m_receive_byteCount(接收数据位数)、m_send_byte_Offset(发送数据起始位)、m_send_byteCount(发送数据位数)传递给读写线程,读写线程调用read_stream()、write_stream()方法实现数据通信。read()、write()方法会休眠一定时间等待读写线程完成任务,超出时限后不再等待,判定任务失败,以避免调用程序的阻塞。

4.应用实例

自動缝纫设备在服装厂中应用普遍,这些设备通常通过操作面板控制设备运行、修改参数。操作面板界面不直观,操作复杂。本文以Android平板代替操作面板,远程控制设备[7]。使用Android透明串口传输模块,通过蓝牙转串口模块与自动缝纫设备单片机串口通信。用户操作Android触摸屏向设备发送控制、修改参数指令,通过透明串口传输模块发送至设备单片机串口,单片机执行指令。单片机定时读取设备当前状态参数,通过蓝牙转串口模块发送至Android设备,在触摸屏显示。

5.结束语

本文提出的Android透明串口传输模块,将蓝牙转串口、WiFi转串口和USB转串口这三种通信方式封装在一起,用户可以任意选择一种通信方式与下位机串口进行通信,而不必关心每种方式的不同实现细节,简化了Android工业控制应用程序开发,提高了开发效率。

参考文献:

[1]郑彪,汪秉文.串口通信在工业控制中的应用[J].自动化仪表,2002,23(4):58-59.

[2]黄慧萍,肖世德,孟祥印.基于Android平台的步进电机远程控制系统[J].制造业自动化,2014,36(2):44-47,61.

[3]李黎国,张辉,程号.基于Android健康服务终端蓝牙传输软件的设计[J].电子科技,2012,25(5):115-118.

[4]向诚,谢峰粹.基于WiFi和Android的智能探测车设计[J].电子技术应用,2013,39(12):82-85.

[5]赵春亭,左小五.基于Android系统的USB转串口的研究[J].工业控制计算机,2014,27(1):83-84.

[6]朱冬梅,王铮,邓先灿.微机与多台单片机通信的多线程实现[J].计算机应用,2000,20(10):79-80.

[7]李培培,朱维杰.基于Android车载虚拟仪表人机界面设计[J].电子科技,2013,26(2):74-75,78.

作者简介:

何塽纳(1989-),男(汉族),浙江省奉化人,杭州电子科技大学硕士生,主要研究方向为软件开发。

猜你喜欢

无线局域网串口安卓
让iPhone变安卓,这是真的野
文物表情包
MCS—51单片机中的多串口通讯技术的应用
WIFI频段波束可切换开关天线的设计与实现
无线网络高校图书馆无线局域网安全性研究
针对无线局域网攻击技术的研究
论校园无线局域网的攻击与防御
学习安卓应用开发
安卓机器人
全国计算机等级考试机房准备工作探讨