一个算法(扫描),一个函数(DoEvents)请教~~~分数不在多,乃在于用于恰倒好处~~~~
第一个问题是:DoEvents函数我到现在还是搞不清楚有什么作用??
请各位用通俗的讲法说一下,最好加上一个简单的例子来说明(好象在循环中用得特别多)
注意:MSDN里的帮助信息我不要,也不会给分。
第二个问题:
实现一个算法,通俗的讲(我很喜欢通俗得讲,大家都看得懂。)
有一个数组(100个元素),要实现的是在某个时间内(比如3秒种内)实现对数组中所有元素的扫描,以保持最新信息。
当然,数组是不需要实时检测它的值的,因为它不会改变(不去干预),事实上我要检测的是串口相连接的48台机器(不要管我是怎么连接的),我要在某个时间间隔内实现对所有机器的运行状态的扫描~(全部机器都扫描一遍,允许对某几台机器检测了好几次,但是要保证95%以上的机器都被扫描过!)。
通俗得讲讲扫描的方法就可以了,不用什么代码。
请教了,如果算法好,将再发新帖子给分!!
问题点数:40、回复次数:4Top
1 楼Gutta3(冯大狂)回复于 2004-11-04 11:04:34 得分 0
对了,第二个问题,不要用循环,这样的话就没有意义了。
还有我的3秒种是一个假设,实际情况是在某个时间间隔,譬如足够小(1s)要实现。
而且Timer()中的间隔(Interval)不小于50ms,这样算一下,1s最多只能实现20台机器,也就是
20/48*100%=41.6% 的扫描率,太低了。
当然我只是打个比喻,我的意思是说有没有比循环扫描更加实时的扫描方法,特别是在不间断的连续扫描情况下。比如说跳跃扫描,还有好象数据结构里有个散列查找什么的,大家可以说说看,谢谢了!Top
2 楼of123()回复于 2004-11-04 11:09:26 得分 10
1
Doevents() 的意思就是“我先歇会儿。你们有事儿先办。别让我一个人占着。”
Top
3 楼victorycyz(--)回复于 2004-11-04 11:17:33 得分 20
这样子提问我觉得很好。意思就是要有自己的理解才好。我可能说得不好,请多包涵。
一、 doevents就是能程序在一个比较耗时的操作中,分出一些时间片段来处理其他的请示。以免电脑看起来就死机一样。例子就免了,你也知道在循环中用得特别多。多看看别人写的代码就好。
二、你的说法好象有矛盾。前面说要对所有元素进行扫描,后面说可能有一些(<5%)不被扫描。你知道计算机语言可不是这么模糊的:)
相信你比较感兴趣的其实是后者。这种情况,一般不用数据,而是用集合进行处理。集合一般来讲速度会比较慢。它的优点就是可以快速地按字串(这里的现成的例子,就是你的机器编号或机器名)搜索,而不是象数组一样,一般要从第一个元素开始顺序搜索。
Top
4 楼of123()回复于 2004-11-04 11:20:59 得分 10
2
你的意思,循环会占用过多的时间?那就 Timer + 循环,每个中断扫描 N 台终端。
>而且Timer()中的间隔(Interval)不小于50ms,这样算一下,1s最多只能实现20台机器,也就是20/48*100%=41.6% 的扫描率,太低了。
您别一个中断就扫描一台呀!
老毛病,爱用代码说话:
Dim n As Integer
Private Sub Timer1_Timer()
Dim i As integer
For i = n To 48 Step 8 '每次扫描 6 台
'您的扫描代码
Next i
n = n + 1
If n >= 8 Then n = 0
End Sub
Top




