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

发布者:WhisperingLight最新更新时间:2010-10-19 来源: 现代电子技术关键字:上位机  单片机  智能家居系统  协议  串行通信  MSComm控件 手机看文章 扫描二维码
随时随地手机看文章

  0引言

  上位机设计是智能家居系统的一个重要组成部分,担负着管理、控制、维护和用户界面操作的重任,高效可靠的上位机设计是整个系统正常运作的重要保障。上位机与系统的通信实际上是与下端单片机的通信。单片机或单片机系统是智能家居控制的核心,当计算机作为单片系统的一个角色时,通常被称为“工控机”或“上位机”,各独立的单片机是系统中实现功能的一个模块,所以有时也称单片机为模块。

  计算机与单片机是通过串口来实现通信的,本文着重讨论计算机与单片机的串口通信的实现方法和MSComm控件技术。

  1上位机在智能家居系统的角色

  首先,必须认识计算机在智能家居系统的作用,可以概括为以下几个方面:

  1.1通信测试工具

  传统的单片机系统的通信测试通过示波器来监测,既不直观又容易丢失信息。将计算机加入到系统中,可以实时监测到线路中的信息,并以数字化呈现,使各个单片机间的通信得到检验,及时解决系统存在的问题。所以计算机在加速系统的开发和保证系统的运行质量的作用就不言而喻了。

  1.2系统维护

  一个单片机系统往往需要对系统中各个不同功能的模块(单片机)进行参数的设置,以适应不同的运行环境,虽然可以通过各模块的控制面板来调整,但操作通常比较麻烦,非专业人员不易掌握。同时对于一些需要定义其地理位置的参数难以实现,不够直观。计算机加入到系统中,不但可以解决操作上的问题,同时还可以读取各模块的参数,以便于调整。

  1.3单片机

  计算机可以作为单片机系统的一个模块,完成相应的功能。计算机应答系统的请求、处理系统中的信息,一方面将信息呈现给用户,另一方面计算机程序通过自动计算或用户的输入,将信息反馈到系统中,参与系统的控制。

  1.4主控机

  在单片机系统中,往往存在一个主控机或主控模块,负责对整个系统的统筹和设置。单片机系统通常是通过各功能模块的输入和响应来实现其功能的,因此必须有一个负责收集输入任务并指定响应模块的主控模块。计算机系统中既可以是一个普通的模块,又可以是负责总体协调的主控器。

  2通信协议

  一个单片机系统是由硬件系统和软件系统构成的。硬件是实现功能的前提,而系统功能则是通过软件来实现的,为了保证各个模块通信,实现系统信息交流,必须制订系统的通信协议。

  从物理上来说,系统各模块是以半双工的模式来通信的,下文提及的智能照明系统下端模块就是以半双工的RS485总路线为通信架构的。而计算机的RS232串口是以全双工的模式来实现通信的,因此,计算机要通过串口参与到单片机系统中必须增加一个RS232和RS485总线转换的模块。

  从逻辑上讲,要实现各模块之间的通信,就必须在模块间约定一个共同遵守的通信协议。单片机以位(b)为基本单位,传输时以8位1字节(B)来传输,单片机以毫秒间距发送若干个字节为一个数据包,也称为一帧,帧之间又规定若干毫秒的间隙。通过计算机程序可以捕获线路中每一帧信息。

  下面以智能照明系统为例,讲述单片机系统的通信协议。

  本协议采用异步串行通信方式,字节帧格式:1个起始位+8个数据位+1个停止位,无校验位。

  帧格式如下:

  l帧=帧头(F4HF5H)+数据包+帧尾(F4HFBH)<255B

  数据包=有效字节数(1B)+传输层数据+校验和(1B)<251B

  帧数据的发送、接收过程中前后两字节数据传送延时不得超过O.5s。

  各模块分配两个字节的地址码,第一字节代表模块类型,第二字节代表模块在系统中分配的顺序。各模块获取总线上的帧后,对自己的地址帧响应,其他的帧抛掉。

  以下是本协议中的关于“灯开停控制”的协议:

  描述:该信息是输出子模块的各路灯的开或关控制。

  构成:该信息发送时由信息头和信息内容构成,返回时由信息头构成。

  主控器或PC机发给输出模块时:

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

  3计算机通信的实现

  计算机硬件上通过RS232与RS485接口转换与下端模块进行通信。而软件的实现有多种方法,下面主要介绍在VB6.0通过MSComm控件来实现通信的方法。

  3.1将MSComm控件引入到VB平台

  MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC,VB,Delphi等语言中均可使用。

  MSComm是Mierosoft公司提供的简化Windows下串行通信编程的AcTIveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Eventdriyen)方法,一是查询法。

   3.2MSComm控件的设置

  3.2.1MSComm控件的属性

  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握手皆可。

  3.2.2MSComm控件两种处理通讯的方式

  MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

  (1)事件驱动方式

  事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者CarrierDetect(CD)或RequestToSend(RTS)线上一个字符到达或一个变化发生时。在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件。OnComm事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅CommEvent属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。

  (2)查询方式

  查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为惟一等待接收的字符是调制解调器的“确定”响应。

  3.3计算机信息发送和接收的实现

  下面以智能照明系统中PC机与主控器的通信,说明计算机与单片机通信的实现方法。以下是实现的主要子程序。

  页面装载程序:

  通信建立后,计算机就可以与下端单片机通过设定的协议进行通信,可以测试下端模块的响应。

  4MSComm控件的问题和解决办法

  在实际应用中,MSComm控件对于一问一答式的通信,效果还是可以的,所以用于单模块的通信测试问题不大。但是,如果计算机作为单片系统的一个角色,要实时捕获总线上的信息并响应,存在失帧和误帧的问题,如果系统要求不高,还可以对付,而象智能照明这样要求信息持续、实时、准确的系统,利用MSComm控件处理串口通信就难以胜任了。

  在智能照明系统中,采用了自编制的动态库Transdata,dll程序,作为处理串口通信的接口,误帧率和失帧率较低,能满足产品化的要求。

  Transdata.dll使用说明:

  (1)初始化串口并处于通讯状态<函数>

  Init_OpenCom(byvalm_strasstring,byvalnbaudasInteger)asBoolean
