Bonjour.
Je désire envoyer des trames via le protocole Modbus. J'ai donc fait 2 fonctions pour passer de la conversion hexa<==>caractère ASCII ou UNICODE et vice-versa.
Pour cette première fonction, le tableau bData peut contenir des chiffres en décimal ou en hexa, cela me renverra toujours la bonne chaîne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /// <summary> /// Convertit le champ data d'une trame modbus en chaîne de caractères. /// </summary> /// <param name="bData">Les données à convertir.</param> /// <returns>Une chaîne de caractères correctement formatée.</returns> public string convertTrameDataToString(byte[] bData) { return this.Encoding.GetString(bData, 0, bData.Length); }
Exemple: que bData contienne { 66, 111, 110, 106, 111, 117, 114, 46 } ou qu'il contienne ceci { 0x42, 0x6F, 0x6E, 0x6A, 0x6F, 0x75, 0x72, 0x2E }, la string renvoyée sera "Bonjour." donc cela est correct
Par contre, si je rentre en paramètre sData="Bonjour." mon tableau de byte[] contiendra uniquement les bons chiffres en décimal, à savoir { 66, 111, 110, 106, 111, 117, 114, 46 } or je voudrais qu'il contienne ses mêmes chiffres en hexadécimal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /// <summary> /// Convertit une chaîne de caractères en données exploitables par une trame modbus. /// </summary> /// <param name="sData">La chaîne de caractères à convertir.</param> /// <returns>Un tableau d'octets.</returns> public byte[] convertStringToTrameData(string sData) { return this.Encoding.GetBytes(sData); }
Merci d'avance à ceux qui pourront (ou qui essaieront) d'éclairer ma lanterne.
Partager