DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 146|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 17:26:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                    ???? 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)
  Init_OpenCom(byval m_str as string,byval nbaud as Integer)as Boolean
  参数说明:m_str为串口名称,如“coml”“com2”等;nbaud为波特率,可为1200,2400,4800,9600等;返回值为Boolean,若为true则成功,否则失败false。
  (2)关闭串口结束通讯
  CloseCom()
  (3)发送通讯数据
  SendData(n_str as byte,byval ncount as Integer)
  参数说明:n_str为要发送byte的数组的第一个字节;如要发dim ndata(11)as byte这个数组,只需用ndata(0)作为n_str参数即可;nc-ount为要发送的字节数。
  (4)接收返回的数据
  GetData(byval m_str as string)as string
  参数说明:m_str必须为已有能容纳所要接收字串的长度空间返回接收到的字串,各个字节以“\t”隔开。
  5 结语
  利用MSComm控件虽然可以方便快捷编制出的上位机程序,但其通信效率偏低,误帧和失帧率较高,只适用于单模块测试。对于多模块实时通信系统,宜采用其他控件或自编制更有效的收发程序。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-9-22 12:28 , 耗时 0.083838 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表