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