| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2515 人关注过本帖
标题:[求助]VB的for循环问题!!请教各位!!
取消只看楼主 加入收藏
foxsports
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-26
收藏
 问题点数:0 回复次数:6 
[求助]VB的for循环问题!!请教各位!!
Private Sub MSComm1_OnComm()
Dim jsdata As Variant
Dim qdata(64) As Single
Dim jdata(64) As Single
Dim zhdata(64) As Single
Dim a, b As Single
For i = 0 To 64
If i = 64 Then Exit For
jsdata = MSComm1.Input
qdata(i) = jsdata(0)
Text1(i).Text = Hex(qdata(i))
Text2(i).Text = qdata(i)
Next i
For i = 0 To 64
If i = 63 Then Exit For
zhdata(i) = CSng(qdata(i) - 48)
Text4(i).Text = zhdata(i)
Next i
For i = 2 To 62 Step 2
If i = 62 Then Exit For
jdata(i) = zhdata(i) * 10 + zhdata(i - 1)
Text3(i / 2).Text = jdata(i)
Next i
End Sub
我在每个for下面都加了一句if语句来跳出循环,没有这个语句的话就跳不出来,直到提示下标越界,哪位知道为什么啊?然后我加断点F8运行的时候正常,自动运行的时候提示下标越界,说明自动运行时没有执行IF语句!!郁闷ing~~!!大家给看看!!这个是串口返回数据的计算问题!!再有就是有没有哪个高手愿意加我QQ:30297208,带带我,我是个新手!!
搜索更多相关主题的帖子: Text1 Text2 
2007-09-07 10:27
foxsports
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-26
收藏
得分:0 
就是要比实际运行的少一次是么?我以为到了次数自动跳转呢!!我去试试啊!!先谢谢各位了!!
2007-09-07 11:03
foxsports
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-26
收藏
得分:0 
我试过了,已经可以了,就一个问题还没有解决,手动运行可以,自动运行就报错:下标越界,64个字节,我循环30次,别的不要了都不行啊,还是越界!!各帮忙啊!!
2007-09-07 15:18
foxsports
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-26
收藏
得分:0 

Private Sub Command1_Click()
Dim s0(7) As Byte
s0(0) = &HAA
s0(1) = &H82
s0(2) = &H2
s0(3) = &H0
s0(4) = &H0
s0(5) = &H0
s0(6) = &H2E
s0(7) = &H55
MSComm1.CommPort = 1
MSComm1.Settings = "4800,n,8,1"
MSComm1.PortOpen = True
MSComm1.InputLen = 1
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputMode = comInputModeBinary
MSComm1.Output = s0
End Sub

Private Sub Command4_Click()
Unload Me
End Sub

Private Sub MSComm1_OnComm()
Dim jsdata As Variant
Dim qdata(64) As Single
Dim jdata(64) As Single
Dim zhdata(64) As Single
Dim a, b As Single
For i = 0 To 64
jsdata = MSComm1.Input
qdata(i) = jsdata(0)
Text1(i).Text = Hex(qdata(i))
Text2(i).Text = qdata(i)
Next i
For i = 0 To 64
zhdata(i) = CSng(qdata(i) - 48)
Text4(i).Text = zhdata(i)
Next i
For i = 2 To 62 Step 2
jdata(i) = zhdata(i) * 10 + zhdata(i - 1)
Text3(i / 2).Text = jdata(i)
Next i
End Sub
这是所有的代码了,前面都没有用,是发送一组数据包,然后接收64个字节的数据包,再分解包,计算,在qdata(i) = jsdata(0)这个地方(第1个循环)就下标越界了,往下就不执行了!!用F8手工运行是正常的,自动运行就报错了,截图我周日再发上来吧!!今天没有截图,现在下班了!!

2007-09-07 16:33
foxsports
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-26
收藏
得分:0 

那你解释一下为什么手动运行没有错误呢,自动运行怎么就报错了!!!你要能查出来就行!!我是查不出来!!

2007-09-09 07:50
foxsports
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-26
收藏
得分:0 
当然不是了,串口收完数据产生ONCOMM事件,数据已经在接收缓冲区里面了,我只是把数据从缓冲区里面取出来啊!!怎么可能是串口跟不上啊!!
2007-09-09 11:03
foxsports
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-26
收藏
得分:0 

不是这样,我是在以前的程序基础上修改的,所以他们以前用的时候都是好的,我仿照他们写的,基本一样,就是定义的变量名不一样,所以才有这的问题的,我一直想不明白那边差在哪啊

2007-09-09 15:07
快速回复:[求助]VB的for循环问题!!请教各位!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012921 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved