VB串口编程的几个问题

VB串口编程的几个问题

ID:41032666

大小:32.50 KB

页数:8页

时间:2019-08-14

VB串口编程的几个问题_第1页
VB串口编程的几个问题_第2页
VB串口编程的几个问题_第3页
VB串口编程的几个问题_第4页
VB串口编程的几个问题_第5页
资源描述:

《VB串口编程的几个问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、串口数据接收方式1、在OnComm事件中接收数据:这种方式能充分MSCOMM控件的特性。OnComm事件还可以检查和处理通讯错误;可以通过检查CommEvent属性的值来查询事件和错误;对于不定长数据以及对数据进行处理比较复杂的情况,此法不是很方便。PrivateSubMSComm_OnComm()SelectCaseMSComm1.CommEvent'错误CasecomEventBreak'收到Break。CasecomEventCDTO'CD(RLSD)超时。CasecomEventCTSTO'CTSTimeout。CasecomEventDSRTO'DSRTimeou

2、t。CasecomEventFrame'FramingErrorCasecomEventOverrun'数据丢失。CasecomEventRxOver'接收缓冲区溢出。CasecomEventRxParity'Parity错误。CasecomEventTxFull'传输缓冲区已满。CasecomEventDCB'获取DCB]时意外错误'事件CasecomEvCD'CD线状态变化。CasecomEvCTS'CTS线状态变化。CasecomEvDSR'DSR线状态变化。CasecomEvRing'RingIndicator变化。CasecomEvReceive'收到RThres

3、hold#ofchars.CasecomEvSend'传输缓冲区有Sthreshold个字符'CasecomEvEof'输入数据流中发现EOF字符EndSelectEndSub2.轮循法采集数据:A、定时器轮循法对于数据包方式收发数据以及不需即时响应情况,用轮循法更好些。实际上轮循法最大的好处在于集中处理数据而且不太占用CPU。轮循法要注意定时采集的时间片段大小;这里用二进制收发模式;使属性RThreshold、SThreshold为0,屏蔽ONCOMM事件。InputMode=comInputModeBinaryRThreshold=0SThreshold=0Privat

4、eSubTmrComm_Timer()'采用轮循法采集数据 DimRx_buff()AsByteDimokstringAsStringDimReceivedLenAsIntegerOnErrorGoToErrorHandlerTmrComm.Enabled=False'关闭定时器Ifcommport.InBufferCount>0ThenReceivedLen=commport.InBufferCountRx_buff=commport.Inputokstring=StrConv(tempbyte,vbUnicode)IfReceivedLen=6Then IfChr(te

5、mpbyte(0))=":"Andtempbyte(3)=&h0aThen....EndIfIfInstr(okstring,":@END*",vbBinaryCompare)Then....EndIf EndIfTmrComm.Enabled=True'打开定时器EndSubB、直接轮循法此法用于接收少量控制命令字;'保存输入子串的缓冲区 DimInstringAsString '使用COM1。 MSComm1.CommPort=1'9600波特,无奇偶校验,8位数据,一个停止位。MSComm1.Settings="9600,N,8,1" '当输入占用时,'告诉控件读入整

6、个缓冲区。 MSComm1.InputLen=0 '打开端口。 MSComm1.PortOpen=True'将attention命令送到调制解调器。 MSComm1.Output="ATV1Q0"&Chr$(13)'确保'调制解调器以"OK"响应。 '等待数据返回到串行端口。 Do DoEventsBuffer$=Buffer$&MSComm1.Input LoopUntilInStr(Buffer$,"OK"&vbCRLF)'从串行端口读"OK"响应。 '关闭串行端口。 MSComm1.PortOpen=False如何处理不定长数据的接收在处理串口通讯时,经常会遇到不定长

7、数据的接收。由于通讯任务不同及编程要求的差异所以采用的方法也有所不同。本文就此问题进行探讨。不定长数据从数据格式上分,可分为有格式和无格式。一、无格式不定长数据的接收这种格式在实际串口通讯中用得不多,一般只用传送字符串数据。问题在于怎么判断接收结束。一般用时间延迟的方法解决。A、对于非握手式通讯,可用一个定时器定时轮循接收,并假定每个轮循接收完成。用ONCOMM事件接收也可,只是不如定时器定时轮循接收简便。B、对于握手方式通讯,可用直接轮循法提高接收的准确性。下面是实现此法的函数:FunctionsComm(sCo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。