技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 4726|回复: 27
收起左侧

【VB】VB6写的很精确的计时器(微秒级)

[复制链接]

1038

主题

2307

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
216
威望
286 点
宅币
17830 个
贡献
35614 次
宅之契约
0 份
在线时间
1706 小时
注册时间
2014-1-26
发表于 2014-5-25 03:54:45 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
卖个萌。用中文写代码。面向对象的思想。
文件名:精确计时器.bas
代码如下。代码必须回帖后可见。
游客,如果您要查看本帖隐藏内容请回复
使用范例:(使用前必须先添加这个文件到工程中。)
新建某Form,然后粘贴下面的代码即可。运行的时候,玩法就是,按空格键,然后看标题栏上显示的时间。以秒为单位哦。
[Visual Basic] 纯文本查看 复制代码
Option Explicit

Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
Private g_cCPU频率 As Currency

Type 精确定时器 '定时器对象
    已暂停 As Boolean
    CPU时间 As Double
    暂停时间 As Double
End Type

Sub 全局初始化精确计时器() '使用本模块其它函数的时候,必须先调用此函数完成初始化
'其实初始化也就是取得CPU频率
QueryPerformanceFrequency g_cCPU频率
End Sub

Function 取得CPU时间() As Double '取得CPU启动以来的时间(时钟数÷频率)
Dim 计数 As Currency
QueryPerformanceCounter 计数
取得CPU时间 = 计数 / g_cCPU频率
End Function

Function 新建精确计时器() As 精确定时器 '所有的“精确定时器”对象必须用这个函数来初始化
With 新建精确计时器
    .已暂停 = True '刚创建出来时是暂停状态
    .CPU时间 = 取得CPU时间
End With
End Function

Sub 精确计时器开始计时(计时器 As 精确定时器) '标记“精确定时器”为运转状态
With 计时器
    If .已暂停 Then
        .CPU时间 = 取得CPU时间 - .暂停时间
        .已暂停 = False
    End If
End With
End Sub

Sub 精确计时器暂停计时(计时器 As 精确定时器) '暂停“精确定时器”的时间
With 计时器
    If Not .已暂停 Then
        .暂停时间 = 取得精确的时间(计时器)
        .已暂停 = True
    End If
End With
End Sub

Function 取得精确的时间(计时器 As 精确定时器) As Double '从“精确定时器”读数。。。
If 计时器.已暂停 Then
    取得精确的时间 = 计时器.暂停时间
Else
    取得精确的时间 = 取得CPU时间 - 计时器.CPU时间
End If
End Function


评分

参与人数 1威望 +2 宅币 +5 收起 理由
KxIX + 2 + 5 我是VB6爱好者

查看全部评分

本帖被以下淘专辑推荐:

25

主题

114

帖子

1134

积分

用户组: 管理员

UID
113
精华
15
威望
31 点
宅币
854 个
贡献
29 次
宅之契约
0 份
在线时间
96 小时
注册时间
1970-1-1
发表于 2014-5-25 17:24:40 | 显示全部楼层
目前还不懂declare function的用法..据说是调用API的?
*0xAA55站SysOp
任何疑问,直接联系A5

1038

主题

2307

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
216
威望
286 点
宅币
17830 个
贡献
35614 次
宅之契约
0 份
在线时间
1706 小时
注册时间
2014-1-26
 楼主| 发表于 2014-5-25 18:41:29 | 显示全部楼层
異界型丘比 发表于 2014-5-25 09:24
目前还不懂declare function的用法..据说是调用API的?

没错。语法如下:
Private或Public或留空 Declare Sub或Function 你要起的名字 Lib "DLL文件名" Alias "它本来的名字" (参数表) 留空或As 返回值类型
举例:让主板喇叭蜂鸣的API是Beep,是Kernel32.dll提供的API。
[Visual Basic] 纯文本查看 复制代码
Declare Function 叫 Lib "kernel32.dll" Alias "Beep" (ByVal 频率 As Long, ByVal 毫秒数 As Long) As Long
然后你只需要这样调用:
[Visual Basic] 纯文本查看 复制代码
叫 1000,1000
就会听到主板产生了持续1秒的频率1000赫兹的方波蜂鸣声。

25

主题

114

帖子

1134

积分

用户组: 管理员

UID
113
精华
15
威望
31 点
宅币
854 个
贡献
29 次
宅之契约
0 份
在线时间
96 小时
注册时间
1970-1-1
发表于 2014-5-27 09:09:36 | 显示全部楼层
0xAA55 发表于 2014-5-25 18:41
没错。语法如下:
Private或Public或留空 Declare Sub或Function 你要起的名字 Lib "DLL文件名" Alias " ...

