1 / 15
文档名称:

VB串口通讯方式解释.doc

格式:doc   大小:64KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

VB串口通讯方式解释.doc

上传人:雨林书屋 2022/12/3 文件大小:64 KB

下载得到文件列表

VB串口通讯方式解释.doc

相关文档

文档介绍

文档介绍:该【VB串口通讯方式解释 】是由【雨林书屋】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【VB串口通讯方式解释 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。目前,VisualBasic简(称VB)已成为WINDOWS系统开发的主要语言,以其高
效、简单易学及功能强盛的特色愈来愈为广大程序设计人员及用户所喜爱。VB支持面向对象的程序设计,拥有构造化的事件驱动编程模式并能够使用无穷扩增的控件。在VB应用程序中能够方便地调用WINDOWSAPI函数,使得编程效率提升,应用功能加强。
利用VB供给的这些功能,我们能够有三种方法达成串口通讯。一种是用VB供给的拥有强盛功能的通讯控件;另一种方法是调用WINDOWSAPI函数,使用WINDOWS供给的通讯件数编写移植性强的应用程序;第三是利用文件的输入/输出达成,该方法简单易行,但有必定的限制性。
一、利用通讯控件(MSCOMM)达成串口通讯
VB供给了通讯控件MSCOMM,。该控件可设置串行
通讯的数据发送和接收,对串口状态及串行通讯的信息格式和协议进行设置。在通讯过程中能够触发OnComm事件,在该事件过程进行数据检验办理及检错,还能够经过编程接见CommEvent属性来认识通讯的状况,进行收发数据的办理。每个通讯控件对应一个串口,假如要接见多个通讯口,则要设计多个通讯控件。

(1)事件
OnComm:通讯控件只供给了一个事件,该事件的触发能够对串口的通讯事件及错误进行办理。
经过对CommEvent属性的判断可知目前的通讯错误和事件,分别对每个Com2mEvent值进行编程就达成了对各个错误和事件的办理。
:CommEvent=MSCOMM—EV—SEND表示发送事件。

(2)属性
CommPort:设置通讯控件与哪个串口相连结,设置并返回通讯口号。
1/13
Setting:设置通讯的信息格式,为字符型。次序为:波特率、校验、数据位、停止位。
PortOpen:布尔型、开关通讯口。
InputLen:从接收缓冲区读取字符个数。
Input,Output:读取接收缓冲区或写入发送缓冲区字符以上五种属性对串口达成基本的设置和操作,下边的三种属性是描绘如何利用VB供给的事件驱动系统来实现通讯。
CommEvent:返回通讯过程中产生的错误信息及事件,认识通讯状况。
SThreshold:设置并返回不触发OnComm事件时发送缓冲区被同意的最少字符数。当缓冲区的字符少于设置的值时,则触发OnComm事件,并把CommEvent设为MSCOMMM—EV—SEND。当SThreshold=0则严禁发送触发OnComm事件,当SThreshold=1则发送缓冲区为空时就触发OnComm事件。利用这一属性,即可达成发送数据后的一系列操作。如:对刚发送的数据进行办理,当串口是和
MODEM通讯时,发送完数据后可进行拆掉线路联接、挂机等操作。
RThreshold:设置并返回不触发OnComm事件时接收缓冲区被同意的最多字符数。当缓冲区的字符多于设置的值时,则触发OnComm事件,并把CommEvent设为MSCOMM—EV—RECEIVE,当RThreshold=0则严禁接收触发OnComm事件,当RThreshold=1则接收缓冲区有一个或更多字符时就触发OnComm事件。利用这一属性,即可达成对串口接收数据的办理。

SubForm1—load( )

′设置COM1
=1
2/13
="9600,o,8,1"波特率:9600′奇校验,8位数据,=0读取′接收缓冲区的全部字符
=512设置发′送缓冲区为
512字节
=512设置接收′缓冲区为512字节
=0严禁发′送事件
=1每一个′字符到接收缓冲区都触发接收事件
′设置COM2
=2
="2400,e,8,1"
′波特率:2400偶验,8位数据,1位停止位
=0读取接′收缓冲区的全部字符
=512设置发′送缓冲区为
512字节
=512设置接收′缓冲区为512字节
=1发送缓′冲区空触发发送事件
=0严禁′接收事件
′翻开COM1,COM2
=True
=True
=5000
EndSub
SubComm1—OnComm( )
3/13
DimInbuffasstring
Dimiasinteger,nasinteger,tasinteger

