|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ Q! V( n& g4 y. z摘要: 利用VB6.0中的MSComm通信控件编程,并以实际项目为例,实现Window下PC# d. t- V9 e2 _2 a K, Q
与单片机的多路串行通信.采用图形用户界面,使用简单,操作方便.
4 Q7 |0 c' o6 @% S
* Y1 P: u6 n5 H关键词:自动检测;单片机;串行通信; MSComm控件
8 Y4 f- U* t ?. w: {4 h7 ~" H: R0 S) Q5 t$ {8 G; m0 F6 E
全自动汽车检测,通常是指汽车在不解体的情况下对车辆技术状况、维修质量进行各项技术性能的1 V! ]: F4 P: g6 D, `; y' c l
测试、检查、诊断和鉴定中,而且整个测试过程中无需人为控制,是一门近年来才发展起来的技术.它是7 x3 A0 C' c9 R }
通过PC机检测光电开关获得开始测量信号,按照约定的通信协议,向下位机发出开始检测信号,下位, {8 S, D4 t3 A: n2 z' T& v7 ?0 C+ \
机根据通信协议控制不同的检测仪器(灯光仪、尾气分析仪、烟度计等)进行测量,并发回检测结果数据,; i4 e1 M! E- K% o( E9 Z
然后PC机对收到的数据包进行处理,分别获得各项数据.这项技术的广泛运用,对保证车辆的安全性、
# L7 V& I6 @1 G- s可靠性、动力性、经济性,提高车辆的维修质量,加强车辆的技术管理起到了积极的作用.
/ w5 h0 X5 T7 I# V1VB中的通信控件
, g. X" W, q2 c# ]& @5 Y4 fVisual Basie( 简称VB)是Windows系统开发的一种高效.易学、易用的主要语言.它支持面向对象
) z+ d% q4 Q, ]3 C. V' Z, M程序设计,支持结构化的事件驱动编程模式,并可使用无限扩增的控件[闪.在Visual Basie 中通过提供8 P) Y9 K3 w( v, S: c g
功能强的通信控件以使串行通信程序设计方便且高效.通信控件的文件名是MSComm. oex,其对象名
& A, k/ i. i& U' |% g r称是MSComm,利用它可以灵活地编写串行通信程序.在标准版中无通信控件,但可以方便地将通信控9 ?, y* T' O' H! ^$ h
件扩增进去即可使用.因此只要熟悉和掌握通信控件的结构和使用方法,就可以毫不费劲地设计有关的* m" b c' H4 k$ ~6 K" F: i
通信程序,VB中的每个控件都有其相应的事件和属性.通信控制只提供--个事件OnComm,该事件的% k- H/ W" U/ z- Z( c
触发可导致对串口的通信事件及错误进行处理.可通过CommEvent属性进行判断以决定当前发生的- k+ z% w5 t7 g: W* ]7 t
通信事件和通信错误同.- i# [% T9 N1 S) q
VB中的通信控件的属性主要有:- c: X% G' X. R3 w* u0 U5 T
CommPort:指定使用某- -串行口通信,缺省值为COM1.可设置1-16个,但每个通信控件只对应
) k& g) w ?9 Z$ b6 ]) o一个串口.
# N, i$ d( u: x9 V c: hSettings:初始化串口通信参数,包括波特率.奇偶校验、数据位数.停止位. .+ R) K3 v3 P" N, C5 @. |
Input:读入并清除接收缓冲区字符,每次读入个数由InputLen属性决定.读取前用户可检查In-
! [; j R9 i1 U! [6 h- b* mBufferCount属性值以确定接收缓冲区是否已达到InputLen个数的字符.
1 v# h0 e3 W) G! d, g$ v# [InputLen;每次Input读入的字符个数.缺省值为0,表示读取接收缓冲区全部内容.* X2 O2 P; }* u) ]% S$ I+ J
InBuffersize:设置接收缓冲区的大小,缺省值为1024字节.
. k! E8 l, R6 A: G4 c; y6 aInBufferCount:返回接收缓冲区中已接收的字符数,通过置0可清除接收缓冲区.4 r0 V, M7 E5 Q- @
Output:写数据到发送缓冲区.可传送文本或二进制数据,数据须声明用为Variant 变量.* W0 q3 p* \; Y- V: J5 O! m9 \' Y6 R
Out Buffersize:设置发送缓冲区的大小,缺省值为512字节.
' L+ q/ F& Y7 X, x9 H1 fOut BufferCount :返回发送缓冲区中等待发送的字符数,通过置0可清除发送缓冲区.) k N4 i8 h! l& W7 @2 X; K+ B: B
Portopen:通信开始前打开串行口.% y6 E7 j; s& Y- w+ a
PortClose:通信结束后关闭串行口.
& J& Q, n9 |( N4 a% o; rSThreshold:设置某-.数值.一旦发送缓冲区的字符数减少到小于该设定值时,就会置CommEvent+ F5 J) I* k/ ?- f. X
属性为MSCOMMEVSEND,且OnComm事件被触发.其缺省值为0,表示不能触发OnComm事件;为
6 F A$ H. }4 q1则当发送缓冲区空时就触发OnComm事件.用该属性可完成发送数据后的一系列处理.* n! n3 n8 F/ E- \2 d
RThreshold:设置某一数值. 每次该数值(个数)的字符被放到接收缓冲区,CommEvent属性就被
9 J/ _+ U2 S0 P/ r/ H9 z" m置为MSCOMMEVRECEIVE,且触发OnComm事件.缺省值为0,表示不能触发OnComm事件.用该+ W: D7 E2 T* Z" ]4 ^
属性可完成对串口接收数据的处理.
) H9 D, X5 n7 ]3 ]2 oCommEvent:返回最近刚发生的事件或错误的代码值.当SThreshold,RThreshold为0时,该属性7 V) n, i1 x/ z9 |% t8 H: L
将不再迫踪响应ComEvReceive,ComEvsend事件;每当CommEvent属性值变化时就会产生OnComm
# F, @/ U& F; F9 `事件,指示一一个通信事件或错误发生.) c- |- ^# N* t7 k `( _
; r1 c# o& U: J( }0 u
附件下载:' w- H- n' ^, g( G0 |4 w/ F8 \; P
! y* E2 E' r; q( L; O
" g4 c) I$ Q6 M4 | |
|