这个最终是调用beep.sys么,还是说R3的
*0xAA55站SysOp
任何疑问,直接联系A5

1038

主题

2307

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
216
威望
286 点
宅币
17830 个
贡献
35614 次
宅之契约
0 份
在线时间
1706 小时
注册时间
2014-1-26
 楼主| 发表于 2014-5-27 10:52:00 | 显示全部楼层
異界型丘比 发表于 2014-5-27 01:09
这个最终是调用beep.sys么,还是说R3的

那就不知道了

0

主题

1

帖子

15

积分

用户组: 初·技术宅

UID
530
精华
0
威望
1 点
宅币
12 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2014-10-17
发表于 2014-10-17 08:15:50 | 显示全部楼层
使用方法,看的不是很懂0.0

0

主题

1

帖子

8

积分

用户组: 初·技术宅

UID
2209
精华
0
威望
1 点
宅币
5 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-2-3
发表于 2017-2-3 00:33:47 | 显示全部楼层
看代码来的

0

主题

34

帖子

105

积分

用户组: 小·技术宅

UID
1457
精华
0
威望
2 点
宅币
67 个
贡献
0 次
宅之契约
0 份
在线时间
6 小时
注册时间
2016-1-29
发表于 2017-2-15 23:43:11 | 显示全部楼层
几个账号密码都忘了,换个QQ登陆看帖。

0

主题

4

帖子

14

积分

用户组: 初·技术宅

UID
2282
精华
0
威望
1 点
宅币
8 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-2-25
发表于 2017-2-25 19:32:41 | 显示全部楼层
这个好。。。多谢分享

0

主题

4

帖子

18

积分

用户组: 初·技术宅

UID
2317
精华
0
威望
1 点
宅币
12 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2017-3-10
发表于 2017-3-10 14:59:31 | 显示全部楼层
VB6的TIMER最多1秒 17左右  一直想弄个精确的 感谢分享

0

主题

1

帖子

8

积分

用户组: 初·技术宅

UID
2468
精华
0
威望
1 点
宅币
5 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-5-5
发表于 2017-5-5 11:55:24 | 显示全部楼层
谢谢楼主分享!

0

主题

1

帖子

9

积分

用户组: 初·技术宅

UID
2710
精华
0
威望
0 点
宅币
8 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-7-20
发表于 2017-7-20 14:39:50 | 显示全部楼层
不错不错
回复

使用道具 举报

0

主题

1

帖子

9

积分

用户组: 初·技术宅

UID
2889
精华
0
威望
0 点
宅币
8 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-9-22
发表于 2017-9-22 10:20:27 | 显示全部楼层
学习一下,谢谢分享

0

主题

17

帖子

44

积分

用户组: 初·技术宅

UID
3001
精华
0
威望
0 点
宅币
27 个
贡献
0 次
宅之契约
0 份
在线时间
2 小时
注册时间
2017-10-23
发表于 2017-10-23 19:04:46 | 显示全部楼层
好好学习
回复

使用道具 举报

2

主题

24

帖子

117

积分

用户组: 小·技术宅

UID
3003
精华
0
威望
2 点
宅币
89 个
贡献
0 次
宅之契约
0 份
在线时间
19 小时
注册时间
2017-10-24
发表于 2017-10-25 02:01:17 | 显示全部楼层
做MIDI程序用得上吧

0

主题

1

帖子

8

积分

用户组: 初·技术宅

UID
3014
精华
0
威望
1 点
宅币
5 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-10-28
发表于 2017-10-28 10:06:20 | 显示全部楼层
timer控件精度小于50毫秒

0

主题

1

帖子

9

积分

用户组: 初·技术宅

UID
3051
精华
0
威望
0 点
宅币
8 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-11-5
发表于 2017-11-5 21:06:36 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

1

主题

85

帖子

91

积分

用户组: 小·技术宅

UID
3026
精华
0
威望
1 点
宅币
3 个
贡献
0 次
宅之契约
0 份
在线时间
6 小时
注册时间
2017-10-31
发表于 2017-11-7 07:49:14 | 显示全部楼层
vb6还有人用。

0

主题

2

帖子

11

积分

用户组: 初·技术宅

UID
3143
精华
0
威望
0 点
宅币
9 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-11-28
发表于 2017-11-28 11:10:34 | 显示全部楼层
学习学习
回复

使用道具 举报

0

主题

2

帖子

11

积分

用户组: 初·技术宅

UID
3219
精华
0
威望
0 点
宅币
9 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-12-18
发表于 2017-12-18 13:49:36 | 显示全部楼层
请问在什么情况引用呢?

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2019-5-21 06:50 , Processed in 0.134250 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表