参数说明:m_str为串口名称,如“coml”“com2”等;nbaud为波特率,可为1200,2400,4800,9600等;返回值为Boolean,若为true则成功,否则失败false。

关键字:上位机  单片机  智能家居系统  协议  串行通信  MSComm控件 引用地址:基于串行通信的智能家居上位机设计

上一篇:高速G,729ab声码器设计及其在媒体网关中的应用
下一篇:智能家居主控模块的设计与实现

推荐阅读最新更新时间:2024-05-02 21:10

协议解码信号是如何输入的?
被测信号首先通过ZDS2022示波器的ADC采样量化转换为数字信号,然后ZDS2022示波器内部的处理器通过设置逻辑门限电平将其转换为二值逻辑信号,最后再对这些逻辑信号进行协议分析并解码。
[测试测量]
51单片机测量PWM脉冲宽度LCD1602显示当前PWM占空比频率
此程序通过两个定时器一个外部中断,测量PWM高电平时间以及周期,计算并在1602显示出占空比 周期 高电平时间,只需让脉冲在P3^2口输入即能测得数据。。 单片机源程序如下: #include reg52.h #include LCD1602.h typedef unsigned char uint8; typedef unsigned int uint16;//数据类型重定义 uint8 count = 0; //计进入外部中断次数 bit flag = 1; //捕获结束标志位 long Pwm_All; //PWM的周期 long Pwm_High; //PWM的高电平时间 占空比=Pwm_Hi
[单片机]
一种新型单片机MSC1210及其应用
实际应用系统往往需要进行高精度的测量,同时还必须进行实时快速控制,提高其开发效率。为此人们常采用高精度A/D芯片加带ISP开发功能的单片机系统来实现。德州仪器(TI)的MSC1210单片机解决了上述问题。它集成了一个增强型8051内核、高达33 MHz的时钟周期、8路24位高精度∑-△A/D转换器、Flash存储器等,其系统功能和结构框图如图1所示。   MSC1210具有以下主要特性:   ◇ 3个16位的定时器,16位PWM波输出;   ◇ 多达21个中断源;   ◇ 32个数字输入/输出端口,带有看门狗;   ◇ 8路ADC提供24位分辨率可编程的无丢失码解决方案;   ◇ 可编程增益放大(PGA)在1~128之间
[单片机]
基于单片机的模糊PID的锅炉压力控制器的设计
  0前言   锅炉自控系统是一个典型的大惯性、大滞后、多变量的过程控制系统,其涉及到压力、温度、水位等多个物理参数检测与控制,需要同时控制风机、补水泵、加热装置,自动排除故障等。由于模拟输入量多,需要的硬件电路也多,控制起来不简单。现阶段,很多厂家都是利用PLC对锅炉进行控制,其自动化程度和可靠性较高,但是成本也很高,而且程序修改和参数设置比较困难。以单片机为控制核心的智能控制系统由于成本低、可靠性好、安全性高,受到了更多企业的喜欢 。本文在借鉴现有各类单片机温度控制系统的基础上,设计一个中档单片机锅炉压力控制器系统,该系统采用STC89C51单片机作为核心,具体控制采用基于模糊的PID方式。   1系统硬件电路设计   
