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