美章网 资料文库 物联网应用跨平台数据通信研究范文

物联网应用跨平台数据通信研究范文

本站小编为你精心准备了物联网应用跨平台数据通信研究参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

物联网应用跨平台数据通信研究

摘要:5G网络的到来,将开启“万物互联”时代。物联网技术就是使各种设备都能接入网络,需要实现跨平台的数据通信。为了解决这一问题,模拟办公楼安防监测系统,设计了一个桌面端和移动端通信的方案。该方案充分利用Socket技术优势,采用UDP协议,实现了C#平台和Android平台的数据通信。移动端通过ADAM4150采集火焰、烟雾、红外对射的信号状态,并将采集的信号状态发送给桌面端。桌面端编程语言是C#,采用WPF框架实现表现层开发,接收移动端通过网络发送的信号状态。

关键词:物联网;Socket编程;C#;Android

近几年来,随着物联网技术的发展,智能医疗、智能交通、智能家居、智能物流以及智慧城市的研究和应用非常广泛,物联网正在悄然改变我们的生活,使人们的生活更加便捷和舒适[1]。5G网络的到来,将开启“万物互联”时代。物联网技术就是使各种设备都能接入网络,实现跨平台数据通信。一般的物联网应用程序都支持电脑、手机和平板等多种设备使用,需要实现桌面端和移动端的跨平台通信。目前,C#已经成为开发物联网桌面端的主流语言,而An⁃droid成为开发物联网移动端的主流语言。标准的Socket通信技术可以实现任何平台和任何进程之间的通信,在PC端和An⁃droid手机端通过有线或无线的连接情况下,实现两端设备的Socket连通[2]。

1实现通信的关键技术

1.1Socket通信原理

Socket的英文原义是“孔”或“插座”,也被称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以实现不同系统之间的通信[3]。在TCP/IP网络中,应用程序通过“套接字”发出请求或应答请求,“套接字”采用客户端/服务器端(Client/Server,C/S)模式。“套接字”之间的连接过程分为三个步骤:1)服务器监听:服务器实时监听网络状态,处于等待连接的状态;2)客户端请求:由客户端“套接字”提出连接请求,连接的是服务器端的“套接字”;3)连接确认:当服务器端“套接字”监听到客户端“套接字”的连接请求后,它就激活一个新进程处理客户端请求,两端连接上后可进行数据传输的操作。而服务器“套接字”继续处于监听状态,接受其他客户端“套接字”的连接请求。Socket有两种操作方式:面向连接和无连接的。面向连接的操作使用TCP协议,这种方式在正式发送数据前,必须和对方建立可靠的连接。一个TCP连接必须经过三次握手才能建立起来,TCP对应的是可靠性要求高的应用;而无连接的操作方式使用UDP协议,这种操作在正式通信前不必与对方先建立连接,不管对方状态就直接发送数据。UDP对应的是可靠性要求低、通信效率高的应用。

1.2C#中的Socket编程

C#语言简洁的语法和强大的功能使套接字编程变得十分简单,在命名空间System.Net.Sockets中,Socket类提供了对套接字的支持[4]。应用程序通过TcpClient类和TcpListener类使用传输控制协议(TCP),通过UdpClient使用用户数据文报协议(UDP),而TcpClient、TcpListener和UdpClient这些协议类都是建立在Socket类的基础之上,负责数据传输的细节工作。网络通讯中的所有数据都是以字节的形式进行传输的,因此必须把数据转化为byte[]的类型。命名空间System.Text中的Encoding类,可以实现字符串和字节数组的相互转换,而Sys⁃tem命名空间中的BitConverter类,则实现基础数据类型与字节数组的相互转换。

1.3Android中的Socket编程

Android编程使用的是Java语言,因此JavaSocket网络编程在Android平台都是适用的,但Android平台也有其特殊性之处。Socket编程通常采用客户端/服务器端(Client/Server,C/S)模式,服务器必须有一个固定的IP地址,才能接收客户端的请求。而手机的IP地址是由运营公司动态分配的,所以Android端通常运行的是客户端程序[5]。Java在包java.net中提供所有与网络通信相关的类。其中,InetAddress类封装了IP地址,利用该类可以获取IP地址和主机地址等信息。ServerSocket类表示服务器套接字,通过指定的端口监听请求,建立连接后进行数据交互。Socket类表示客户端套接字,用于向服务器发出请求连接,连接建立后也可进行数据交互。

