蓝牙无线控制台灯(串口通讯电脑客户端编程)教案

资源下载
  1. 二一教育资源

蓝牙无线控制台灯(串口通讯电脑客户端编程)教案

资源简介


通信
随着计算机系统的应用和微机网络的发展,通信功能越来越显的重要。
通信分为串行通信和并行通信。
串并口设备对比图
串行通信
串行通信是指外设和计算机间使用一根数据信号线,数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。
串行通信的普遍性
适合于远距离传输;
——所用的传输线少,并且可以借助现成的电话网进行信息传送
适合人-机交换设备和串行存储的外部设备;
在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式。
串行通信的基本概念
异步通信和同步通信
异步通信 是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。
特点:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。
异步通信和同步通信
同步通信 时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。同时传送的字符间不留间隙,即保持位同步关系,或可以保持字符同步关系。
异步通信和同步通信的比较
(1)异步通信简单,双方时钟可允许一定误差。
同步通信较复杂,双方时钟的允许误差较小。
(2)异步通信只适用于点<--> 点。
同步通信可用于点<--> 多。
(3)通信效率:异步通信低,
同步通信高。
1、单工 单工是指数据传输仅能沿一个方向,不能实现反向传输。
串行通信的传输方向
串行通信的传输方向
3、全双工 全双工是指数据可以同时进行双向传输。
信号的调制与解调
计算机的通信是要求传送数字信号,而在进行远程数据通信时,通信线路是要求传送模拟信号。
利用调制器(Modulator)把数字信号转换成模拟信号,然后送到通信线路上去,再由解调器(Demodulator)把从通信线路上收到的模拟信号转换成数字信号。
由于通信是双向的,调制器和解调器合并在一个装置中,这就是调制解调器MODEM。
串行通信的错误校验
奇偶校验
根据被传输二进制数据中的”1”的个数为 奇数或偶数来校验,奇数为“0”,偶数为“1”
二进制 校验位
0000--------1
0001--------0
0010--------0
0011--------1
同步传输用奇校验,即让原有 数据(包括加上的一位)1的个数为奇数1000110()
异步传输用偶校验,即让原有 数据(包括加上的一位)1的个数为偶数1000110()
发送时钟与接收时钟
在串行通信中,二进制数据以数字信号的形式出现,不论是发送还是接收,都必须有时钟信号对传送的数据进行定位。在TTL标准表示的二进制数中,传输线上高电平表示二进制1,低电平表示二进制0,且每一位持续时间是固定的,由发送时钟和接收时钟的频率决定。
接收时钟和发射时钟与波特率关系
传输速率
传输速率——波特率
波特率表示每秒钟传输二进制代码的位数。
单位是:位/秒(bps)。
波特率因子
波特率因子。在波特率指定后,输入移位寄存器/输出移位寄存器在接收时钟和发送时钟控制下,按指定的波特率速度进行移位,一般几个时钟脉冲移位一次,此时要求接收时钟和发送时钟的时钟周期是波特率的16、32或64倍。波特率因子就是发送或接收1个数据(1个数据位)所需要的时钟脉冲个数,其单位是1/位,即1/Baud,或Baud-1
波特率因子常用为16、32或64倍。
【例1-5】 设波特率为9600,波特率因子为32,则接收时钟和发送时钟的频率为多少?
解:根据公式F = n × B可知,波特率B为9600,波特率因子n为32,则接收时钟和发送时钟的频率为:F = 9600 × 32 = 297200 Hz。
UART串口通信编程
MSCOMM控件的使用
一般有两种实现途径:其一就是使用MSCOMM控件,此控件提供很多方便操作的属性和方法,利用它们可以很方便地实现你的目的;另外一种途径就是使用Windows API,微软为开发者提供了很多相关的串行操作的编程接口,使用这些接口,可以很完成更为强大的功能。
MSCOMM控件的使用
由于Visual Basic 的串行通信控件并不会出现在工具箱中,当我们需要MSComm控件时,让它出现在工具箱中的操作步骤如下 :
( 1 )单击[工程]菜单。
( 2 )在工程菜单中选择[部件]命令。
( 3 )打开[部件]对话框,选中Microsoft Comm Control 6.0 复选框。
( 4 )单击[应用]或[确定]按钮,即可在工具箱中见到“电话盒(MSComm)”的图标,如图3.3所示,我们就可以将MSComm控件加载,进行串行通信。
MSCOMM控件的使用
CommPort属性
CommPort属性用于设置或返回通信连接端口号码。程序必须指定所要使用的串行端口的号码,Windows系统会使用所设置的通信端口与外界进行通信。程序可借助此属性返回所使用的连接端口号码。在此所设置的通信端口号由1开始往上递增,MSComm控件的最大值是16,当使用的通信端口号码超过16时,此控件会生成错误信息。
例子:
MSComm1.CommPort = 1
指定使用COM1进行通信传输。
MSCOMM控件的使用
Settings属性用于设置初始化参数。以字符的形式设置或返回联机速率、奇偶校验、数据位、停止位等4个参数。其格式为为“BBBB,P,D,S”,其中BBBB表示联机速率,P表示奇偶校验位检查方式,D表示数据位数,S表示停止位数。默认值是“9600,N,8,1”,它表示所使用的通信端口是以每秒9600位的速率进行传输,不进行奇偶校验的检查,每个数据单元是8个位,而停止位是1个位,而这4项必须是按照顺序,不可前后对调;其中的字母N可以是大写或小写。
Setting设置完成之后,所传输及接受的字符串便以此设置为准,使用RS-232通信的双方,Setting必须完全一样,彼此才能顺利地通信,否则双方将无法正确接收到彼此所传输的信号
例子:MSComm1.Settings = "9600,n,8,1"
MSCOMM控件的使用
PortOpen
PortOpen属性用于设置或返回通信连接端口的状态。使用串行端口之前必须先将要使用的串行端口打开,而在使用完毕之后,也必须执行关闭操作。串行通信端口各项功能都是在PortOpen的True与False之间完成的,若尚未打开通信端口就进行数据的传输,系统将显示错误信息;而完成传输工作后若不关闭通信端口,在Visual Basic的设计中,会在应用程序结束时同时关闭通信端口。
例子:MSComm1.PortOpen = True
MSComm1.PortOpen = False
MSCOMM控件的使用
Output属性
Output属性用于将要发送的数据输入传输缓冲区。当程序需要传输字符串到对方时,可将字符串使用此命令输入输出缓冲区,一般的数据均是在送达输出缓冲区后随即被送出,当MSComm控件设置有发送阈值属性时,则会生成事件(SThreshold,请看随后的说明)。
例如:MSComm1.Output=”ABCDE”,此即将ABCDE这5个字符通过RS-232串行通信端口发送出去。
MSCOMM控件的使用
InputLen属性
InputLen属性用于指定由串行端口读入的字符串长度或字节数。Visual Basic程序可使用Input命令将存放在输入缓冲区的字符读入,但要指定所读入的字符长度则需要设置本属性。若指定读取的单位是字节,则是读入的字节的个数。
例如:MSComm1.InputLen=10,当程序执行Input命令时,只会读取10个字符。假设在输入缓冲区中有55个字符,而设置的IputLen属性是10,由于第一次的Input命令会按InputLen属性而读取10个字符进来,因此要全部读完所有的数据需要执行6次Input命令。如果我们需要对固定的字符串的长度进行特别的运算或判断时,就必须使用InputLen属性。另外,若InputMode属性指定的是读入字节,则本属性批的就是每次读入的字节数目。
MSCOMM控件的使用
通信步骤
通常我们以下面的步骤来使用Visual Basic的MSComm控件进行通信控制:
( 1 ) 加入通信控件。也就是MSComm控件。
( 2 ) 设置通信端口号码。即CommPort属性。
( 3 ) 设置通信协议。即HandShaking属性。
( 4 ) 设置传输速度等参数。即Settings属性。
( 5 ) 设置其他参数。必要时再加上其他的属性设置。
( 6 ) 打开通信端口。即PortOpen 属性设成True。
( 7 ) 送出字符串或读入字符串。使用Input及Output属性。
8 ) 使用完MSComm通信控件后,将通信端口关闭。即PortOpen属性设成False。
串口通信程序代码
Private Sub Option1_Click()
On Error Resume Next
MSComm1.PortOpen = False
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
Text1.Text = "蓝牙可以使用"
Command1.Visible = True
Command2.Visible = True
Else
Text1.Text = "蓝牙无法使用"
End If
End Sub
串口通信程序代码
Private Sub Command1_Click()
Text1.Text = "正在连接...."
MSComm1.Output = "1"
Text1.Text = "发送开灯信号成功"
Image1.Picture = LoadPicture(App.Path + "open.bmp")
End Sub
串口通信程序代码
Private Sub Command2_Click()
Text1.Text = "正在连接...."
MSComm1.Output = "2"
Text1.Text = "发送关灯信号成功"
Image1.Picture = LoadPicture(App.Path + "close.bmp")
End Sub

展开更多......

收起↑

资源预览