| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6362 人关注过本帖, 5 人收藏
标题:真心求教,用VB实现动态曲线的绘制,总是有问题
只看楼主 加入收藏
nql_neu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-4-1
结帖率:50%
收藏(5)
已结贴  问题点数:5 回复次数:40 
真心求教,用VB实现动态曲线的绘制,总是有问题
vb quxian.zip (3.22 KB)

各位朋友,楼主小硕一枚,毕业论文里急需要用VB个上位机软件,实现数据的采集,显示和分析,我目前遇到的困难是无法实现动态曲线的绘制,我定义了一个120个数的数组,并且用随机数实现模拟采集,但是120以内的数可以实现动态绘制,但是120以后的就不可以了,请各位帮忙看看程序什么地方有问题。
搜索更多相关主题的帖子: 毕业论文 朋友 动态 软件 
2014-04-01 11:15
nql_neu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-4-1
收藏
得分:0 
程序代码:
Dim px(121) As Single, py(121) As Single '用来保存曲线数据的坐标值,程序中实时曲线通道为3.
Dim col As Integer             '当前需绘制的点数
Dim pl As Integer          '判断是否画动态曲线

Private Sub Command1_Click()
Timer2.Enabled = True
If Timer1.Enabled = True Then
Command1.Caption = "开始"
Timer1.Enabled = False
Else
Command1.Caption = "暂停"
Timer1.Enabled = True
End If
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Command3_Click()
Timer2.Enabled = False
End Sub

Private Sub Form_Load()
HScroll1.value = 900
Picture1.Scale (900, 0)-(1200, 300)    '设置绘图区域坐标
End Sub

Private Sub HScroll1_Change()
Picture1.Cls    '清空绘图区域
num = HScroll1.value              '使绘图区域坐标和滚动条对应
Picture1.Scale (900 - (900 - num), 0)-(1200 - (900 - num), 300)
If pl >= 2 Then
Picture1.PSet (px(0), py(0))
For i = 1 To col
Picture1.Line -(px(i - 1), py(i - 1)), QBColor(2)  ' 重绘曲线
Next i
End If
End Sub

Private Sub Timer1_Timer()
Picture1.Cls
If col < 31 Then
For i = 0 To col
    px(i) = 900 + i * 10
    py(i) = Val(List1.List(i))       '利用随机数模拟实际数据
    Next i
      col = col + 1
      pl = pl + 1
      ElseIf col < 121 Then
      For j = 0 To col
      py(j) = Val(List1.List(j))
      px(j) = 1200 - 10 * (col - j) '如果数据点数》30  《121,数据的横坐标则用这个式子赋值
      Next j
      col = col + 1        '当数组装满时顺次前移,将数组第一个去掉
      Else
      For t = 0 To 119
      py(t) = py(t + 1)
      px(t) = 1200 - 10 * (col - t)
      Next t
      py(120) = Val(List1.List(i))
                                                   '数组的最后一个元素始终存放当前最新实时数据
      End If
      If pl >= 2 Then     '在两个或两个以上的数据点时,开始画动态曲线
      Picture1.PSet (px(0), py(0))
      For i = 1 To col
      Picture1.Line -(px(i - 1), py(i - 1)), QBColor(2)
      Next i
      End If
End Sub

Private Sub Timer2_Timer()
Dim value As Integer

 Randomize

 value = Int(200 * Rnd + 100)

 List1.AddItem value
End Sub
程序代码如上,窗体和工程文件在附件儿里,希望大神来帮助啊!
2014-04-01 13:09
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:1 
      py(t) = py(t + 1)
      px(t) = 1200 - 10 * (col - t)
      Next t
      py(120) = Val(List1.List(i))
                                                   '数组的最后一个元素始终存放当前最新实时数据
      End If
      If pl >= 2 Then     '在两个或两个以上的数据点时,开始画动态曲线

红色部分显然错误,你的list内容不断增加,但list1的list指针固定在120了,应修改如下:
py(120) = Val(List1.List(List1.ListCount - 1))
2014-04-01 14:36
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:1 
1.120以后希望继续采集还是?
2.Picture显示的是最后31个点,所以需要重画的是
    i,当col < = 31时,重画1到col
    ii,当col > 31时,重画col-31到col

[ 本帖最后由 owenlu1981 于 2014-4-1 15:16 编辑 ]
2014-04-01 15:06
nql_neu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-4-1
收藏
得分:0 
回复 2楼 nql_neu
朋友,我按你说的改了,但是运行一会儿之后提示下标越界,我估计还是120个点儿往后出现的问题,程序本身不难理解,你可以下载我的附件用VB打开运行下,你帮我把这个问题搞定,我给你20分都可以,多谢了朋友
2014-04-01 15:56
nql_neu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-4-1
收藏
得分:0 
回复 3楼 lowxiong
朋友,我按你说的改了,但是运行一会儿之后提示下标越界,我估计还是120个点儿往后出现的问题,程序本身不难理解,你可以下载我的附件用VB打开运行下,你帮我把这个问题搞定,我给你20分都可以,多谢了朋友,我和着急啊!
2014-04-01 15:58
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
要等多长时间?我已经等20分钟了。你两个时钟设置多少时间触发?
2014-04-01 16:09
nql_neu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-4-1
收藏
得分:0 
回复 7楼 lowxiong
都是100毫秒,不好意思,我刚才没在电脑旁边!你可以把附件下载下来调试一下,多谢楼主
2014-04-01 16:24
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
主要是我没有出现错误,我都调到10ms了,最后是没有显示,list1.listcount为-20887,应该是list1数据不断增加造成的,应该定期清空list1的显示,或者修改算法
2014-04-01 16:29
nql_neu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-4-1
收藏
得分:0 
回复 9楼 lowxiong
非常感谢楼主,给我解决了困扰了我两天的问题,我以后有啥问题还会向你请教的,这个问题差不多可以结贴了,这个例子很有代表性,需要的同志们可以下载附件,自己改编下就可以用了!
2014-04-01 16:51
快速回复:真心求教,用VB实现动态曲线的绘制,总是有问题
数据加载中...
 
   



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

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