Beste forumleden
Ik ben al een tijdje aan het knoeien met een stopwatch in Excel die bediend zou moeten worden door een bericht van de com-poort.
Ik gebruik dit voor het uitlezen van de com-poort (mscomm in vba):
In Userform-code voor openen com-poort:
In Userform-code voor lezen com-poort
In aparte module de verwerking van de com-input
Ik gebruik deze als stopwatch:
Bij het berichtje "101" op de com-poort moet de stopwatch starten en/of herstarten.
Het starten is geen probleem. Maar als de stopwatch loopt dan kan ik geen berichten binnenkrijgen via de com-poort. Pas als ik de stopwatch handmatig stop dan kan een nieuw bericht de stopwatch weer starten. Herstarten lukt dus niet.
Iemand enig idee wat hier het probleem is? En hoe op te lossen?
Ik ben al een tijdje aan het knoeien met een stopwatch in Excel die bediend zou moeten worden door een bericht van de com-poort.
Ik gebruik dit voor het uitlezen van de com-poort (mscomm in vba):
In Userform-code voor openen com-poort:
Code:
Private Sub cmdOpen_Click()
'poort openen voor ontvangen van berichten
frmcomm.RS232.CommPort = 10
'Before opening the port prepare for errors
On Error Resume Next
frmcomm.RS232.PortOpen = True
If Err = 8002 Then
MsgBox "The COMPORT is not present or defective."
Exit Sub
End If
If Err = 8004 Then
MsgBox "The selected port is already open by other program."
Exit Sub
End If
End Sub
In Userform-code voor lezen com-poort
Code:
Public Sub cmdRead_Click()
intEndsignal = 0
Do While intEndsignal = 0
Run "CommTest"
DoEvents
If intEndsignal > 0 Then Exit Do
Loop
End Sub
In aparte module de verwerking van de com-input
Code:
Public intEndsignal As Integer
Sub CommTest()
'macro voor lezen van compoort
Dim commInput
If frmcomm.RS232.InBufferCount > 0 Or intEndsignal = 0 Then
frmcomm.RS232.InputLen = 0
commInput = frmcomm.RS232.Input
Else
Exit Sub
End If
Do While frmcomm.RS232.InBufferCount = 0
DoEvents
If intEndsignal > 0 Then Exit Sub
Loop
frmcomm.RS232.InputLen = 0
commInput = frmcomm.RS232.Input
AppendText (commInput)
End Sub
Sub AppendText(strText As String)
'commInput in textbox plaatsen
With frmcomm.txtRead
.SetFocus '//required
.Value = .Value & strText & vbNewLine
.SelStart = Len(.Value)
End With
If frmcomm.txtRead.Value = 101 Then
Run ("startknop")
End If
End Sub
Ik gebruik deze als stopwatch:
Code:
Sub startknop()
frmcomm.txtRead = Empty
Range("R1").Value = True 'timer actief
Range("Q1") = "Tijden"
Range("Q65536").End(xlUp).Offset(1, 0) = Range("S1")
Range("S1").ClearContents
timing = Timer
Range("R1").Value = True
Do While Range("R1")
Range("S1") = Format(Timer - timing, "0.00")
frmcomm.Timer_userform.Value = Range("S1")
DoEvents
Loop
End Sub
Bij het berichtje "101" op de com-poort moet de stopwatch starten en/of herstarten.
Het starten is geen probleem. Maar als de stopwatch loopt dan kan ik geen berichten binnenkrijgen via de com-poort. Pas als ik de stopwatch handmatig stop dan kan een nieuw bericht de stopwatch weer starten. Herstarten lukt dus niet.
Iemand enig idee wat hier het probleem is? En hoe op te lossen?