左栏'); } else{ document.write('关闭左栏'); } }catch(e){alert(e);}
Foxtable(狐表)用户栏目专家坐堂 → [求助]计时器代码效率问题


  共有3790人关注过本帖树形打印复制链接

主题:[求助]计时器代码效率问题

帅哥哟,离线,有人找我吗?
kb9702
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:89 积分:1084 威望:0 精华:0 注册:2017/10/31 16:34:00
[求助]计时器代码效率问题  发帖心情 Post By: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 变量
为啥执行效率这么低啊


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107285 积分:545686 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/25 19:46:00 [只看该作者]

也才半秒多一点,不算慢吧。

 回到顶部
帅哥哟,离线,有人找我吗?
kb9702
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:89 积分:1084 威望:0 精华:0 注册:2017/10/31 16:34:00
  发帖心情 Post By:2022/12/25 19:51:00 [只看该作者]

主要是有个数据采集的要读取串口数据,1秒钟100次的采集要求,现在使用全局代码里自定义函数才能达到要求。
问题是多线程的,因为采集的同时要跟PLC通讯写入数据到PLC...还要根据PLC返回的值来控制数据写入到集合。。相当于三个线程操作。。PLC是50MS通讯间隔,所以500MS的速度就有点慢了。。是什么原因导致的呀

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107285 积分:545686 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/25 20:03:00 [只看该作者]

这种还是使用全局代码里自定义函数吧。

这玩意涉及很多原因,我也说不清楚。

 回到顶部
帅哥哟,离线,有人找我吗?
nsdata
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:159 积分:1460 威望:0 精华:0 注册:2022/11/10 9:07:00
  发帖心情 Post By:2022/12/25 22:51:00 [只看该作者]

狐表的性能 做不了50ms,肯定卡死 

 回到顶部
帅哥哟,离线,有人找我吗?
kb9702
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:89 积分:1084 威望:0 精华:0 注册:2017/10/31 16:34:00
  发帖心情 Post By: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。。
看来得放弃了。。

 回到顶部