Envoi d'une requête sur un port Comm
Bonjour,
Alors lors de mon projet je doit envoyer une requête a un pont bascule branché a mon pc sur le port Comm2 afin qu'il me retourne un poids . j'ai trouver un code sur un ancien post lien ici : https://www.developpez.net/forums/d5...uete-port-usb/
Mais mon prgrame me retourne l'erreur suivante : Visualisation: Erreur Runtime => screen/1 page aceuil.scc : ID Objet = 5 : Objet requis: 'MSComm2' (-2146827864).
Voila mon code
Code:
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| '------ Requette pont bascule
' Réservation des variables locales
Dim varOctet ,MSComm2
Dim lngPtOctet
' Traite chaque événement ou erreur
Select Case MSComm2.CommEvent
' Événements
Case comEvCD ' Modification dans la ligne détection de porteuse
Case comEvCTS ' Modification dans la ligne prêt à émettre
Case comEvDSR ' Modification dans la ligne Modem prêt
Case comEvRing ' Modification dans l'indicateur d'appel
Case comEvReceive ' Nombre de caractères indiqué par la propriété RThreshold reçus
While (MSComm2.InBufferCount <> 0)
varOctet = MSComm2.Input
For lngPtOctet = 0 To LenB(varOctet) - 1
If (lngLongRXD < UBound(bytTrameRXD)) Then
bytTrameRXD(lngLongRXD) = CByte(varOctet(lngPtOctet))
lngLongRXD = lngLongRXD + 1
Else
strBilanComm = strLsrErrRXDBuf
lngCptErrRXDBuf = lngCptErrRXDBuf + 1
End If
Next
Wend
Case comEvSend ' Nombre de caractères indiqué par la propriété SThreshold dans le tampon de transmission.
Case comEvEOF ' Caractère de fin de fichier trouvé dans le flux en entrée
' Erreurs
Case comEventBreak ' Un signal d'arrêt a été reçu.
Case comEventCDTO ' Erreur de délai d'attente détection de porteuse.
Case comEventCTSTO ' Erreur de délai d'attente prêt à émettre.
Case comEventDSRTO ' Erreur de délai d'attente Modem prêt.
Case comEventFrame ' Erreur de trame
Case comEventOverrun ' Données perdues.
Case comEventRxOver ' Dépassement de la capacité du tampon de réception.
Case comEventRxParity ' Erreur de parité.
Case comEventTxFull ' Tampon de transmission plein.
Case comEventDCB ' Erreur inattendue lors de l'extraction du bloc de contrôle de périphérique]
Case Else
' Événement ou erreur non géré(e) !!!
End Select
If MSComm2.PortOpen = True Then MSComm2.PortOpen = False
MSComm2.CommPort = 1
MSComm2.Settings = "19200,E,8,1"
MSComm2.PortOpen = True
MSComm2.InputLen = 1
' Raz du buffer d'entrée de la liaison série
varOctet = MSComm2.Input
'envoi de la Requête distributeur n°1
A = "01 09 30 31 10 39 39 4D 35 34 0D 0A"
For i = 1 To Len(A) - 1 Step 3
MSComm2.Output = Chr(Val("&H" + Mid(A, i, 2)))
Next
DoEvents
'If MSComm2.PortOpen = True Then MSComm2.PortOpen = False
Unload Me
'Si Requête = distributeur 1
If A = "01 09 30 31 10 39 39 4D 35 34 0D 0A" Then
'envoi de la Requête par défaut
A = "01 10 00 10 00 01 02 00 00 A4 C0"
For i = 1 To Len(A) - 1 Step 3
MSComm2.Output = Chr(Val("&H" + Mid(A, i, 2)))
Next
DoEvents
'If MSComm2.PortOpen = True Then MSComm2.PortOpen = False
Unload Me
End If |
Auriez vous une solution a me conseiller ?
Merci d’avance