Добрый вечер, не как не могу понять как сделать. Имеется RF433 в общем то все передается нормально, но вот на приемном устройстве в переменную забить не пойму как данные передаются типа 22.44 то есть float и так код приемника Код (Text): if (vw_get_message(message, &messageLength)) // Non-blocking { Serial.print("Received: "); for (int i = 0; i < messageLength; i++) { Serial.write(message[i]); } Serial.println(); } В сиреал идут нормально данные вида Received: 0.56 вот как мне эти цифры вынести в переменную, для дальнейшей обработке?
Для преобразования строки, содержащей число с десятичной точкой в float есть функция atof(str), означенный float возвращающая. Например: float f=atof("11.12345678"); Если в приведенном выше коде message является массивом char или byte и содержит только строковое представление числа, то получается примерно так: Код (Text): message[messageLength]=0; // добавляем признак конца строки, предполагается, что место под него зарезервировано. float f=atof(message); Кроме того, никто не мешает пересылать число как есть, в его внутреннем представлении. Не видя функции передатчика сложно сказать, как оно должно быть там, но на стороне приемника все просто: Код (Text): vw_get_message(message, &messageLength) float f=0; if (messagelength==sizeof(float)) { f=*((float*)message); } else { println("Error, not float, size not correct"); }
Код (Text): if (vw_get_message(message, &messageLength)) // Non-blocking { float f=0; if (messageLength==sizeof(float)) { f=*((float*)message); Serial.println(f); } else { Serial.println("Error, not float, size not correct"); } } Так получается что просто идет 0.00 (( Код передатчика такой Код (Text): float data = 0; data = counter2*0.3125/1000*360; String strMsg = ""; strMsg += data; char msg[255]; strMsg.toCharArray(msg, 255); vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx();
Чтобы работало, нужно, чтобы обе стороны работали в одном формате. Т.е. передатчик тоже должен передавать бинарные даные Примерно так: vw_send((uint8_t *)&data, sizeof(data)); И все с точностью до опечаток.