vb的问题,我用的mscomm控件,需要用一个timer控件,间隔时间1s,在timer控件中循环执行下面代码六次。

我发现循环执行六次然后我的cpu就特别高达到100%了,这是为什么啊?这是循环执行六次程序代码Diminbyte8()AsByteDimyanzheng12AsStrin... 我发现循环执行六次然后我的cpu就特别高达到100%了,这是为什么啊?
这是循环执行六次程序代码
Dim inbyte8() As Byte
Dim yanzheng12 As String
Dim com(7) As Byte
com(0) = 136
com(1) = com(0)
com(2) = 82
com(3) = 1
com(4) = 0
com(5) = 0
com(6) = 90
com(7) = 1
MSComm1.CommPort = 1
MSComm1.PortOpen = True
MSComm1.Settings = "4800,n,8,2"
MSComm1.InputMode = comInputModeBinary
MSComm1.Output = com
Dim t As Single
t = Timer
While Timer < t + 0.2
DoEvents
Wend
inbyte8 = Form1.MSComm1.Input
yanzheng12 = inbyte8
展开
 我来答
dancwolf
2013-01-28 · TA获得超过172个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:380万
展开全部
我怎么没看出来是循环6次?
Dim t As Single
t = Timer
While Timer < t + 0.2
DoEvents
Wend

这里死循环啊
cpu不100%就怪了
更多追问追答
追问
我说的循环执行六次是另外有代码,就是我会调用这段程序六次,还有这怎么会死循环呢大哥?明明是延时0.2秒程序啊。。。。
追答
timer怎么变化的?
timer永远小于t+0.2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinaboyzyq
2013-01-28 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3240万
展开全部
MSComm1.CommPort = 1
MSComm1.PortOpen = True
MSComm1.Settings = "4800,n,8,2"
MSComm1.InputMode = comInputModeBinary
把这些移到form_load()里面去再测试一下。
更多追问追答
追问
额,还是不行。。。不运行到这个timer控件的时候还没事,一到这个timer事件就到100%。。。。
追答
timer运行完毕需要关闭,即timer1.enabled=false
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bdb9803
2013-01-28 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部
循环那里没问题,确实可以跳出来。但是不清楚你既然用了Timer控件,为什么要这个延时循环?这不是互相冲突吗?
追问
是这样,下位机需要有一个响应时间,最大响应时间为0.2秒,所以我才会在timer事件中加入延时等待下位机发送回来的数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
losteronly
2013-01-28
知道答主
回答量:25
采纳率:0%
帮助的人:5万
展开全部
好像timer的时间单位是微妙
更多追问追答
追问
对,我设置的是1000
追答
那你t+0.2 0.2是微妙吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式