|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 r! N. c1 n9 ]2 b- G
摘要: 利用VB6.0中的MSComm通信控件编程,并以实际项目为例,实现Window下PC
* f, ?( L+ s1 w与单片机的多路串行通信.采用图形用户界面,使用简单,操作方便.3 D( t. S& ~( F m1 |5 S
, i% |; ~7 P0 {$ A关键词:自动检测;单片机;串行通信; MSComm控件
2 G0 i& |- K9 p" c, b
9 i- V8 q' a# Z: A全自动汽车检测,通常是指汽车在不解体的情况下对车辆技术状况、维修质量进行各项技术性能的
+ d3 ?) _. S* ?% e7 e3 x测试、检查、诊断和鉴定中,而且整个测试过程中无需人为控制,是一门近年来才发展起来的技术.它是
2 O1 Y1 ?: s% I. x通过PC机检测光电开关获得开始测量信号,按照约定的通信协议,向下位机发出开始检测信号,下位
p& w- [6 z. [ \$ Y: z, F机根据通信协议控制不同的检测仪器(灯光仪、尾气分析仪、烟度计等)进行测量,并发回检测结果数据," ]% g$ |, ~8 f9 b. J
然后PC机对收到的数据包进行处理,分别获得各项数据.这项技术的广泛运用,对保证车辆的安全性、, H& @6 g" w( J4 P; [, F
可靠性、动力性、经济性,提高车辆的维修质量,加强车辆的技术管理起到了积极的作用.) F" l. P: S# ?/ ^$ ^' y0 k
1VB中的通信控件
, d, q# o+ @7 c1 WVisual Basie( 简称VB)是Windows系统开发的一种高效.易学、易用的主要语言.它支持面向对象/ \# r" W2 y y( b/ ~" i
程序设计,支持结构化的事件驱动编程模式,并可使用无限扩增的控件[闪.在Visual Basie 中通过提供( ^7 C) Z8 Z2 E( g/ T) L
功能强的通信控件以使串行通信程序设计方便且高效.通信控件的文件名是MSComm. oex,其对象名5 F/ w* o5 |, o( v4 I
称是MSComm,利用它可以灵活地编写串行通信程序.在标准版中无通信控件,但可以方便地将通信控
: ]# b2 R" U2 E/ D- q h' i( {件扩增进去即可使用.因此只要熟悉和掌握通信控件的结构和使用方法,就可以毫不费劲地设计有关的! `! _# o5 o0 {* I/ N
通信程序,VB中的每个控件都有其相应的事件和属性.通信控制只提供--个事件OnComm,该事件的
9 J9 B9 Z6 U- k) f. t* V触发可导致对串口的通信事件及错误进行处理.可通过CommEvent属性进行判断以决定当前发生的4 {/ H% }( E( i2 ^# a5 d: X
通信事件和通信错误同.4 `) P2 S9 y$ I0 r' `2 `. A4 V
VB中的通信控件的属性主要有:$ x0 B# `( u6 E; W+ e* U" ^
CommPort:指定使用某- -串行口通信,缺省值为COM1.可设置1-16个,但每个通信控件只对应
t _ G0 `' t& ? k一个串口.
8 Q0 Q; e# Y) f/ ]5 [! t5 ^Settings:初始化串口通信参数,包括波特率.奇偶校验、数据位数.停止位. .
2 F/ O J8 ^2 c- x0 w. aInput:读入并清除接收缓冲区字符,每次读入个数由InputLen属性决定.读取前用户可检查In-; j7 O5 |/ n8 Y
BufferCount属性值以确定接收缓冲区是否已达到InputLen个数的字符.
2 i: [8 }6 E# Y4 rInputLen;每次Input读入的字符个数.缺省值为0,表示读取接收缓冲区全部内容.6 j, p( W- U9 k0 d& I1 Y }
InBuffersize:设置接收缓冲区的大小,缺省值为1024字节.6 ^3 k" t! V, |( a9 ~8 E8 J" E
InBufferCount:返回接收缓冲区中已接收的字符数,通过置0可清除接收缓冲区.
8 ]: p/ f0 M0 J; {Output:写数据到发送缓冲区.可传送文本或二进制数据,数据须声明用为Variant 变量.2 q* `' }. R* s& T* B E: m2 p6 ~
Out Buffersize:设置发送缓冲区的大小,缺省值为512字节.! z+ N4 i4 k& f8 r2 z5 v
Out BufferCount :返回发送缓冲区中等待发送的字符数,通过置0可清除发送缓冲区.1 ^' M) h! R" a5 X& i, N
Portopen:通信开始前打开串行口.5 C% E- R6 M0 {8 ?6 j
PortClose:通信结束后关闭串行口.
m. a0 V' D2 LSThreshold:设置某-.数值.一旦发送缓冲区的字符数减少到小于该设定值时,就会置CommEvent; d0 B3 C; }+ Z2 R
属性为MSCOMMEVSEND,且OnComm事件被触发.其缺省值为0,表示不能触发OnComm事件;为
$ R. u. O \, F8 `) E1则当发送缓冲区空时就触发OnComm事件.用该属性可完成发送数据后的一系列处理.. C- ^2 F [ p
RThreshold:设置某一数值. 每次该数值(个数)的字符被放到接收缓冲区,CommEvent属性就被5 ?4 r* @6 D8 f9 O. |2 O) ~
置为MSCOMMEVRECEIVE,且触发OnComm事件.缺省值为0,表示不能触发OnComm事件.用该8 ` _. J% W6 n' Z. @
属性可完成对串口接收数据的处理.
' `- q, n5 u, g8 C: k9 iCommEvent:返回最近刚发生的事件或错误的代码值.当SThreshold,RThreshold为0时,该属性+ z% j9 g9 X; e* I5 ?
将不再迫踪响应ComEvReceive,ComEvsend事件;每当CommEvent属性值变化时就会产生OnComm
" U6 c, R. |! ~ O& T) b! m5 g& \事件,指示一一个通信事件或错误发生.
; r1 P$ t6 n" ~2 x2 ]* r
0 R0 Q( k' C: U. U$ c附件下载:9 O! X6 X# m. T% y+ X9 d
: x& X; G! h% r' D# K
, G* o- t" C% Y+ y
|
|