搜索
bottom↓
回复: 15

VB-timer控件(上传源文件)

[复制链接]

出0入0汤圆

发表于 2009-11-11 17:35:33 | 显示全部楼层 |阅读模式
在我的程序里用了计时器timer控件,最大值只能设置为65535,即只有65535毫秒,哪位高手看看怎样才能让总的工作时间大于65535毫秒,并任意设定(也就是说一两个小时也是没有问题的)
点击此处下载 ourdev_502328.rar(文件大小:20K) (原文件名:解决长时间工作问题.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入22汤圆

发表于 2009-11-11 17:56:29 | 显示全部楼层
建议别这么用,一年也是一秒一秒累计起来的。

出0入70汤圆

发表于 2009-11-11 17:59:01 | 显示全部楼层
你可以这样
用计数

Option Explicit

Private CurNum As Integer

Private Sub Form_Load()
CurNum = 0
Timer1.Interval = 60000 '一分钟定时

End Sub

Private Sub Timer1_Timer()
CurNum = CurNum + 1'每达到一分钟+1

If CurNum >= 60 Then  '大于或等于60就是1个小时了,想多少就改多少
    CurNum = 0 '复位计数
    MsgBox "一个小时已到"
End If
End Sub

随手写的,不一定正确
头像被屏蔽

出0入0汤圆

发表于 2009-11-11 18:00:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2009-11-11 18:07:46 | 显示全部楼层
timeGetTime

出0入0汤圆

 楼主| 发表于 2009-11-11 18:24:49 | 显示全部楼层
不是很简单 我把源文件传上来了 大家帮看看吧 谢谢了

出0入22汤圆

发表于 2009-11-11 18:44:36 | 显示全部楼层
看了,简单,累加+计算+判断=OK

出0入0汤圆

发表于 2009-11-11 19:53:19 | 显示全部楼层
用API函数 DWORD GetTickCount(void),本次减上次得到时间差值(前提是系统连续不关机运行时间不能超过49天,因为32位溢出)。
清华大学……LZ是那里的?导师居然允许用vb6?

出0入0汤圆

 楼主| 发表于 2009-11-11 20:17:24 | 显示全部楼层
VB简单 结果倒给我搞一堆问题

出0入0汤圆

发表于 2009-11-11 20:28:58 | 显示全部楼层
timeSetEvent

出0入0汤圆

发表于 2009-11-11 21:06:23 | 显示全部楼层
2楼的程序可是典型错误噢,自己运行一下看看会怎样?
写程序有时因为程序员懒,但有时也不能懒,饭还是要一口一口吃的,Timer控件用的是16位计数器,就只能算那么多,反过来,你要做一个一年触发一次的时钟也成:一分钟一分钟地累加呗。

出0入0汤圆

发表于 2009-11-11 21:38:43 | 显示全部楼层
8楼正解,vb6很简单吗?看看advance vb吧

出0入0汤圆

 楼主| 发表于 2009-11-12 11:30:52 | 显示全部楼层
Private m_StopTime As Date

Private Sub Command7_Click()
    ...
    'Timer3.Interval = Temp15 * 1000 改为下面两句->
    Timer3.Interval = 500
    m_StopTime = DateAdd("s", Val(Temp15), Now)
    Timer3.Enabled = True
    ...
End Sub

Private Sub Timer3_Timer()
    If Now() < m_StopTime Then Exit Sub '增加这个判断'
   
    ... '到点时的执行代码'
End Sub

在别人的帮助下弄出来了

出0入0汤圆

发表于 2009-11-25 00:52:58 | 显示全部楼层
看楼主转换数据这么辛苦,看我是否可以帮你减轻一些痛苦,看招:

'功能: 十六进制字符串转字节数组
Function HexStr2Bytes(hexStr As String) As Byte()
    Dim txt As String
    Dim i   As Long
    Dim q   As Long
    Dim b() As Byte
   
    txt = Replace$(hexStr, " ", "")             '删除所有空格
   
    ReDim b(0)
    For i = 1 To Len(txt) Step 2
        ReDim Preserve b(q)                     '重定义数组大小并保留原值
        b(q) = Val("&H" & Mid$(txt, i, 2))      '转换为十进制值
        q = q + 1
    Next i
   
    HexStr2Bytes = b()
End Function

出0入0汤圆

发表于 2009-11-25 01:08:02 | 显示全部楼层
还有这招:

'功能: 字节数组转十六进制字符串
Function Bytes2HexStr(b() As Byte, Optional SpaceMark As String) As String
    Dim txt As String
    Dim i   As Long
   
    If VarType(b) <> (vbArray + vbByte) Then Exit Function      '非字节数组退出
    For i = LBound(b) To UBound(b)
        txt = txt & Right$("00" & Hex$(b(i)), 2) & SpaceMark
    Next
   
    Bytes2HexStr = txt
End Function
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 12:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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