|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
% y( w$ e U8 W( U- ?
摘要: 利用VB6.0中的MSComm通信控件编程,并以实际项目为例,实现Window下PC* S, t' A3 h |
与单片机的多路串行通信.采用图形用户界面,使用简单,操作方便.- X. p! b5 y8 e* N5 o
6 g$ p# S2 g0 x, b f+ x
关键词:自动检测;单片机;串行通信; MSComm控件
8 u: A) x' I6 I- h; E
# S2 c' k% d8 v( p7 s全自动汽车检测,通常是指汽车在不解体的情况下对车辆技术状况、维修质量进行各项技术性能的
; Q" Z, K e2 z+ y; C测试、检查、诊断和鉴定中,而且整个测试过程中无需人为控制,是一门近年来才发展起来的技术.它是
1 i& ~0 w9 R1 U6 @通过PC机检测光电开关获得开始测量信号,按照约定的通信协议,向下位机发出开始检测信号,下位2 z( T: y; r& u9 c
机根据通信协议控制不同的检测仪器(灯光仪、尾气分析仪、烟度计等)进行测量,并发回检测结果数据,+ b# t' {: r7 h+ t+ S
然后PC机对收到的数据包进行处理,分别获得各项数据.这项技术的广泛运用,对保证车辆的安全性、
# S, }0 U5 h M可靠性、动力性、经济性,提高车辆的维修质量,加强车辆的技术管理起到了积极的作用.
9 I* D; o h# v. D# i, f1VB中的通信控件5 c+ a) w$ r8 f$ f" u4 ]
Visual Basie( 简称VB)是Windows系统开发的一种高效.易学、易用的主要语言.它支持面向对象
/ x8 P) ~ R. V程序设计,支持结构化的事件驱动编程模式,并可使用无限扩增的控件[闪.在Visual Basie 中通过提供7 {" q4 k- ]* o7 @0 q5 R: f
功能强的通信控件以使串行通信程序设计方便且高效.通信控件的文件名是MSComm. oex,其对象名7 ]- m0 e. g; e6 f4 r
称是MSComm,利用它可以灵活地编写串行通信程序.在标准版中无通信控件,但可以方便地将通信控
' ] B8 F- c3 v2 X* t" v件扩增进去即可使用.因此只要熟悉和掌握通信控件的结构和使用方法,就可以毫不费劲地设计有关的
' }$ Y6 o' [# K' z通信程序,VB中的每个控件都有其相应的事件和属性.通信控制只提供--个事件OnComm,该事件的
, X7 E' d* e: H' t( | A2 n. B, i/ c# I触发可导致对串口的通信事件及错误进行处理.可通过CommEvent属性进行判断以决定当前发生的9 S$ o! c2 o& M; X0 I0 |- w* u0 I
通信事件和通信错误同.
' G, l( C) j# B; [& hVB中的通信控件的属性主要有:
' s9 e- G& ~4 V. A4 nCommPort:指定使用某- -串行口通信,缺省值为COM1.可设置1-16个,但每个通信控件只对应
' X( z3 l, l: s+ J9 _ ^一个串口.
" ] e/ `1 \' \% dSettings:初始化串口通信参数,包括波特率.奇偶校验、数据位数.停止位. ., ]( R2 H7 c9 u# @3 E# j t
Input:读入并清除接收缓冲区字符,每次读入个数由InputLen属性决定.读取前用户可检查In-1 p* q3 r( r2 D* `6 {3 a7 ?& B
BufferCount属性值以确定接收缓冲区是否已达到InputLen个数的字符.
& l4 R* E; `$ i: V' k" f- E4 AInputLen;每次Input读入的字符个数.缺省值为0,表示读取接收缓冲区全部内容.
+ T% N- y0 M6 z& FInBuffersize:设置接收缓冲区的大小,缺省值为1024字节.& t0 p j/ }+ e+ T$ w! q! a8 m
InBufferCount:返回接收缓冲区中已接收的字符数,通过置0可清除接收缓冲区.* L7 Y8 N$ D, \3 m5 k1 `% ]
Output:写数据到发送缓冲区.可传送文本或二进制数据,数据须声明用为Variant 变量.
/ |4 @; P- ~* ^( bOut Buffersize:设置发送缓冲区的大小,缺省值为512字节.
* i v" p5 ]% s( s( x# b- mOut BufferCount :返回发送缓冲区中等待发送的字符数,通过置0可清除发送缓冲区.
2 h( @7 Q- s( R5 {Portopen:通信开始前打开串行口.
/ A& ~+ Z! z% G, Q- oPortClose:通信结束后关闭串行口.- d' O, [- X5 \4 J' P3 O3 g
SThreshold:设置某-.数值.一旦发送缓冲区的字符数减少到小于该设定值时,就会置CommEvent' b' ^# J- |1 _4 e. k, p
属性为MSCOMMEVSEND,且OnComm事件被触发.其缺省值为0,表示不能触发OnComm事件;为
8 u" O* V! `* E! k' ?2 r3 \3 r1则当发送缓冲区空时就触发OnComm事件.用该属性可完成发送数据后的一系列处理.$ Y. q: j% r7 S$ W" R; ^5 U
RThreshold:设置某一数值. 每次该数值(个数)的字符被放到接收缓冲区,CommEvent属性就被
: s1 T D/ Z4 Z2 `置为MSCOMMEVRECEIVE,且触发OnComm事件.缺省值为0,表示不能触发OnComm事件.用该
! \4 l. s! J9 }* }4 g" y- b属性可完成对串口接收数据的处理.' z0 M1 x( E" g
CommEvent:返回最近刚发生的事件或错误的代码值.当SThreshold,RThreshold为0时,该属性
/ U$ i8 G$ {4 l* x7 k1 M0 L- P将不再迫踪响应ComEvReceive,ComEvsend事件;每当CommEvent属性值变化时就会产生OnComm
- v. l; @, i' z; f事件,指示一一个通信事件或错误发生./ T9 @! E' N: g q2 R
+ `* z& q* w' m& m, S
附件下载:
# i! ~4 [- g9 R! N" Q3 H D! S& D" X( F6 Y* q7 b3 s1 n L
4 Y1 i) _" {5 Q V5 V7 d
|
|