以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]计时器代码效率问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=184715) |
-- 作者:kb9702 -- 发布时间:2022/12/25 19:00:00 -- [求助]计时器代码效率问题 以下为计时器代码,计时器间隔是1MS 以下内容为程序代码: 1 Dim CheckBox As WinForm.CheckBox = e.Form.Controls("WatchBox") 2 If CheckBox.Checked = True Then 3 ARTCount = ARTCount + 1 4 If VarD0 = 2 Then 5 Count = Count + 1 6 End If 7 End If 以下为checkbox代码 以下内容为程序代码: 1 If e.Sender.Checked = True Then 2 VarD0 = 2 3 e.Form.TimerEnabled = True 4 D0Date = Date.Now 5 Else 6 VarD0 = 3 7 e.Form.TimerEnabled = False 8 Dim st As Date = D0Date 9 e.Form.Controls("ShowStr").Text = "耗时:" & (Date.Now - st).TotalMilliseconds & "毫秒 采集:" & ARTCount & "次 计" & Count & "次" 10 Count = 0 11 ARTCount =0 12 End If 耗时:5194.8091毫秒 采集:334次 计334次 ARTCount,Count,VarD0多为Public 变量 为啥执行效率这么低啊 |
-- 作者:有点蓝 -- 发布时间:2022/12/25 19:46:00 -- 也才半秒多一点,不算慢吧。 |
-- 作者:kb9702 -- 发布时间:2022/12/25 19:51:00 -- 主要是有个数据采集的要读取串口数据,1秒钟100次的采集要求,现在使用全局代码里自定义函数才能达到要求。 问题是多线程的,因为采集的同时要跟PLC通讯写入数据到PLC...还要根据PLC返回的值来控制数据写入到集合。。相当于三个线程操作。。PLC是50MS通讯间隔,所以500MS的速度就有点慢了。。是什么原因导致的呀
|
-- 作者:有点蓝 -- 发布时间:2022/12/25 20:03:00 -- 这种还是使用全局代码里自定义函数吧。 这玩意涉及很多原因,我也说不清楚。
|
-- 作者:nsdata -- 发布时间:2022/12/25 22:51:00 -- 狐表的性能 做不了50ms,肯定卡死 |
-- 作者:kb9702 -- 发布时间:2022/12/26 15:22:00 -- 卡死到没有,跟串口通讯的时候自动降速了。。 以下内容为程序代码: 1 Dim Val() As Byte = New Byte() {1, 4, 1, 0, 0, 8, 240, 48} 2 For i As Integer = 0 To 99 3 Threading.Thread.Sleep(5) 4 Ports("COM3").Write(Val, 0, Val.Length) 5 Next 就这样的代码需要运行1500MS。。 看来得放弃了。。
|