caseMSCOMM—EV—RECEIVE
Inbuff=
n=len(Inbuff)
Fori=1ton
t=Asc(Mid(Inbuff,i,1))or&HFF
printf
Nexti
EndSelect
EndSub
SubComm2—OnComm( )

CaseMSCOMM—EV—SEND
Printtime
EndSelect
EndSub
SubTimer1—Timer( )
=Second(Now)
Endsub
4/13
二、经过调用API函数实现通讯
以上说了然用VB供给的控件实现通讯的方法,只需理解了VB控件的系统就很简单达成对串口的操作,但可移植性差。但VB能够很简单调用API函数实现通讯。

VB使用动向链接库DLL(DynamicLinkLibraries)的能力,大大扩展了其功能。WINDOWS自己供给了API函数包含三大动向链接库:KERNEL库、GDI库、USER
,经过VB用户能够直接调用这些库中的函数。调用从前,一定第一在VB中申明。该申明可为模块级或窗体级,看作为模块级申明时,其作用域为全部FORM和
MODULE,而作为窗体级申明时其作用域为该申明所在的FORM。
VB调用DLL的格式:
DeclareSub过程名Lib″名库″Alias别名″″]([ByVal参数As种类])
DeclareFunction函数名Lib库″名″[Alias别名″″]([ByVal参数As种类])As种类
在申明中:DECLARE表示申明DLL中的函数,当申明是不拥有返回值的过程时
SUB要点字,而假如调用的函数拥有返回值,则一定用FUNCTION要点字将其申明为函数并在申明语句的最后用AS指明函数返回值的种类。LIB要点字表示当
前申明的过程或函数是库名所指定的库中函数而非VB自己的函数。库名,就是对应动向链接库的名称,此中通讯件数在USER库中。ByVal要点字将原参数数据种类一一对应到VB种类中。
,可用该文件查察联机函数、数据构造及错误信息。
API供给的通讯件数
为了方便说明,我们将有关通讯的函数及有关的数据构造放在全局模块中,(见API编程函数实例)。以下是这些函数的基本介绍:
OpenComm(IpComNameAsString,wInQueueAsInteger,wOutQueueAsInteger)IpComName:设施名,以“COMn”的形式来说明,n为设施号;wInQueue、
5/13
wOutQueue:分别以字节为单位说明发送、接收缓冲区的大小。该函数调用成功返回翻开的设施号,不然返回一负数代表错误信息码。
(2)SetCommState(IpDCBAsDCB)
IpDCB:是DCB构造寄存设施所希望的通讯设置(),此中DCB的ID成员一定表记该设施。假如函数调用成功返回0;不然,返回值小于0。
ReadComm(nCidAsInteger,IpBufAsString,nSizeAsInteger)WriteComm(nCidAsInteger,IpBufAsString,nSizeAsInteger)
这是用来对通讯设施进行读写的函数,nCid:说明要读写的通讯设施号,IpBuf:为读写缓冲区,nSize:为要读写的字节数。假如读写成功,返回读写的字节数,不然是小于0的值,并且其绝对值为读写的字节数。
(4)Closecomm(nCidAsInteger)
该函数封闭nCid所指定的通讯设施,并且开释分派给设施的发送,接收缓冲储存器,调用成功返回0;不然,返回值小于0。
(5)BuildCommDCB(IpDefAsString,IpDCBAsDCB)
lpDef:为一字符串指定设施控制信息,此字符串拥有MS-DOS中MODE命令所使用的参数形式。IpDCB:为一DCB数据构造。该函数将IpDef字符串变换成串行设施控制块(DCB)代码。
(6)GetCommError(nCidAsInteger,IpStatAsCOMSTAT)
该函数检取nCid指定的设施近来的错误值和目前状态,IpStat:是COMSTAT结
,。-的常量的某种组合。

