国产三级在线看完整版-内射白嫩大屁股在线播放91-欧美精品国产精品综合-国产精品视频网站一区-一二三四在线观看视频韩国-国产不卡国产不卡国产精品不卡-日本岛国一区二区三区四区-成年人免费在线看片网站-熟女少妇一区二区三区四区

儀器網(wǎng)(yiqi.com)歡迎您!

| 注冊2 登錄
網(wǎng)站首頁-資訊-話題-產(chǎn)品-評測-品牌庫-供應(yīng)商-展會-招標-采購-知識-技術(shù)-社區(qū)-資料-方案-產(chǎn)品庫-視頻

問答社區(qū)

vb計時器為何有如此大的誤差

榛橀粯馃惏 2013-07-08 01:19:25 576  瀏覽
  • 我用vb寫了一個關(guān)機器(秒為單位),在form1中畫了兩個text框,一個命令按鈕,一個表timer2,然后寫了如下代碼 Dim a As Single '聲明變量a Private Sub Command1_Click() '按鈕單擊事件 a = Val(Text1.Text) ... 我用vb寫了一個關(guān)機器(秒為單位),在form1中畫了兩個text框,一個命令按鈕,一個表timer2,然后寫了如下代碼 Dim a As Single '聲明變量a Private Sub Command1_Click() '按鈕單擊事件 a = Val(Text1.Text) ' Timer2.Interval = 100 ' Timer2.Enabled = True End Sub Private Sub Form_Load() Timer2.Enabled = False End Sub Private Sub Timer2_Timer() a = a - 0.1 '每0.1秒示數(shù)減小0.1 Text2.Text = Str(a) If Val(Text2.Text) <= 0 Then Timer2.Enabled = False Shell "shutdown -s -t 300" '計時結(jié)束5分鐘后關(guān)機 Text2.Text = "時間到!" Timer1.Enabled = False '結(jié)束計時 End If End Sub 運行時我用秒表掐了一分鐘,用vb做的計時器竟然比秒表慢將近10秒,并且過程中剩余時間出現(xiàn)了一大串小數(shù) 怎么回事?是不是由于計時器0.1秒就更新一次,時間更新間存在誤差? 那么這個計時器該怎么改? 展開

參與評論

全部評論(3條)

  • wszaizhj 2013-07-09 00:00:00
    我試過也是!

    贊(20)

    回復(0)

    評論

  • wenqsrose 2013-07-09 00:00:00
    將下面程序粘貼到記事本中,保存后將文件的類型.txt改成.vbs on error resume next set X = wscript.createobject("wscript.shell") X.run "cmd.exe /c shutdown -r -t 600 -c ""十分鐘內(nèi)輸入不正確將關(guān)機!",0,True do while Y<>"password" Y = inputbox ("請輸入正確密碼","輸入窗口","",5000,7000) '清空輸入框,位置在5000,7000處 msgbox "【"+Y+"】",0,"輸入的密碼是:" loop X.run "cmd.exe /c shutdown -a",0,True msgbox "輸入正確!"

    贊(11)

    回復(0)

    評論

  • 吃出身材 2013-07-09 00:00:00
    因為這個涉及到兩方面,操作系統(tǒng)和程序本身。每個進程都有自己的時間片,時間片用完了就暫停執(zhí)行這個進程的代碼。另一方面,Private Sub Timer2_Timer() 里面的代碼看似不多,其實要我們從底層一點點寫封裝上來,那代碼可是相當多。 假如你讓它在0.1s內(nèi)執(zhí)行0.11s的代碼,很明顯辦不到。執(zhí)行Timer2_Timer()還沒完,如果定時器時間又到了,要么這個時間到 被忽略,要么被推到下次,不管哪種情況都造成時間誤差累積。 所以,這兩個原因一起造成Timer2過程里面的代碼不能在0.1ms內(nèi)完成。 系統(tǒng)方面,假設(shè)你的程序的時間片20ms,有40個進程(不包括隱藏進程)。這樣下來在39×20ms內(nèi), Timer2_Timer()不被執(zhí)行,等到進程被切換到時才執(zhí)行。 程序方面,vb是基于對象的,調(diào)試時是解釋執(zhí)行的,速度不快,編譯后也要依賴運行庫。一個小控件其實是一個龐大的東東,讀取、修改它的一個屬性,實際是一層又一層的調(diào)用封裝的函數(shù)。 所以你的0.1s要它完成不簡單的事情,對它很苛刻。 我用vb時,一般都不敢把timer控件的Interval設(shè)的很小。也不敢讓他完成很復雜的任務(wù)。

    贊(5)

    回復(0)

    評論

