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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
clientModbusPort.Write(frameToSend, 0, frameToSend.Length);
J'obtiens une trame coupée par tranche de 8 bytes affichés en hexa

Exemple1:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
3A 30 31 30 33 30 30 30 30 30 30 30 30 0D 0A
Exemple2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)