vb.net 高精度定时器 1ms级
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
为了测试计时器运行,我换了一台计算机。
但是这次测试的结果却差强人意,测试了2次,手机秒表时间和程序计次:
1'00.35 3857
1'00.35 3834
前面明明好好的计时器,在另外一台电脑上却不行了。
原电脑是很久的一台电脑,win7系统,这台电脑是前两年配的,win10系统。
按理新电脑处理速度更快,应该比旧电脑更接近准确时间,十分奇怪。
只能推测,新电脑与旧电脑时间片上有差异。设置1ms的间隔,实际在这台电脑对应差不多15ms。
这次为了获得高精度计时器,根据网上的资料,写了以下代码:
Public Class CustomTimerSWPrivate sw As StopwatchPublic Property Interval As IntegerPublic Event Tick()Public Property Enabled As BooleanSub New()Me.Interval = 100Me.Enabled = Falsesw = New Stopwatch()End SubSub New(ByVal Interval As Integer)Me.Interval = IntervalMe.Enabled = Falsesw = New Stopwatch()End SubPublic Sub Start()Me.Enabled = TrueDim th As New Threading.Thread(AddressOf count)th.Start()End SubPrivate Sub count()sw.Start()Dim nowCount As Long = sw.ElapsedMillisecondsDo While Me.EnabledIf (sw.ElapsedMilliseconds - nowCount >= Interval) ThenRaiseEvent Tick()nowCount = sw.ElapsedMillisecondsEnd IfLoopEnd SubPublic Sub [Stop]()Me.Enabled = FalseEnd Sub
End Class
窗体上的调用:
Public Class Form1Dim counter1 As IntegerDim counter2 As IntegerDim counter3 As IntegerDim ct As CustomTimerDim ctsw As CustomTimerSWPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadMe.CheckForIllegalCrossThreadCalls = Falsecounter1 = 0counter2 = 0counter3 = 0Timer1.Interval = 1ct = New CustomTimer(1)AddHandler ct.Tick, AddressOf CustomTimer_Tickctsw = New CustomTimerSW(1)AddHandler ctsw.Tick, AddressOf CustomTimerSW_TickEnd SubPrivate Sub CustomTimerSW_Tick()counter3 += ctsw.IntervalTextBox3.Text = counter3End SubPrivate Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.ClickIf ctsw.Enabled = True Thenctsw.Stop()Elsectsw.Start()End IfEnd Sub
这次在新电脑上的运行结果:
1'00.43 56641
1'00.16 58004
1'00.22 58175
手机时间换算为毫秒后的结果:
60430 56641
60160 58004
60220 58175
算下来时间上相差2-3秒。应该还算是精度比较高了。
后续:12月18日将程序部分代码修改了一下,在tick时不显示,最后在显示。
Private Sub CustomTimerSW_Tick()counter3 += ctsw.Interval'TextBox3.Text = counter3End SubPrivate Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.ClickIf ctsw.Enabled = True Thenctsw.Stop()TextBox3.Text = counter3Elsectsw.Start()End IfEnd Sub
手机秒表测试1'00.13,程序运行结果60122。算下来差8毫秒,精度基本接近1ms,毫秒级。
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
学习更多vb.net知识,请参看vb.net 教程 目录
vb.net 高精度定时器 1ms级相关推荐
- c#实现 微秒级定时器,高精度定时器
c# 微秒级定时器,高精度定时器 整个代码,封装成类 using System; using System.Runtime.InteropServices;namespace winTest {/// ...
- 多媒体高精度定时器介绍
一:背景 在Windows系统下播放多媒体时,需要去精确控制播放过程,如果用Windows产生的WM_TIMER常规定时器来实现,多媒体画面会出现断断续续的现象,原因在于WM_TIMER只能提供大于等 ...
- Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
转自:http://blog.csdn.net/droidphone/article/details/8074892 上一篇文章,我介绍了传统的低分辨率定时器的实现原理.而随着内核的不断演进,大牛们已 ...
- PLC高精度定时器(T法测速功能块)
S7-200 SMART PLC时间间隔指令BGN_ITIME,和CAL_ITIME采用的是系统自带的1ms高精度定时器,PLC里只能调用一次.T法测速和M法测速应用时,都需要高精度时序定时器的支持( ...
- python高精度定时器中断_0015 高精度定时器
0012提过高精度时钟中断,这篇来讲下定时器. 传统操作系统内核一般都有个时间片tick,即相隔一定时间发生一次时钟中断,比如1毫秒,10毫秒,dos时代的1/18.5秒,有高精度时钟之后,我们通过定 ...
- 高精度定时器学习(通过官方手册学习)
高精度定时器学习 功能描述 一般说明 HRTIM引脚和内部信号 时钟 Timer A..E timing units 翻转事件 功能描述 一般说明 HRTIM可以划分为几个模块: •主定时器 •计时单 ...
- linux 定时器 jiffies,linux下jiffies定时器和hrtimer高精度定时器(示例代码)
一.jiffies定时器,HZ=100,精度只能达到10ms. 注:采用jiffies+msecs_to_jiffies(xx ms);可做到ms级,不过精度不够 #include //DO--> ...
- Linux 内核定时器使用 二 高精度定时器 hrtimer 的用例
之前介绍了timer_list内核定时器,它的精度在毫秒级别,再高一点它就无能为力了,所幸内核提供了高精度定时器 hrtimer. 源文件在linux/kernel/hrtimer.c中.接口简单.下 ...
- hpet 定时器中断 8259 linux,[OSDEV]编程高精度定时器(HPET)
高精度定时器HPET和I/O APIC一样,用的是内存映射,映射的地址保存在BIOS提供的ACPI表格中 我们首先来获取这个地址 获取HPET的I/O内存地址 先来看一下文档的30-31页: 关键就是 ...
最新文章
- 华为 日志服务器 配置文件,配置日志服务器
- vc2005编译ffmpeg以及ffplay
- python 多进程 调用模块内函数_Python进程池multiprocessing.Pool的用法
- 使用JDBC连接数据库(MySQL)的源代码
- tensorflow中创建多个计算图(Graph)
- 深入理解JavaScript中的this关键字
- 孙长凯sunck_傅里叶变换红外光谱分析NMDA受体单克隆抗体抗-中国科技论文在线.PDF...
- JAVA字节流(读写文件)
- linux下tail命令的用法,在Linux命令中tail的用法
- map mybatis 的字段返回0_mybatis返回map类型数据空值字段不显示(三种解决方法)
- 程序员面试中最常见的27个问题,拿走不谢
- Chrome开发者调试工具Copy element和Copy OuterHTML区别
- View的事件分发机制
- 计算机无法识别建行网银盾,建行网银盾无法识别怎么办 几招办法教你轻松解决...
- [白话解析] 深入浅出支持向量机(SVM)之核函数
- 夏新N820/N821 recovery刷入教程附MT6577专用刷机工具SP_Flash_Tool_v3.1308.0.125
- JAVA--多线程管理
- bam文件读取_bam格式文件处理大全(一)
- IDEA maven 项目 POM文件变灰色或有个虫子(蜘蛛标记)
- python eel + vue开发桌面应用