Salut, je développe une appli qui va utiliser le protocole modbus en liaison série RS232. Ma classe de base dérive de la classe SerialPort. Cependant, il y a quelque chose que je comprends pas trop.
Dans mon form client, je crée un port en tant qu'instance de cette classe de base (celle de ma dll qui hérite de SerialPort). Mais quand je récupère les données de l'autre côté, j'obtiens deux choses différentes.
Si je fais ceci dans mon form client:
clientModbusPort.sendData(frameToSend);
j'appelle la fonction sendData de ma dll qui prend en paramètre un tableau de byte que j'envoie. Cette fonction pour l'instant se résume à ceci:
1 2 3 4 5
|
public void sendData(byte[] bufferSend)
{
this.Write(bufferSend, 0, bufferSend.Length);
} |
et je récupère du côté serveur la trame complète (qui doit contenir au total plusieurs dizaines de bytes)
Par contre, si j'utilise la fonction write directement dans le form client:
clientModbusPort.Write(frameToSend, 0, frameToSend.Length);
J'obtiens une trame coupée par tranche de 8 bytes affichés en hexa
Exemple1:
3A 30 31 30 33 30 30 30 30 30 30 30 30 0D 0A
Exemple2:
1 2 3
|
3A 30 31 30 33 30 30 30
30 30 30 30 30 0D 0A |
Pourquoi cette différence? (l'encodage utilisé est ASCII)
Partager