VB的MSCOMM控件编程如下,

PrivateSubMSComm1_OnComm()IfMSComm1.CommEvent=comEvReceiveThenText2.Text=MSComm1.Inpu... Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
Text2.Text = MSComm1.Input
End If
End Sub
text1为发送区,text2为接收区,MSComm1.RThreshold = 1
当我发送字符串“ABC”时为什么接收区显示“ABC”,
按道理接收缓冲区一旦接收到一个字符便出发通讯事件,应该显示“C”才对啊
请问为什么还是显示“ABC”?
展开
 我来答
buhui2013
2013-11-10
知道答主
回答量:21
采纳率:100%
帮助的人:7.6万
展开全部
当事件触发后,串口还继续接收,当运行到Text2.Text = MSComm1.Input时,缓冲里已经有

超过MSComm1.RThreshold这个数的数据了,而 MSComm1.Input语句是读取全部缓冲数据。

经测试9600波特率下,大概缓冲里会多出约4~7个字符的,很正常的,你的想法像我多年前的想法。

对于异步的东东,我现在一般都不用事件,而是把MSComm1.RThreshold设为0,用计时器来查询。

好好学习,天天上上,哈哈!
aqpxy1991
2013-11-09 · TA获得超过113个赞
知道答主
回答量:92
采纳率:0%
帮助的人:58万
展开全部
RThreshold设置的是接受的最小字节数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式