串口通信与网络通信
本文背景是研究通过将采集的温度数据通过串口和网络通信将采集的数据传送到手机端进行处理,手机端用eclipse进行开发,实现对采集数据的存档、处理以及发送控制命令。温度采集控制部分采用单片机为核心器件,通过串口和网络进行传输和控制。
2 串口通信原理及配置
2.1 串口通信原理
串行接口在嵌入式系统中是一种重要的数据通信接口,其本质功能是作为CPU和串行设备间的编码转换器。在发送数据时,数据从CPU经串行端口,字节数据转换为串行的位;在接收数据时,串行的位转换为字节数据。[1]
笔者以STC89C52为例来介绍单片机串口通信原理:
设有两个单片机进行串口通信,甲机发送,乙机接收,甲机CPU向SBUF写入数据A,启动发送过程。A中的并行数据送入SBUF,在发送控制器的控制下,按设定的波特率,每来一个移
位时钟,数据移出一位。乙机按设定的波特率,每来一个移位时钟,移入一位到SBUF,因此两边的波特率必须一致。
2.2 串口通信配置
首先要对串口进行相应的配置,在本系统中采用串口工作方式1,波特率可变10位异步通信方式,无奇偶校验.故在此仅以工作模式1为例来说明串口通讯波特率的选择。在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式),根据此模式下波特率计算公式得到相应的配置数据。
本系统采用晶振的频率为11。0592MHz,T1工作在模式2下,波特率为9600b/s,将上述数据带入公式后得T1的初值为0xFD,对下列寄存器进行配置:
EA=0;SCON=0X50;TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1; ES = 1;EA=1;
3 网络通信
3。1 网络通信原理
Socket是一种抽象层,应用程序通过它来发送和接收数据,使用Socket可以将应用程序添加到网络中,与处于同一网络中的其他应用程序进行通信.
本系统采用蓝牙模块作为连接单片机和手机设备的外设接口,因此选用基于蓝牙socket开发Android通信,以下为蓝牙socket通信原理:socket通信在哪一层
在服务器端,使用BluetoothServerSocket类来创建一个 监听服务端口。当一个连接被BluetoothServerSocket所接受,它会返回一个新的BluetoothSocket来管理该连接.在客户 端,使用一个单独的BluetoothSocket类去初始化一个外接连接和管理该连接。[3]
3.2 网络通信配置
(1)。通信创建:通过该蓝牙适配器可以对蓝牙进行基本操作,本系统通过mac蓝牙地址获取蓝牙设备(getRemoteDevice),从其它设备创建一个监听连接.
(2)。通信连接:BluetoothSocket调用connect()连接服务器,如果连接成功,服务器端的accept()方法就会返回BluetoothSocket对象,同时客户端的BluetoothSocket也成功连接服务器,此时服务器端和客户端的BluetoothSocket对象就可以获取输入输出流,对数据进行操作。
(3)。通信处理:通过Bluetooth Socket的getInput Stream()和getOutput Stream()方法获取InputStream和OutputStream使用read(bytes[])和write(bytes[])方法分别进行读写操作。
(4)。通信结束:通过public void close ()关闭端口,并释放所有相关的资源。
4 串口与网络通信的结合应用
4.1 单片机端实现通信步骤
(1)连接HC-05蓝牙模块,与手机设备进行配对,配对后作为全双工串口,通信格式为8位数据位,1位停止位,设置为无奇偶校验,波特率为9600bps。
(2)实现接收功能:在串口中断服务程序中,通过RI标志判断是否接收到数据,再通过数据缓冲寄存器SBUF,当CPU发出读SUBF命令时,即读接收缓冲寄存器的内容。
(3)实现发送功能:当CPU发出写SBUF命令时,即向发送缓冲寄存器中装载新的信息,同时启动数据串行发送,当发送完成后TI置位,需要手动清零.
4.2 手机Android端实现通信步骤
(1)获得BluetoothSocket
将获得的蓝牙模块mac地址作为参数传入Bluetooth Adapter的getRemote Device方法,返回值为Bluetooth Device类型,通过其createRfcommSocketToServiceRecord即得BluetoothSocket.
(2)实现接收功能
通过BluetoothSocket的getInputStream()方法获取InputStream,使用read(bytes[])进行读操作,对收到的数据进行校验,并进行相应的处理.
(3)实现发送功能
通过BluetoothSocket的getOutputStream()方法获取OutputStream使用write(bytes[])方法进行写操作。
5 结语
本文设计了基于蓝牙模块的多点检测温度系统的通信方式,对串口通信和网络通信的原理和机制加以了说明,并结合实际操作提供具体函数的编写,本文所提供的处理方法已在实际的项目中得到应用,由于蓝牙传输距离较短,因此笔者将进一步研究其他方案,在今后的实践中加以完善,提高系统的性能.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论