|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ R. D4 F/ B0 \- C摘要: 利用VB6.0中的MSComm通信控件编程,并以实际项目为例,实现Window下PC
) D6 @* [- E1 p6 J1 Y4 w& Q+ H; l与单片机的多路串行通信.采用图形用户界面,使用简单,操作方便.
8 {; `0 X1 e* l
4 |1 {8 A7 f' B( J) |/ k/ p关键词:自动检测;单片机;串行通信; MSComm控件7 U! l) ~, A9 Z; X( _
3 |( R9 X, t) M; X6 `, M) d% \全自动汽车检测,通常是指汽车在不解体的情况下对车辆技术状况、维修质量进行各项技术性能的
( z3 z; M5 ?# F: `/ \ D8 a测试、检查、诊断和鉴定中,而且整个测试过程中无需人为控制,是一门近年来才发展起来的技术.它是( P ]) C3 g5 L& H7 \4 Q9 w
通过PC机检测光电开关获得开始测量信号,按照约定的通信协议,向下位机发出开始检测信号,下位
* r6 X! B5 D; F( |+ { D2 L) ^机根据通信协议控制不同的检测仪器(灯光仪、尾气分析仪、烟度计等)进行测量,并发回检测结果数据,
* f# G& f! ~* f; ?$ ?2 c然后PC机对收到的数据包进行处理,分别获得各项数据.这项技术的广泛运用,对保证车辆的安全性、6 \9 J2 Z; {! W- V- r- h! _
可靠性、动力性、经济性,提高车辆的维修质量,加强车辆的技术管理起到了积极的作用." K9 {& A8 H$ [* X, U
1VB中的通信控件
: _6 Y. L/ k7 `; M9 {! jVisual Basie( 简称VB)是Windows系统开发的一种高效.易学、易用的主要语言.它支持面向对象
3 X; S" w& C' a7 i$ ?; _程序设计,支持结构化的事件驱动编程模式,并可使用无限扩增的控件[闪.在Visual Basie 中通过提供
" h% Q- c3 ^$ i6 i+ q& ^功能强的通信控件以使串行通信程序设计方便且高效.通信控件的文件名是MSComm. oex,其对象名
+ c$ }# N* E8 [( s9 p; {称是MSComm,利用它可以灵活地编写串行通信程序.在标准版中无通信控件,但可以方便地将通信控 U b; w4 ^) u0 i' h6 i3 A
件扩增进去即可使用.因此只要熟悉和掌握通信控件的结构和使用方法,就可以毫不费劲地设计有关的 B% j3 Y# A! U6 m4 j
通信程序,VB中的每个控件都有其相应的事件和属性.通信控制只提供--个事件OnComm,该事件的9 c7 O8 Y3 @) F- _0 [
触发可导致对串口的通信事件及错误进行处理.可通过CommEvent属性进行判断以决定当前发生的
( U" Z" O; N* y# j" \; U/ E通信事件和通信错误同.# i# a4 P3 E$ w0 y# I
VB中的通信控件的属性主要有:( [* K+ [2 ^! O! ^4 a
CommPort:指定使用某- -串行口通信,缺省值为COM1.可设置1-16个,但每个通信控件只对应
0 M3 g+ S3 e. L3 e% y一个串口.6 f y4 v. Y! g- [- P/ G
Settings:初始化串口通信参数,包括波特率.奇偶校验、数据位数.停止位. .! m# ?: H3 Q J% a3 J) ?8 \# ^
Input:读入并清除接收缓冲区字符,每次读入个数由InputLen属性决定.读取前用户可检查In-3 l2 T+ A' k; @) Z/ F
BufferCount属性值以确定接收缓冲区是否已达到InputLen个数的字符.+ B' d: a u6 }/ B
InputLen;每次Input读入的字符个数.缺省值为0,表示读取接收缓冲区全部内容.0 F4 @( }. S: A; G2 \
InBuffersize:设置接收缓冲区的大小,缺省值为1024字节.
' ]' M1 {2 r3 N/ ?( YInBufferCount:返回接收缓冲区中已接收的字符数,通过置0可清除接收缓冲区.
" s2 f. d; R# p% G6 C* z% v( xOutput:写数据到发送缓冲区.可传送文本或二进制数据,数据须声明用为Variant 变量.8 n! V! t/ p: E, d' L% c
Out Buffersize:设置发送缓冲区的大小,缺省值为512字节.
* X$ b3 P2 `7 JOut BufferCount :返回发送缓冲区中等待发送的字符数,通过置0可清除发送缓冲区.
, B7 I1 v2 _4 x+ Y3 r! nPortopen:通信开始前打开串行口.* C* W t) _7 N' D4 ]/ K1 A
PortClose:通信结束后关闭串行口., W/ Z. p( Z+ u4 u# a' q
SThreshold:设置某-.数值.一旦发送缓冲区的字符数减少到小于该设定值时,就会置CommEvent
! J8 ?8 g$ j: g! O& \ }属性为MSCOMMEVSEND,且OnComm事件被触发.其缺省值为0,表示不能触发OnComm事件;为
9 {+ q$ y4 D% X) m. w: Y n1则当发送缓冲区空时就触发OnComm事件.用该属性可完成发送数据后的一系列处理.- I# y) T: H, D) _" F
RThreshold:设置某一数值. 每次该数值(个数)的字符被放到接收缓冲区,CommEvent属性就被! k3 F: b7 o" q% j
置为MSCOMMEVRECEIVE,且触发OnComm事件.缺省值为0,表示不能触发OnComm事件.用该! h r7 f4 A% o' M$ v- k/ w+ h2 }( f
属性可完成对串口接收数据的处理.9 F* d9 N( J3 C/ a
CommEvent:返回最近刚发生的事件或错误的代码值.当SThreshold,RThreshold为0时,该属性
) R+ }/ I! F0 x8 h1 b! j将不再迫踪响应ComEvReceive,ComEvsend事件;每当CommEvent属性值变化时就会产生OnComm ?5 E+ F) g C1 }# z/ T4 B6 o
事件,指示一一个通信事件或错误发生.. w. t) k( f3 T$ L9 U/ G5 N8 N/ N
8 [1 b( t: i6 `' v
附件下载:+ h: x# A5 Z! }% t. A5 \; x* R
! K z7 a+ j7 T3 B" U6 _- l7 [( I
6 n3 o: T D& } |
|