2系统设计

2.1总体设计

模拟办公楼安防监测系统,设计一个桌面端和Android移动端通信的模型。系统启动后,桌面端接收移动终端通过网络发送的火焰、烟雾、红外对射的信号状态,并将各信号的状态显示在界面上,使用网络摄像机实现视频监控和记录功能。移动端使用ADAM4150数字量采集器采集火焰、烟雾、红外对射信号并实现对报警灯和照明灯的控制,使用网络摄像机获取实时图像。系统有线信号拓扑图如图2所示。系统采用UDP协议进行跨平台通信。UDP就是用户数据报协议,处于互联网参考模型的第四层-传输层,它是一种无连接不可靠的信息传输。相比于TCP协议,UDP协议少了三次握手建立连接、维护连接和释放连接等一系列过程,因此具有很小的资源消耗和处理速度快的优点。

2.2C#桌面端设计

桌面端的开发环境为VisualStudio2012和SQLServer2008R2,编程语言为C#,使用WPF框架实现表现层开发。WPF提供了统一的编程模型、语言和框架,真正做到了界面设计与开发工作的分离[6]。桌面端接收移动终端通过网络发送的火焰、烟雾、红外对射的信号状态,并将各信号的状态显示在界面上。楼宇安防系统主界面设计如图3所示。桌面端应用程序,创建一个UdpClient对象,并将它绑定到端口号10000。创建一个线程,监听数据。在接收数据线程中,首先调用Receive()方法返回远程移动端发送的UDP数据报,然后解析UDP数据报,最后调用Dispatcher.Invoke()方法更新界面上的UI元素,如红外对射、火焰、烟雾的状态。以下是桌面端的关键代码。

2.3Android移动端设计

Android移动端的开发环境为Eclipse4.2.2和AndroidSDK。移动端应用程序,使用ADAM4150数字量采集器实时采集火焰、烟雾、红外对射信号状态,并显示在界面上,同时将采集到的信号状态发送给桌面端。当检测到火焰或烟雾时,亮起报警灯。如果启用了“入侵报警”,当检测到红外对射信号,亮起报警灯。楼宇安防监测系统移动端界面设计如图4所示。移动端应用程序,首先创建一个DatagramSocket实例对象建立Socket服务,调用connect()指定要发送的远端IP地址和端口号;然后创建一个DatagramPacket实例对象,将要发送的红外对射、火焰、烟雾的信号状态打包到DatagramPacket中去;调用DatagramSocket中的Send()方法发送数据;最后关闭Socket服务。

3结语

为了解决物联网应用系统中的跨平台通信的问题,模拟办公楼安防监测系统,设计了一个桌面端和Android移动端通信的模型,利用UDP协议,使用Socket接口实现两端设备的连通。桌面端利用C#语言编写应用程序,并且使用WPF框架实现表现层开发,可以接收移动端通过网络发送的火焰、烟雾、红外对射的信号状态,并且将状态显示到界面上。而移动端通过AD⁃AM4150采集火焰、烟雾、红外对射的信号状态,即显示在界面上,又将信号状态发送到桌面端。另外本设计还可以应用到物联网的其它应用领域。

参考文献:

[1]王昊.基于工控机平台智能家居系统设计与实现[D].山东:山东大学,2016.

[2]何诚,邵乾飞,袁浩,等.基于Socket实现Android(java)与C#的同步通信[J].无线互联科技,2015(2):15-16.

[3]杨文珺,王志杰.C#物联网应有程序开发[M].北京:机械工业出版社,2017.

[4]张凌晓,袁东锋,刘克成.VisualC#2010程序设计[M].北京:中国铁道出版社,2013.

[5]林志红.AndroidSocket网络编程体会[J].科学技术创新,2017(28):140-141.

[6]顾家铭.WPF在物联网环境监测系统中的应用[J].电脑知识与技术,2018,14(17):287-288.

作者:顾家铭 单位:武汉软件工程职业学院