Bonjour,
Je dois communiquer avec un compteur, en Modbus depuis hier et grâce à vous (le forum), j'arrive à envoyer des trames vers ce compteur, le problème est que les Trames que je reçois en réponse sont incomplètes, et elles varient (je ne reçois pas toujours le même nombre d'octet .
Je vous avoue que la j'ai vraiment besoin de vos lumières, car le fabricant m'a envoyé un petit .exe qui permet de tester la communication, et avec son programme la je reçois toujours la bonne Trame(complete !)
Voici les 2 codes, pour envoyer et pour recevoir.
Code :
Code vb : 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 Option Explicit Private Sub Form_Load() Form1.Caption = "App2" With MSComm1 .CommPort = 1 'on utilise le port COM1 .Handshaking = 2 .RThreshold = 1 .RTSEnable = True .Settings = "9600,n,8,1" .SThreshold = 1 .PortOpen = True End With Text1.Text = "" Check1.Value = False Command1.Caption = "&Send" End Sub Private Sub Command1_Click() Dim i As Integer Dim st As String Dim buffer As String Text1.Text = "" st = "0503072B0002B4F3" 'Pour avoir la somme des KWh For i = 1 To Len(st) Step 2 buffer = buffer & Chr(Val("&h" & Mid(st, i, 2))) Next MSComm1.Output = buffer End Sub Private Sub Command2_Click() Dim stRecue, st, st2, st3 As String Dim i As Integer stRecue = Text1.Text 'la chaine récupéré For i = 1 To Len(stRecue) st = st & Right("0" & Hex(Asc(Mid(stRecue, i, 1))), 2) Next MsgBox st 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 Tampon As String Select Case MSComm1.CommEvent Case comEvReceive Tampon = MSComm1.Input Call Traitement(Tampon) 'traitement données End Select End Sub Sub Traitement(Chaine As String) 'cette procédure sert à traiter linformation reçue dans le tampon Text1.SelStart = Len(Text1.Text) Text1.SelText = Chaine 'ici, on affiche le résultat dans un champ de texte End Sub
Pour la documentation du compteur (ICI)
Pour la documentation du convertisseur (ICI)
Partager