Bonsoir à nouveau![]()
Voilà j'ai un traitant qui est appelé sur événement sur un port COM :
J'imaginais que sur succès d'un MSComm1.Input je vais dans le traitant comEvReceive, et que dans le cas d'un MSComm1.Output je vais dans le traitant comEvSend.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Sub MSComm1_OnComm() ' On attend une activité sur le port Select Case MSComm1.CommEvent ' Liste des erreurs possibles Case comEventBreak ' On a reçu un signal dinterruption (Break) connected = False Case comEventCDTO ' Timeout de la porteuse Case comEventCTSTO ' Timeout du signal CTS (Clear To Send) Case comEventDSRTO ' Timeout du signal de réception Case comEventFrame ' Erreur de trame Case comEventOverrun ' Des données ont été perdues Case comEventRxOver ' Tampon de réception saturé Case comEventRxParity ' Erreur de parité Case comEventTxFull ' Tampon denvoi saturé Case comEventDCB ' Erreur de réception DCB (jamais vu) ' Liste des événements possibles qui sont, eux, normaux Case comEvCD ' Changement dans la broche CD (porteuse) Case comEvCTS ' Changement dans broche CTS Case comEvDSR ' Changement dans broche DSR (réception) Case comEvRing ' Changement dans broche RING (sonnerie) Case comEvSend ' Il y a des caractères à envoyer Case comEvReceive ' Si on reçoit des données LabelStatut.Caption = "Carte UCM connectée sur le port COM spécifié" LabelStatut.ForeColor = &H8000& connected = True Tampon = MSComm1.Input Call Traitement(Tampon) ' Routine de traitement Case comEvEOF ' On a reçu le caractère EOF End Select End Sub
Or j'ai constaté que dans le cas d'un MSComm1.Output le code relatif au cas comEvReceive est exécuté ! (même si la carte n'est pas branchée). Pourquoi ?
Je serai tenté de dire que c'est parce qu'il manque un break à la fin du case, mais je n'ai trouvé aucun exemple faisant usage d'une telle instruction...
Partager