1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| Public intPortID As Integer ' Ex. 1, 2, 3, 4 pour COM1 - COM4
Public lngStatus As Long
Public nCount As Long
Public strError As String
Public LineStatus As Boolean
Public TimerON As Boolean
Sub InitTest()
' Initialiser les communications
intPortID = 24 ' port COM24
lngStatus = CommClose(intPortID)
If lngStatus <> 0 Then
' Erreur fermeture du port COM
lngStatus = CommGetError(strError)
MsgBox "Erreur fermeture Port COM : " & strError
Exit Sub
End If
lngStatus = CommOpen(intPortID, "\\.\COM" & CStr(intPortID), _
"baud=9600 parity=N data=8 stop=1")
If lngStatus <> 0 Then
' Erreur d'ouverture du port COM
lngStatus = CommGetError(strError)
MsgBox "Erreur ouverture Port COM : " & strError
Exit Sub
End If
' Mettre le RTS à 1
lngStatus = CommSetLine(intPortID, LINE_RTS, True)
TimerON = True
'démarrage du Timer qui lit le CTS toutes les secondes
Application.Ontime EarliestTime:=Now + TimeValue("00:00:01"), _
Procedure:="TestCTS", Schedule:=TimerON
End Sub
Public Sub TestCTS()
On Error GoTo FermePort
' Tester le CTS
If TimerON Then
lngStatus = CommGetLine(intPortID, LINE_CTS, LineStatus)
Debug.Print LineStatus
If LineStatus Then EtatContact = "Fermé" Else: EtatContact = "Ouvert"
ActiveSheet.Range("B3") = EtatContact
ActiveSheet.Range("B4") = nCount
ActiveSheet.Range("B6") = TimerON
nCount = nCount + 1
Else
Call CommClose(intPortID)
End If
'on réarme le timer ou pas
Application.Ontime EarliestTime:=Now + TimeValue("00:00:01"), _
Procedure:="TestCTS", Schedule:=TimerON
Exit Sub
FermePort:
Call CommClose(intPortID)
End Sub |
Partager