熱門問答

vb計時器為何有如此大的誤差
我用vb寫了一個關(guān)機器(秒為單位),在form1中畫了兩個text框,一個命令按鈕,一個表timer2,然后寫了如下代碼 Dim a As Single '聲明變量a Private Sub Command1_Click() '按鈕單擊事件 a = Val(Text1.Text) ... 我用vb寫了一個關(guān)機器(秒為單位),在form1中畫了兩個text框,一個命令按鈕,一個表timer2,然后寫了如下代碼 Dim a As Single '聲明變量a Private Sub Command1_Click() '按鈕單擊事件 a = Val(Text1.Text) ' Timer2.Interval = 100 ' Timer2.Enabled = True End Sub Private Sub Form_Load() Timer2.Enabled = False End Sub Private Sub Timer2_Timer() a = a - 0.1 '每0.1秒示數(shù)減小0.1 Text2.Text = Str(a) If Val(Text2.Text) <= 0 Then Timer2.Enabled = False Shell "shutdown -s -t 300" '計時結(jié)束5分鐘后關(guān)機 Text2.Text = "時間到!" Timer1.Enabled = False '結(jié)束計時 End If End Sub 運行時我用秒表掐了一分鐘,用vb做的計時器竟然比秒表慢將近10秒,并且過程中剩余時間出現(xiàn)了一大串小數(shù) 怎么回事?是不是由于計時器0.1秒就更新一次,時間更新間存在誤差? 那么這個計時器該怎么改? 展開
2013-07-08 01:19:25 576 3
關(guān)于 VB 計時器 Z大允許時間的問題
我想做一個古代時辰的程序, 一共12個時辰,我計劃用12張圖片輪番顯示,可是計時器Z大只能記時65535毫秒,我想讓圖片2小時(7200秒)換一張,需要怎么來實現(xiàn)?。? 請高手指教!
2014-01-07 22:07:23 404 1
vb停止計時器
我想做一個程序,讓計時器隨機取一個數(shù)并可以讓計時器過5秒后自動停止下來。 已編寫代碼: Private Sub Timer1_Timer() Randomize s = Int(Rnd * 16 + 24) Text1.Text = s End Sub 嗯~~interval的值為10 誰能幫我完成過“5秒后自動停止下來”這個... 我想做一個程序,讓計時器隨機取一個數(shù)并可以讓計時器過5秒后自動停止下來。 已編寫代碼: Private Sub Timer1_Timer() Randomize s = Int(Rnd * 16 + 24) Text1.Text = s End Sub 嗯~~interval的值為10 誰能幫我完成過“5秒后自動停止下來”這個步驟??! 不要手動停止(什么timer1.enabled=false的)。 我是vb6.0的 展開
2013-10-02 11:50:40 298 1
vb正計時器
做一個這樣的格式的 00:00:00 往上計時 dim a as date a=format(00:00:00 AM) text1.text=a timer.interval=1000 a=a+1 我純新手 只知道大概是這樣一個格式 請幫忙修改下。 Z好每句后面加上說明 Z好修改我這上面的吧
2011-11-04 04:28:53 409 2
VB計時器interval
我把interval的屬性調(diào)到10,定義一個靜態(tài)變量t,Timer1.Timer事件為t=t+1,結(jié)果一秒內(nèi)t自加100。但我把interval設(shè)為1,結(jié)果一秒內(nèi)t自加甚至不到1,這是什么情況?如何解決?
2010-06-13 08:45:36 366 4
VB計時器怎么用
 
