Bonjour à toutes et à tous,
Je re-débute dans la programmation C++ (BTS info indus il y a 10 ans).
Sans pratique depuis mon BTS, je repars prèsque à zéro.

Voici ce que je veux faire :

J'ai une platine PICBASIC reliée à un convertisseur A/N MAXIM 20170.
Le PIC communique grace à un MAX 232.

J'ai 6 mesure différentes à réaliser (6 entrées différentes du CAN) à la suite, à envoyer sur le PC et en calculer le résultat avec le PC.
Ces 6 entrées correspondent à 6 caractères envoyés sur le TXD comme ceci :
ComPort1->Events = TComEvents();
ComPort1->Connected=true; //Ouverture de port
ComPort1->ClearBuffer(true, false);
ComPort1->WriteStr('\xA5');

Le PIC réagit et envoi la valeur contenue à l'adresse \xA5 (10100101 en bin)

Pour l'instant, je ne traite qu'une seule donnée pour les essais.

Pour lire le buffer, j'ai essayé deux méthodes.

La 1ere méthode :

A la suite du WriteStr, j'ai inséré ceci :

ComPort1->ReadStr(MesureBrut[1][1], 2);
Mesure[1][1]<<MesureBrut[1][1];
Calcul();
ComPort1->Connected=false;
MesureBrut est un tableau de unsignedchar et mesure un tableau de Int pour les calculs

1ere question : Pour transformer un unsignedchar en int, << fonctionne ?
2eme question : Est-ce la bonne méthode ? j'ai vu du read et du readasync.

La 2eme méthode : Événement RxChar

void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int count)
{

ComPort1->ReadStr(MesureBrut[1][1], 2);
Mesure[1][1]<<MesureBrut[1][1];
Calcul();
Edit3->Text=MesureAffichee[1][1];
}

Avec RxChar, il ne se passe strictement rien, j'ai pourtant configurer mon port avec TriggerRxChar à true, ComPort1RxChar défini dans Event.

Je ne comprends pas comment fonctionne ce TComPort en lecture.
J'ai compris que les valeurs en RX vont dans le buffer et que readstr lit le buffer.
La seule chose que j'ai réussi à faire, c'est de mettre le readstr dans un bouton et, pendant le timeout, de déclencher manuellement à partir du pic l'envoi d'une chaine de caractères. Là, je récupère bien les données.


Ce que je voudrais, c'est avec un bouton :
Envoyer les 6 commandes à la suite
remplire le buffer avec mes 6 valeurs
les transferer dans un tableau de caracteres
changer les caractere en int pour les calculs
calculer
afficher le résultat dans des Edits


Si quelqu'un peut m'éclairer, je tourne en rond et je ne m'en sors pas.

Merci d'avance


PS : le TComPort est bien installé car le port fonctionne dans les 2 sens