新闻中心

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

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

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

3.2.2 MSComm控件两种处理通讯的方式
MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
(1)事件驱动方式
事件驱动通讯是处理端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者CarrierDetect(CD)或Request To Send(RTS)线上一个字符到达或一个变化发生时。在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件。OnComm事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅CommEvent属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm控件对应着一个端口。如果应用程序需要访问多个端口,必须使用多个MSComm控件。
(2)查询方式
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为惟一等待接收的字符是调制解调器的“确定”响应。
3.3 计算机信息发送和接收的实现
下面以智能照明系统中PC机与主控器的,说明计算机与单片机的实现方法。以下是实现的主要子程序。
页面装载程序:

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

4 MSComm控件的问题和解决办法
在实际应用中,MSComm控件对于一问一答式的通信,效果还是可以的,所以用于单模块的通信测试问题不大。但是,如果计算机作为单片系统的一个角色,要实时捕获总线上的信息并响应,存在失帧和误帧的问题,如果系统要求不高,还可以对付,而象智能照明这样要求信息持续、实时、准确的系统,利用MSComm控件处理串口通信就难以胜任了。
在智能照明系统中,采用了自编制的动态库Transdata,dll程序,作为处理串口通信的接口,误帧率和失帧率较低,能满足产品化的要求。
Transdata.dll使用说明:
(1)初始化串口并处于通讯状态函数>
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控件虽然可以方便快捷编制出的机程序,但其通信效率偏低,误帧和失帧率较高,只适用于单模块测试。对于多模块实时通信系统,宜采用其他控件或自编制更有效的收发程序。

本文引用地址:https://www.eepw.com.cn/article/157065.htm

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