Bonjour,
J'ai besoin de modifier la valeur du bit de parité au cours de mes échanges via le port RS232 avec un périphérique particulier.
Le développement est réalisé en visual C++.
Le principe que je dois mettre en place est que je dois communiquer sur 9 bits, le bit de parité pouvant servir de 9ème bit étant donné qu'il porte l'information du mode d'adressage du périphérique.
Je dois donc envoyer une information en mode adresse (avec le 9ème bit positionné à 1), puis une trame d'information en mode data (avec le 9ème bit positionné à 0).
J'ai donc essayé après l'ouverture du port com de modifier à la volée le bit de parité en utilisant MARKPARITY (9ème bit à 1) et SPACEPARITY (9ème bit à 0) avec la fonction SetCommState.
Comme cela n'était pas concluant, j'ai regardé le résultat à oscilloscope et je constate que lorsque je change de mode de parité via SetCommState, l'envoi se fait sur la base du dernier mode SetCommState paramétré. J'ai fait plusieurs essais, si j'envoie deux données en mode adresse avec change du SetCommState entre les deux envois se font bien en mode adresse, si je fais la même chose en mode data, les deux envois sont en mode data.
Si je change de mode entre les deux, l'envoi des deux données se fait avec le dernier mode positionné.
J'ai donc tenté une pause, de réduire le buffer déclaré, une purge (PurgeComm), cela ne donne rien, j'ai toujours le même comportement au final.
Existe-t-il une fonction particulière ou une méthode pour faire cela ? Je pensais à ouvrir et fermer le port com entre chaque envoi.
Avez-vous une piste ?
Merci de votre aide.
-----