这个例子是一仿真发送机,将从键盘输入的字符发送给COM端口。在FORM中加一按钮COMMAND1来封闭通讯口
6/13
TypeDCB
IdAsString31
BaudRateAsInteger
ByteSizeAsString31
ParityAsString31
StopBitsAsString31
RlsTimeoutAsInteger
CtsTimeoutAsInteger
DsrTimeoutAsInteger
Bits1AsString31
Bits2AsString31
XonCharAsString31
XoffCharAsString31
XonLimAsInteger
XoffLimAsInteger
PeCharAsString31
EofCharAsString31
EvtCharAsString31
TxDelayAsInteger
EndType
TypeCOMSTAT
7/13
BitsAsString31
cbInQueAsInteger
cbOutQueAsInteger
EndType
DeclareFunctionOpenCommLib″User″(ByValIpComNameAsString,ByValwInQueueAsInteger,ByValwOutQueueAsInteger)AsInteger
DeclareFunctionSetCommStateLib″User″(IpDCBAsDCB)AsInteger
DeclareFunctionReadCommLib″User″(ByValnCidAsInteger,ByValIpBufAsString,BValnSizeAsInteger)AsInteger
DeclareFunctionWriteCommLib″User″(ByValnCidAsInteger,ByValIpBuf
AsString,ByValnSizeAsInteger)AsInteger
DeclareFunctionClosecommLib″User″(ByValnCidAsInteger)As
IntegerDeclareFunctionBuildCommDCBLib″UserIpDef″As(ByValString,IpDCBAs
DCB)AsInteger
DeclareFunctionGetCommErrorLib″User″(ByValnCidAsInteger,IpStatAsCOMST
)AsInteger
GlobalIpDCBAsDCB
GlobalnCidAsInteger
SubForm1—load( )
DimcomsetAsString
comset=“COM2"
nCid=OpenComm(comset,512,512)′翻开COM2设置接收,发送缓冲区为512字节IfnCid<0Then办理′错误
MsgBox“不可以翻开COM:"+Str(nCid)+“ErrorNumber:"+Str(nCid),16end
8/13
endif
=关“闭通讯口"设′置串口DCB设施控制块
comset=“COM2:9600,n,8,1"
If(BuildCommDCB(comset,LpDCB))Then
MsgBox“不可以成立COMMDCB",16
end
endif
=Chr(nCid)
If(SetCommState(LpDCB))Then设置串口′状态
MsgBox"不可以设置串口状态",16
end
endif
EndSub
SubForm1-keyPress(keyAsciiAsInteger)
DimnsendAsinteger,xAsinteger
DimLpstateAsCOMSTAT通讯′状态块
Staticinbuffasstring
inbuff=imbuff+Chr(KeyAscii)
x=GetCommError(ncid,Lpstate)读取目前串′口错误或状态
<512Then送缓冲区有′空间否?
Nsend=WriteComm(nCid,inbuff,Len(inbuff))发送inbuff′
9/13

最近更新

小学数学六年级课后延时服务计划 4页

电动工具行业分析报告 5页

(必考题)小学数学三年级上册第二单元《万以内.. 7页

2021年广东省梅州市电梯作业特种设备安全管理.. 30页

2022年人教版七年级上册语文练习册答案 14页

2023-2024学年上海市松江区(五四学制)九年级上.. 5页

2023年地产营销总经理岗位职责 7页

2023年铁路建设工程质量安全监督管理人员考试.. 21页

2024版一级建造师矿业工程考试大纲 15页

ipqc组长工作总结报告 6页

“作业成本法”资料汇总 27页

《计算机网络安全》复习题 15页

上海市杨浦区2020-2022年中考英语二模试题分类.. 6页

中国餐饮加盟行业的市场规模及市场环境分析报.. 6页

二级造价师《基础知识》真题及答案 26页

人教版四年级上册道德与法治内容 153页

会计本科毕业实习报告(精选7篇) 35页

儿童心理发展心得体会(通用10篇) 18页

六年级上册数学期末试卷及答案 21页

冷冲压工艺守则 11页

北京理工大学2021年9月《数字电子技术》基础作.. 7页

季外研版七年级上册there be句型 学案(无答案.. 9页

小学一至六年级部编版语文:古诗文+日积月累+.. 5页

山地施工方案 5页

开题报告专家组评语(通用4篇) 9页

房地产企业融资风险及管理问题研究 9页

提升优质零售商业消费服务水平方案 10页

海堤加固工程方案 23页

施工方案谁看 5页

最新景观工程分包合同模板 16页