Voici la dernière partie du code pour le ModBus en VB.
Public Function ReadDecoder(ByVal ligne As String)
'Passage de la trame en Array
Dim MyBytes As Array = Split(ligne, "/")
Dim i, partie1, partie2 As Integer
Dim grille As ListView
Dim ReponseValeur As String
Dim MyValue As Array
'Remplissage table
Dim _AliasDBData As New GTCDataSet.AliasDBDataTable
Dim _AliasDBAdapter As New GTCDataSetTableAdapters.AliasDBTableAdapter
_AliasDBAdapter.Fill(_AliasDBData)
If MyBytes(1) = "" Then 'Erreur de retour Trame
Return 0
Else 'Pas d'erreur
For i = 4 To UBound(MyBytes) - 1
If i / 2 = Int(i / 2) Then 'nombre pair
partie1 = MyBytes(i - 1)
partie2 = MyBytes(i)
End If
Next i
End If
Return 0
End Function
La trame ModBus de retour est composé de plusieurs données :
{num esclave} {fonction} {nbr de valeurs} {valeur 1, partie 1} {valeur 1, partie 2}…{CRC1}{CRC2}
Pour avoir valeur 1 en entier, il faut combiner les deux parties en hexadécimale, puis reconvertir en décimal. C’est pour cette raison qu’on récupère les nombres paires et que pour chaque « i » pair, on récupère deux valeurs.
La traitement des données est à votre charge. Mais par exemple, quand vous demandez en trame X mots à partir de l’adresse Y, vous savez que pour i = 4, adresse = Y.
Si vous avez besoin d’infos supplémentaires, n’hésitez pas à demander.
merci beaucoup c’est très intéressant la série des tuto que vous avez faite , j’en ai vraiment besoin. Vous recevrez plein de questions de ma part!
bonne continuation