Hello, bonne année à tous,
j'ai un problème avec le code suivant:
HardwareSerial Uart = HardwareSerial();
String message = "";
char recu;
unsigned int lng_msg;
String Mhz = "";
String Khz ="";
String Hz ="";
boolean ok = false;
void setup()
{
delay(1000);
Serial.begin(115200);
Uart.begin(9600);
}
void loop() {
while (Uart.available() > 0)
{
recu = (char)Uart.read();
message += recu;
}
if ( message != "")
{
Serial.print(message);
//traitement de message
extrait();
}
//ici eventuellement blocage transmission via hard
message ="";
}
void extrait() {
int k;
int h;
char let;
lng_msg = message.length() ;
if (lng_msg == 12) { //message complet (pas de zéros)
for (int x = 1; x < 4 ; x++) {
Mhz += message.charAt(x);}
for (int x = 5; x < 9 ; x++) {
Khz += message.charAt(x);}
for (int x = 10; x < 13 ; x++) {
Hz += message.charAt(x);}
}//fin if
if (lng_msg < 12) { //va falloir chercher
for (int x = 1; x < (lng_msg +1) ; x++) {
let = message.charAt(x);
if (let == "K") { // [color=red]--> c'est ici que j'ai le problème[/color]
k = x;
}
if (let == "H") {
h = x;
}
} //fin for
//on extrait :
for (int x = 1; x < k ; x++) {
Mhz += message.charAt(x);}
for (int x = (k+1); x < h ; x++) {
Khz += message.charAt(x);}
for (int x = (h+1); x < (lng_msg+1) ; x++) {
Hz += message.charAt(x);}
}
}
le compilateur me donne l'eereur suivante:
sketch_rs232_v2:60: error: ISO C++ forbids comparison between pointer and integer
sketch_rs232_v2.ino:69: warning: comparison between signed and unsigned integer expressions
pourtant je pensais que la fonction charAt() renvoyait un char et non un pointeur

est-ce que quelqu'un pourrait m'aider sur ce coup la svp ?
il s'agit d'extraire plusieurs parties d'un message de longueur variable celle-ci n'étant pas connue à l'avance.
le message est de la forme : xxxKxxxHxxx avec xxx pouvant prendre la valeur de 0 à 999
merci
Cordialement,
Jacques