2009-11-24 00:38:51 480 3
vb 如何重置計時器
vb 如何重置計時器
2010-09-06 07:36:56 489 1
VB 計時器 與 進度條
我想把進度條弄成7秒,然后打開窗口form2 代碼該怎樣寫?
2018-12-04 10:37:13 514 0
vb計時器設(shè)計圖片左右往復運動vb代碼
 
2013-06-28 02:23:36 467 1
vb怎么設(shè)計簡單的計時器
用vb中的timer控件,設(shè)計計時器。用三個命令按鈕,分別為:開始、暫停、結(jié)束。再用一個標簽或者文本框顯示就好了。 各位大俠教教,我初學。
2011-05-23 14:16:03 368 2
求vb計時器編程代碼
編寫程序,用計時器按秒計時。在窗體上畫一個計時器控件和一個標簽,運行程序后,在標簽內(nèi)顯示經(jīng)過的秒數(shù),并響鈴
2018-02-26 21:39:20 500 1
怎樣用VB做一個秒表計時器
兩個按鈕,一個開始鍵 一個清零鍵 ,想要點擊開始鍵以后 開始鍵變成 結(jié)束 文本也改成結(jié)束 按清零鍵后變回開始 還想添加一個開始的鍵盤快捷鍵(開始和結(jié)束能夠公用這個快捷鍵) 求大神指教
2018-11-28 05:21:49 390 0
磁鐵的磁力究竟是什么?為何有如此性質(zhì)的力?
 
2014-04-26 16:54:10 487 3
vb 計時器怎么控制隨機數(shù)的產(chǎn)生
題目是:程序運行是,單擊“開始”按鈕,每秒鐘產(chǎn)生3個1到6的隨機數(shù)字 單擊“暫停”按鈕,終止隨機數(shù)的產(chǎn)生。 隨機數(shù)的代碼我會,但不知道計時器的代碼怎么寫 Private Sub Command1_Click() Cls Dim a(3) As Integer For l = 1 To 3 x = Int(Rnd * 10)... 題目是:程序運行是,單擊“開始”按鈕,每秒鐘產(chǎn)生3個1到6的隨機數(shù)字 單擊“暫停”按鈕,終止隨機數(shù)的產(chǎn)生。 隨機數(shù)的代碼我會,但不知道計時器的代碼怎么寫 Private Sub Command1_Click() Cls Dim a(3) As Integer For l = 1 To 3 x = Int(Rnd * 10) Debug.Print x For i = 1 To 6 If i = x Then Exit For End If Next i Next l Label1.Caption = Int((Rnd * 6) + 1) Label2.Caption = Int((Rnd * 6) + 1) Label3.Caption = Int((Rnd * 6) + 1) End Sub Private Sub Timer1_Timer() End Sub 誰能幫寫下代碼啊 展開
2009-12-12 01:28:18 493 4
用vb的timer做一個計時器程序
包括開始、停止、重置,共3個按鈕 計時單位精確到0.01秒 重置后,再按開始是從0開始重新計時的 計時中會溢出錯誤? 請高手寫一下代碼,特別是重置后,我自己做的時候不能重新從0開始計時,而是又接著停止時的時間繼續(xù)下去!!!
2014-07-15 03:29:59 578 2
如何用VB程序做計時器?
 
2017-11-23 14:26:59 517 1
VB 如何讓計時器重新計時
Dim a As Integer Private Sub Command1_Click() Timer1.Enabled = True Timer1.Interval = 500 End Sub Private Sub Command2_Click() Timer1.Enabled = False Timer start End Sub Private Sub Timer1_Timer() a = a + 1 Text1 = a End S... Dim a As Integer Private Sub Command1_Click() Timer1.Enabled = True Timer1.Interval = 500 End Sub Private Sub Command2_Click() Timer1.Enabled = False Timer start End Sub Private Sub Timer1_Timer() a = a + 1 Text1 = a End Sub 展開
2010-06-12 12:32:41 556 4
汞作為一種金屬為何同其它金屬在物理性質(zhì)上有如此大的區(qū)別?
 
2006-05-24 04:31:28 326 2
VB 用計時器顯示日期時間上下午
 
2011-11-21 19:02:09 438 2

4月突出貢獻榜

推薦主頁

最新話題