新闻中心

EEPW首页>手机与无线通信>设计应用> 基于串行通信的智能家居上位机设计

基于串行通信的智能家居上位机设计

作者: 时间:2010-09-22 来源:网络 收藏

0 引言
系统的一个重要组成部分,担负着管理、控制、维护和用户界面操作的重任,高效可靠的是整个系统正常运作的重要保障。机与系统的实际上是与下端单片机的。单片机或单片机系统是控制的核心,当计算机作为单片系统的一个角色时,通常被称为“工控机”或“上位机”,各独立的单片机是系统中实现功能的一个模块,所以有时也称单片机为模块。
计算机与单片机是通过串口来实现的,本文着重讨论计算机与单片机的串口通信的实现方法和MSComm控件技术。

1上位机在系统的角色
首先,必须认识计算机在智能家居系统的作用,可以概括为以下几个方面:
1.1 通信测试工具
传统的单片机系统的通信测试通过示波器来监测,既不直观又容易丢失信息。将计算机加入到系统中,可以实时监测到线路中的信息,并以数字化呈现,使各个单片机间的通信得到检验,及时解决系统存在的问题。所以计算机在加速系统的开发和保证系统的运行质量的作用就不言而喻了。
1.2 系统维护
一个单片机系统往往需要对系统中各个不同功能的模块(单片机)进行参数的设置,以适应不同的运行环境,虽然可以通过各模块的控制面板来调整,但操作通常比较麻烦,非专业人员不易掌握。同时对于一些需要定义其地理位置的参数难以实现,不够直观。计算机加入到系统中,不但可以解决操作上的问题,同时还可以读取各模块的参数,以便于调整。
1.3 单片机
计算机可以作为单片机系统的一个模块,完成相应的功能。计算机应答系统的请求、处理系统中的信息,一方面将信息呈现给用户,另一方面计算机程序通过自动计算或用户的输入,将信息反馈到系统中,参与系统的控制。
1.4 主控机
在单片机系统中,往往存在一个主控机或主控模块,负责对整个系统的统筹和设置。单片机系统通常是通过各功能模块的输入和响应来实现其功能的,因此必须有一个负责收集输入任务并指定响应模块的主控模块。计算机系统中既可以是一个普通的模块,又可以是负责总体协调的主控器。

2 通信协议
一个单片机系统是由硬件系统和软件系统构成的。硬件是实现功能的前提,而系统功能则是通过软件来实现的,为了保证各个模块通信,实现系统信息交流,必须制订系统的通信协议。
从物理上来说,系统各模块是以半双工的模式来通信的,下文提及的智能照明系统下端模块就是以半双工的RS 485总路线为通信架构的。而计算机的RS 232串口是以全双工的模式来实现通信的,因此,计算机要通过串口参与到单片机系统中必须增加一个RS 232和RS 485总线转换的模块。
从逻辑上讲,要实现各模块之间的通信,就必须在模块间约定一个共同遵守的通信协议。单片机以位(b)为基本单位,传输时以8位1字节(B)来传输,单片机以毫秒间距发送若干个字节为一个数据包,也称为一帧,帧之间又规定若干毫秒的间隙。通过计算机程序可以捕获线路中每一帧信息。
下面以智能照明系统为例,讲述单片机系统的通信协议。
本协议采用异步通信方式,字节帧格式:1个起始位+8个数据位+1个停止位,无校验位。
帧格式如下:
l帧=帧头(F4H F5H)+数据包+帧尾(F4HFBH)255B
数据包=有效字节数(1B)+传输层数据+校验和(1B)251B
帧数据的发送、接收过程中前后两字节数据传送延时不得超过O.5s。
各模块分配两个字节的地址码,第一字节代表模块类型,第二字节代表模块在系统中分配的顺序。各模块获取总线上的帧后,对自己的地址帧响应,其他的帧抛掉。
以下是本协议中的关于“灯开停控制”的协议:
描述:该信息是输出子模块的各路灯的开或关控制。
构成:该信息发送时由信息头和信息内容构成,返回时由信息头构成。
主控器或PC机发给输出模块时:

本文引用地址://m.amcfsurvey.com/article/157065.htm

系统的通信按照规定的各条协议来执行。

3 计算机通信的实现
计算机硬件上通过RS 232与RS 485接口转换与下端模块进行通信。而软件的实现有多种方法,下面主要介绍在VB 6.0通过MSComm控件来实现通信的方法。
3.1 将MSComm控件引入到VB平台
MSComm控件通过端口传输和接收数据,为应用程序提供通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC,VB,Delphi等语言中均可使用。
MSComm是Mierosoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Eventdriyen)方法,一是查询法。
3.2 MSComm控件的设置
3.2.1 MSComm控件的属性

MSComm控件有很多重要的属性,正确设置其属性是程序进行正常通信的保证,下面介绍几个必须熟悉的属性。
CommPort:设置并返回通讯端口号。
Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen:设置并返回通讯端口的状态,也可以打开和关闭端口。
Input:从接收缓冲区返回和删除字符。
InputMode:接收模式,取O值时,接收文本数据;取1时,接收二进制数据。
Output:向传输缓冲区写一个字符串。
Rthrehold:响应模式,取整数。当接收字符后,若Rthrehold属性设置为O,则不产生OnComm事件;若设置为1,则接收缓冲区收到每一个字符都会使MSComm控件产生OnComm事件。
Sthreshold:发送模式,设置O(缺省值),数据传输事件不会产生OnComm事件;设置为1,当传输缓冲区完全空时,MSComm控件产生OnComm事件。如果在传输缓冲区中的字符数小于value,CommEvent属性设置为comEvSend,并产生OnComm事件。
Handshake:通信握手模式,取值为O时,无握手;取值为1时,表示XOn/Xoff握手;取值为2时,表示Request-to\-send/clear-to-send握手;取值为3时,表示eqLlest-to-send&clear-to-send握手皆可。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