Bonjour,
je te remercie HenrY pour ta réponse.
Tu as tout à fait raison. J'ai formulé une demande un peu trop light ... lol
Je mets à dispo le bout de code que j'utilise.
Ca servira les prochains comme moi.
La solution de l'ancien poste n'a pas fonctionné pour moi.
j'ai malgré toutes mes tentatives une erreur d'initialisation impossible de créer l'objet....
J'ai utilisé l'utilitaire MBAXP qui est gratuit mais fonctionne seule 60mn. ( shareware)
je vais regarder pour utiliser l'utilitaire d'ARKHAN. pour l'instant l'ajout de la DLL me pose PB
Public e As Integer
Public f As Integer
Private Sub CommandButton1_Click()
'Connexion en local
Mbaxp1.Connection = TCP_IP '0 = TCP/IP
Mbaxp1.IPAddr1 = 192
Mbaxp1.IPAddr2 = 168
Mbaxp1.IPAddr3 = 1
Mbaxp1.IPAddr4 = 1
Mbaxp1.TCPIPPort = 502
Mbaxp1.Timeout = 1000 ' Read timeout
Mbaxp1.ConnectTimeout = 2000 ' TCP/IP Connection timeout
Mbaxp1.LicenseKey ("xxxx-xxxx-xxxx-xxxx-xxxx-xxxx")
e = Mbaxp1.OpenConnection
e = Mbaxp1.GetLastError
If e = 0 Then
Cells(1, 4) = "Connection success"
ElseIf e = 34 Then
Cells(1, 4) = "Connection timeout"
ElseIf e <> 0 Then
Cells(1, 4) = "Connection Error"
End If
'Mbaxp1.Connection = Port4 'Port 1
'Mbaxp1.BaudRate = B9600 '9600 Baud
'Mbaxp1.DataBits = Eight '8 Data bits
'Mbaxp1.Parity = NONE 'None parity
'Mbaxp1.StopBits = One '1 Stop bits
'Mbaxp1.ProtocolMode = RTU 'RTU Mode
'Mbaxp1.Timeout = 1000
'Mbaxp1.LicenseKey ("xxxx-xxxx-xxxx-xxxx-xxxx-xxxx")
'Mbaxp1.OpenConnection
'Diris5 id 5 sur le bus RS485
e = Mbaxp1.ReadHoldingRegisters(1, 5, 50520, 2, 2000) 'tensionL1
'1 hanlde, 5 id diris, 50520 code en decimal de la lecture de la tension sous diris, 2 nombre
'de mots, 2000 délai de rafraichissement)
‘[http://sebastienguillon.com/test/javascript/convertisseur.html]
‘ site de conversion de l’hexa en decimal
'MBAXP : lien sur internet facile à trouver : a rajouter dans les références après l'avoir
' copié dans le dossier SYSTEM32.
Mbaxp1.UpdateEnable (1)
End Sub
Private Sub CommandButton2_Click()
Mbaxp1.CloseConnection
End Sub
Private Sub Mbaxp1_ResultError(ByVal Handle As Integer, ByVal Error As Integer)
Cells(1, 5) = Error
End Sub
Private Sub Mbaxp1_ResultOk(ByVal Handle As Integer)
If Handle = 1 Then
' Be sure Excel is ready for input
If Application.Ready Then
Cells(3, 2) = Mbaxp1.Register(1, 1) / 1000
Cells(3, 3) = "Success"
End If
End If
End Sub
Private Sub Mbaxp2_ResultOk(ByVal Handle As Integer)
End Sub
c