[单片机]
基于<font color='red'>单片机</font>的模糊PID的锅炉压力控制器的设计
瑞萨电子RA产品家族MCU获CAVP综合加密算法套件认证
RA产品家族32位Arm® Cortex®-M微控制器通过瑞萨的安全加密引擎(SCE) 和Arm TrustZone打造卓越物联网安全性 2022 年 5 月 19 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子今日宣布,其32位Arm® Cortex®-M微控制器(MCU)RA产品家族的安全引擎已获得美国国家标准与技术研究院(NIST)加密算法验证计划(CAVP)认证。RA产品家族灵活配置软件包(FSP)v3.6.0及更高版本中将包含认证过的SCE9保护模式驱动程序。 瑞萨RA6M4、RA6M5、RA4M2和RA4M3 MCU产品群均获得了NIST CAVP综合加密算法认证,包括多种模式的高级加密标准(AE
[嵌入式]
瑞萨电子RA产品家族<font color='red'>MCU</font>获CAVP综合加密算法套件认证
平凡单片机教学 第十五讲 计数器与定时器
一、计数概念的引入 从选票的统计谈起:画 正 。这就是计数,生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。 二、计数器的容量 从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只
[单片机]
蔚来携手麦德龙,签署战略合作协议
蔚来与麦德龙就充换电站建设合作,在位于上海中心的NIO House举行签约仪式,双方将建立长期战略合作伙伴关系,共创发展机遇。 根据战略合作协议内容,双方将在充换电基础设施建设方面深化合作,蔚来将在全国范围内的部分麦德龙商场建设充换电站。 此外,根据蔚来的规划,首座二代换电站已经完成量产,相比第一代技术,第二代换电站的单站电池数量增加至13块,服务的效率提升了3倍,每天最高可完成312次换电。根据此前规划,年内蔚来换电站落成至500座。4月中旬即将上线。蔚来会加快换电站的部署节奏,为用户提供更加便捷的补能方式。相信通过这次与麦德龙的合作,未来第二代换电站或在麦德龙抢先布局。 蔚来在充换电站建设上布局已久,充换电站的诞生
[嵌入式]
基于Small RTOS51的PS/2键盘驱动程序开发
引言   随着嵌入式系统的发展,嵌入式软件设计向软件平台靠近,单片机软件设计不再是单一线程结构方式,而是逐步采用多任务的设计思想。实时操作系统使得实时应用程序的设计、扩展和维护变得更容易,无需大的改动就可以增加新的功能。然而随着任务的增加,要求输入的数据也会增加,类型也呈多样化。如果仍然用矩阵式扫描键盘,势必浪费单片机巨大的资源,且增加了成本。若用PC机标准PS/2键盘取而代之,将可解决以上矛盾。本文介绍基于实时操作系统Small RTOS51的PS/2键盘驱动程序的设计,具有响应快,移植性强,占用资源少等优点。 1 驱动的设计   驱动的实现一般可用以下几种方法:① 使用任务编写;② 使用消息编写;③ 使用信号量编写。PS
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved