bonjour, je veux faire une communication avec le port série , j'ai trouver ce programme ci dessous mais ça n'a pas marché est ce que quelqu'un pourrait m'aider.( ce programme comporte deux applications: la première va envoyer des données, l'autre va les recevoir.
Code de l'appli App1
– Placez un CommControl sur le formulaire
– Placez une zone de texte et mettez la propriété MultiLine à True.
– Placez un bouton de commande
– Mettez le code suivant:
Code de l'appli App2
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
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
75
76
77
78
79
80
81
82
83
84
85
86
87 Private Sub Form_Load() Form1.Caption = "App1" With MSCOMM1 'configuration du port .CommPort=1 'On utilise le port COM1: .Handshaking = 2 'RTS .RThreshold = 1 .RTSEnable = True 'mieux pour le port COM: .Settings = "9600,n,8,1" .SThreshold = 1 .PortOpen = True 'ouverture du port End With Command1.Caption = "&Send" Text1.Text = "Ces données ont été envoyés via le port COM" End Sub Private Sub Command1_Click() MSComm1.Output = Text1.Text End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False 'on ferme le port à la fermeture de l'appli End Sub Code de l'appli App2 Placez un CommControl sur le formulaire. Placez une zone de texte et mettez la propriété MultiLine à True. Redimensionner-le pour qu'il soit assez grand pour afficher plusieurs lignes de texte. Mettez le code suivant: Private Sub Form_Load() Form1.Caption = "App2" With MSComm1 .CommPort = 2 'on utilise le port COM2: car on utilise 1 PC avec 2 ports COM: 'si vous avez 2 PC, changez en .CommPort=1 !!! .Handshaking = 2 .RThreshold = 1 .RTSEnable = True .Settings = "9600,n,8,1" .SThreshold = 1 .PortOpen = True End With Text1.Text = "" End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False 'on ferme le port quand l'appli quitte End Sub Private Sub MSComm1_OnComm() Dim InBuff As String Select Case MSComm1.CommEvent ' On effectue la gestion des erreurs (cf. le modèle ci-dessus) ' Ici, on gère en fait pas grand-chose, mais c'est pour illustrer la démarche ;) 'liste des erreurs possibles Case comEventBreak 'On a reçu un signal dinterruption (Break) 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) 'Chouette! on a reçu des données :) Case comEvReceive tampon=MSComm1.Input Call Traitement(tampon) 'traitement données Case comEvSend ' il y a des caractères à envoyer Case comEvEOF 'on a reçu le caractère EOF End Select End Sub Sub Traitement(tampon As String) 'cette procédure sert à traiter linformation reçue dans le tampon Text1.SelStart = Len(Text1.Text) Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte End Sub
– Placez un CommControl sur le formulaire.
– Placez une zone de texte et mettez la propriété MultiLine à True.
Redimensionner-le pour qu'il soit assez grand pour afficher plusieurs lignes de texte.
– Mettez le code suivant:
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
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 Private Sub Form_Load() Form1.Caption = "App2" With MSComm1 .CommPort = 2 'on utilise le port COM2: car on utilise 1 PC avec 2 ports COM: 'si vous avez 2 PC, changez en .CommPort=1 !!! .Handshaking = 2 .RThreshold = 1 .RTSEnable = True .Settings = "9600,n,8,1" .SThreshold = 1 .PortOpen = True End With Text1.Text = "" End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False 'on ferme le port quand l'appli quitte End Sub Private Sub MSComm1_OnComm() Dim InBuff As String Select Case MSComm1.CommEvent ' On effectue la gestion des erreurs (cf. le modèle ci-dessus) ' Ici, on gère en fait pas grand-chose, mais c'est pour illustrer la démarche ;) 'liste des erreurs possibles Case comEventBreak 'On a reçu un signal dinterruption (Break) 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) 'Chouette! on a reçu des données :) Case comEvReceive tampon=MSComm1.Input Call Traitement(tampon) 'traitement données Case comEvSend ' il y a des caractères à envoyer Case comEvEOF 'on a reçu le caractère EOF End Select End Sub Sub Traitement(tampon As String) 'cette procédure sert à traiter linformation reçue dans le tampon Text1.SelStart = Len(Text1.Text) Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte End Sub
Partager