发新话题
打印

Windows平台上的串行通信简介

Windows平台上的串行通信简介


Windows平台上的串行通信简介 " e7 ]& b9 w8 G7 g+ G6 w
    1.使用 VC编程
3 [0 c# c) S! x0 i- {    利用 Visual C  编写串行通信程序可借助于API(Application Program Interface)函数。 Windows 9x及更高版本的通信函数为32位。涉及到串行通信的APl函数主要有以下几个:
& T, M! A! [1 }$ h% A; H6 {    打开通信资源(包括通信口)使用CreateFile( ) ,通信资源被看成一个文件。该函数有7 个自变量。
( X& B4 f6 q+ z1 I. k    对通信口的设置涉及3个函数:SetupComm( )使用来设置发送和接收缓冲区的大小; GetCommState( )可用来获取串行通信设备控制块DCB结构的当前状态;SetCommState( )用来 对通信口进行自己的设置。
# @% s! Y2 q2 v0 q$ ^, C    发送数据使用WriteFile( )函数。 : k; J2 ~% ?$ _0 `* \  X
    读接收到的数据使用ReadFile( )函数。
1 j4 K; w" L! T5 ~6 o    清除通信错误并报告通信口当前状态使用ClearCommError()函数。
3 g* I' v2 I1 o( b5 ^% s    指示通信口进行某种扩充功能(如发送DTR信号)使用EscapeCommFunction()函数。
+ E* H: D  Z6 Y1 b% L/ e/ |$ e    这些函数的说明可参看“Visual Studio MSDN”(Microsoft Developer Network)。
! K5 s- D/ @* X    2.使用VIi编程
8 N6 ?3 X3 P  _( {4 i( e    Visual c   3.0(VB)及以上的专业版、企业版都提供了一个通信控件,5.O版本以后称之为MSComm。利用该控件可很方便地实现RS-232通信。 * L1 B' q! e, {% @; \
    下面是一个很简单的程序示例,读者从注释中不难理解它的作用。这里假定事先已定义Comml为 MSComm类型的对象。
5 W( n+ Q. {: [* O/ L2 j    Comml.CommPort=2                                           ’指定Comml是COM2口
& ]; O0 O/ w) u! }/ _    Comml.Settings="9600,n,8,l”                 ’设置通信参数 6 ~- R$ y+ v) ?8 \* @
    Comml.InputLen=0                                              ’读取接收数据时,一次读取所有已收到的字符 ; Z! U. a5 i, g/ V; g( U
    Comml.PortOpen=True                                       ’打开COM2
- A- I3 q* k! h  y: b    Comml.DTREnable=True                                   ’置DTR 3 f( [4 s4 ?" q( a) \
    Comml.RTSEnable=True                                    ’置RTS 9 P3 r- O8 ], e' W( z
    Comml.Output=”Test Communication”      ’发送一字符串 . \( m; \* e# }( l& u" ]" _
    Do                                                                             ’循环等待,直到接收到5个以上的字符为止
( K3 R- Y( [! I' o2 L               DoEvents                                                     ’此期间将控制权交还给Windows,以响应其他事件
% f! f1 v1 }5 N; x8 K. b    Loop Until Comml.InBufferCounter>=5 0 m: s# }# Q, Q7 b" B! M0 Z/ Z" g8 T
    InString $=Comml.Input                                       ’读收到的字符,赋给变量InString$



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题