當我將 Interval 設為1時,原本因該是一秒要做1000次的計時才對,可是實際上卻只做到100次的計時。
程式碼如下:
Option Explicit
Dim TimeX As Double
Dim CountX As Long
Private Sub Command1_Click()
CountX = 0
  TimeX = Timer + 1
  Timer1.Interval = 1
  Timer1.Enabled = True
End Sub
Private Sub Form_Load()
Text1 = 1
  Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
CountX = CountX + 1
  If Timer > TimeX Then
    Debug.Print CountX
    Timer1.Enabled = False
  End If
End Sub
我目前在做自動控制的的程式,利用RS232來跟PLC作通訊。
我的程式要用 Timer 物件來做分配工作控制RS232來作通訊的動作,可是因為 TImer 計時的次數不夠,無法真正的一秒計時1000次,只能計時100次左右(上面範例測試的結果),結果通訊的效率太差太慢了。原本可以1秒內完成的工作變成要3-4秒才能完成(在Timer 中的動作多是簡單判斷以及陣列搬移)。後來我嘗試用Do..Loop迴圈來取代 Timer ,的確可以達到很好的效率,但是又發生一個問題,當我將滑鼠移到menu 選單時,會造成Do..Loop迴圈不動作了(Timer 就不會發生這種問題),也因此通訊中斷,所以這個方法也不是很好。
請問各位大大們,Timer 真的不能每秒計時1000次?或是有其他更好的替代物件?
有什麼方法可以讓Do..Loop迴圈不會因為滑鼠移動到menu選單上而停止動作?
請教曾經寫過自動控制程式的大大們是否有更好的控制方法?
PS.我去過水瓶天賞的網站看過,也寫過Mail給水大,但是都沒有回應,如果水大有看到此篇的話,能否請你指點一下,謝謝。
arrow
arrow
    全站熱搜

    vbqa 發表在 痞客邦 留言(10) 人氣()