小弟,迷茫困惑中,请各位大虾多多指教!

csh79 2003-01-09 11:13:13
大家给看看这个程序的可行性,我的最终意图是要求从数据采集卡定时采集来的数据存在动态数组aa()中,然后再timer3中,从aa()中定时取其最大值和最小值。
其中,timer1.interval=5,timer3.interval=500,即每次丛数组里取100个数区最大最小值。
请大家多多提意见!

Function MaxValue(a() As Integer) As Integer
Dim i As Long, max As Integer, l As Integer, u As Integer
l = LBound(a): u = UBound(a)
max = a(l)
l = l + 1
For i = l To u
If a(i) > max Then max = a(i)
Next i
MaxValue = max
End Function

Function MinValue(a() As Integer) As Integer
Dim i As Long, min As Integer, l As Integer, u As Integer
l = LBound(a): u = UBound(a)
min = a(l)
l = l + 1
For i = l To u
If a(i) < min Then min = a(i)
Next i
MinValue = min
End Function

Private Sub Timer1_Timer()
Static n As Integer
n = LBound(aa)
rtn = GT_GetAdc(1, adc_data)
aa(n) = Int(200 * 10# * adc_data / 2048#)
Text1.Text = aa(n)
n = n + 1
End Sub

Private Sub Timer3_Timer()
Dim max11, min11 As Integer
Dim m As Integer
m = Timer3.Interval / Timer1.Interval
ReDim aa(m)
max11 = MaxValue(aa())
min11 = MinValue(aa())
Text4.Text = max11
Text5.Text = min11
End Sub

...全文
44 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AechoJohn 2003-01-09
  • 打赏
  • 举报
回复
timer1.interval=5,timer3.interval=500
用Timer来决定时间很不可靠,你的设置值虽为timer3.interval/timer1.interval=100,但在执行时一般不会达到你的要求!建议在timer3的事件中判断timer1事件中记录的数据n来做为条件。
minajo21 2003-01-09
  • 打赏
  • 举报
回复
运行有问题吗?
我觉得这样很危险,封装成类会好一点。
wocan 2003-01-09
  • 打赏
  • 举报
回复
UP
FreshAir 2003-01-09
  • 打赏
  • 举报
回复
用VB等高级语言编写数据采集程序时,一定要注意程序的执行效率,
否则,当数据采集的频率较高时,可能会丢失数据。关于执行效率,我
提几点优化建议。
1.ReDim比较费时,应尽量减少其执行次数。
既然aa的元素个数由Timer1和Timer3的定时间隔决定,
ReDim aa(m)就应该放在Timer的定时间隔设定处执行,
不要放在Timer3里,以减少不必要的动作。
2.aa()的最大值和最小值的计算分别用了两个函数,可改用
一个sub来实现,减少重复的循环。当数组较大时,尤其可观。
3.多次用到了LBound和UBound来得到aa的上下界,实际上,在
ReDim aa()后就是知道的了,最好定义两个Form级的变量。

另外,Timer1里计数器n的使用有问题,`尽管定义了static型,
但每次执行时,其值都是固定的,也不妨用一个Form级的变量。
n = LBound(aa) '0
....
n = n + 1 '1


kmcyz 2003-01-09
  • 打赏
  • 举报
回复
用一个TIMER就可以了,在TIMER1时间中判断,当数据采集了100次时直接调用MaxValue()、MinValue()或者用类建立一个事件,当数据采集了100次时就触发事件,在事件中调用MaxValue()、MinValue()。
csh79 2003-01-09
  • 打赏
  • 举报
回复
“建议在timer3的事件中判断timer1事件中记录的数据n来做为条件。”

请楼上两位高手明示!
starbaby 2003-01-09
  • 打赏
  • 举报
回复
UP。。。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