调用多媒体计时器,lTimeID = timeSetEvent(10, 0, AddressOf TimeProc, 1, 1)
Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, _
ByVal dw1 As Long, ByVal dw2 As Long)
On Error Resume Next
Form1.CommonDialog1.Action = 1
Form1.txtNoteEdit.Text = ""
Open Form1.CommonDialog1.FileName For Input As #1
If Err.Number = 0 Then
Do While Not EOF(1)
Line Input #1, inputdata
Form1.txtNoteEdit.Text = Form1.txtNoteEdit.Text + inputdata + Chr(13) + Chr(10)
Loop
Close #1
End If
End Sub
Sub EndCount()
timeKillEvent lTimeID
End Sub
我记得看到一个帖子,也是出现这个问题。是不是timepro里面不能写open 语句,那我应该怎么存储我的数据。谢谢大家
Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, _
ByVal dw1 As Long, ByVal dw2 As Long)
On Error Resume Next
Form1.CommonDialog1.Action = 1
Form1.txtNoteEdit.Text = ""
Open Form1.CommonDialog1.FileName For Input As #1
If Err.Number = 0 Then
Do While Not EOF(1)
Line Input #1, inputdata
Form1.txtNoteEdit.Text = Form1.txtNoteEdit.Text + inputdata + Chr(13) + Chr(10)
Loop
Close #1
End If
End Sub
Sub EndCount()
timeKillEvent lTimeID
End Sub
我记得看到一个帖子,也是出现这个问题。是不是timepro里面不能写open 语句,那我应该怎么存储我的数据。谢谢大家
http://www.visualbasicforum.com/showthread.php?t=126157
lTimeID = timeSetEvent(10, 0, AddressOf TimeProc, 1, 1) '调用多媒体触发器函数
End Sub
Private Sub Command2_Click()
EndCount
End Sub
下面的是在module1里的代码:
Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal _
uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, _
ByVal uFlags As Long) As Long
Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public lTimeID As Long
Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, _
ByVal dw1 As Long, ByVal dw2 As Long)
PostMessage m_hWnd, m_Msg, uID, ByVal 0
Open "f:\\1.txt" For Input As #1
If Err.Number = 0 Then
Line Input #1, inputdata
Form1.Print inputdata
Close #1
End If
End Sub
Sub EndCount()
timeKillEvent lTimeID
End Sub
谢谢
bas:
Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal _
uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, _
ByVal uFlags As Long) As Long
Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public lTimeID As Long, k As Long
Public a(10000) As String
Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, _
ByVal dw1 As Long, ByVal dw2 As Long)
k = k + 1
Form1.Caption = a(k)
If k = 10000 Then EndCount
PostMessage Form1.hwnd, uMsg, dwUser, ByVal 0
End Sub
Sub EndCount()
timeKillEvent lTimeID
End Subform1:
Private Sub Command1_Click()
lTimeID = timeSetEvent(10, 0, AddressOf TimeProc, 1, 1) '调用多媒体触发器函数
End Sub
Private Sub Command2_Click()
EndCount
End SubPrivate Sub Form_Load()
For i = 0 To 10000
a(i) = i i
Next
End Sub存数据的方法最快的还是数组,写入数组,最后一次性写进文件。BINARY 方式快些。
我就是想在采集1000个数据后存入文件,然后再调用多媒体定时器接着采集,如此循环。现在不知道应该怎么循环调用多媒体记时器。谢谢
uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, _
ByVal uFlags As Long) As Long
Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public lTimeID As Long, k As Long
Public a(1 To 1000) As String
Public Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, _
ByVal dw1 As Long, ByVal dw2 As Long)
k = k + 1
Form1.Caption = a(k)
If k = 1000 Then
Open "d:\temp.txt" For Binary As #1
Put #1, LOF(1) + 1, Join(a, vbCrLf) & vbCrLf
Close #1
k = 0
End If
PostMessage Form1.hwnd, uMsg, dwUser, ByVal 0
End Sub
Public Sub EndCount()
If lTimeID <> 0 Then timeKillEvent lTimeID
End SubPublic Sub makeaTimer(Interval As Long)
If lTimeID <> 0 Then timeKillEvent lTimeID
lTimeID = timeSetEvent(Interval, 0, AddressOf TimeProc, 1, 1)
End Sub
'form1:Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongDim i As Integer
Private Sub Command1_Click()
makeaTimer 1
End Sub
Private Sub Command2_Click()
EndCount
End SubPrivate Sub Command3_Click()
ShellExecute hwnd, "open", "d:\temp.txt", vbNullString, vbNullString, 5
End SubPrivate Sub Form_Load()
For i = 1 To 1000
a(i) = i
Next
End Sub
能不能每采1000个数据就endcount一次,发出一个flag=true。在timepro外面执行保存数据的代码。存完数据后再调用多媒体及时器取数据。但是在哪里写再调用多媒体计时器的代码呢?
多媒体及时器里面存入数据库的代码不崩溃,只是存数据库耽误时间,更是使多媒体计时器取不到1ms。麻烦您有空的时候帮我想想,谢谢