vb 串行通信MSCOMM

下面是一段用来控制机器人的程序的一部分,用的是串行通信,但是本人很奇怪,为什么PrivateFunctionReceiveString(ByRefstrMessageAs... 下面是一段用来控制机器人的程序的一部分,用的是串行通信,但是本人很奇怪,为什么Private Function ReceiveString(ByRef strMessage As String) As Boolean
从头到尾从来没有调用过,它的作用是什么呢,注意,在这部分之外也没调用过,感觉他是想要接受缓存区的字符,但是为什么不用oncomm呢?
代码如下:
Private Function SendString() As Boolean

Dim sTime As Single

SendString = False
On Error GoTo EX
MSComm1.Output = MyData
SendString = True
EX:

End Function

Private Function ReceiveString(ByRef strMessage As String) As Boolean

Dim sLimitTime As Single

strMessage = ""
ReceiveString = False
sLimitTime = Timer + COMM_TIMEOUT
Do
strMessage = strMessage + MSComm1.Input
If Right(strMessage, 1) = vbCr Then
ReceiveString = True
Exit Do
End If
Loop While Timer < sLimitTime

End Function
急啊!!!!帮忙
展开
 我来答
robin9977
2010-05-26 · TA获得超过543个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:220万
展开全部
你贴出的代码明显不完整,从这两个函数看逻辑上没有什么大问题。
简单分析如下:
1、Private Function SendString() As Boolean

调用该函数,则通过MSComm1指向的串口发送外部变量MyData中存储的数据。

2、Private Function ReceiveString(ByRef strMessage As String) As Boolean

调用该函数,则在限定的超时时限内循环接收串口接收到的数据,直至延时时间结束或者接收到结束符(此例中结束符是换行符vbCr)

至于你提到的问题,
1、“为什么不使用Oncomm事件”,这个一点都不奇怪,串行通讯的一问一答机制(此例应是这样的通讯机制)可以通过很多种方式来进行接收,例如通过Oncomm、或者使用定时器Timer、或者类似本例中的在一个函数中反复查看接收缓冲区等待客户机响应数据的结束符,或等待超时。无论采用哪种方式,视具体情况都可以达到几乎一样的效果。
2、“从头到尾从来没有调用过”:这个有些奇怪,但你仅贴出了部分代码,不好判断。常理来讲,既然写出了这个代码,一定是在需要进行串口接收时要调用,不过从这段代码分析,用到了很多全局变量,代码书写风格不是很严谨,故建议你如果有完整可运行的代码,可全文搜索,应该会有结果。

最后,如果是可以正常运行的代码,一定会在某处有串口接收功能的实现代码,或者调用该函数,或者使用上面提到的另外两种方法。

希望可以帮到你!
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
匿名用户
2010-05-26
展开全部
楼上 分析 很 到位

不多说
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式