Я новичок в C (вместо этого я использую Delphi / паскаль) и пытаюсь получить некоторые значения датчика температуры и сделать их равными / фиксированным размером для отправки в MCU (с Arduino IDE - поэтому мне приходится работать с C).
Длина данных (strlen ()) может быть 3 (например, 5,3, 0,9, 0,0 и т. Д.), 4 (например, -4,2, 19,8 и т. Д.) Или 5 (например, -15,6) в зависимости от датчика температуры икод ниже;
char value[5]; // must be char in order to send to MCU
if ((temp_data>=temp_max){
fix_size(value,true); //Error part. writes: "EEEEE" to reach fix size: 5
} else {
dtostrf(temp_data, 0, 1, value);
fix_size(value,false); //I'll use this to send data to screen later..
}
Мне нужно исправить размер данных (для этого я пытаюсь добавить нули в конце), а Iam пытается сделать ниже;
char fix_size(char temp_char[5],bool err=false){
if(err){
temp_char= "EEEEE";
Serial.println(temp_char);
return temp_char;
}
int num = strlen(temp_char);
// If strlen is 5 then it is OK and strlen cannot be 2 and 1 because of my temp sensor data processing (dtostrf(temp_data, 0, 1, value)) so I only need to take care 3 and 4
switch (num) {
case 3:
temp_char[3] = "0";
temp_char[4] = "\0";
//0.0 would become 0.000
//5.4 would become 5.400
break;
case 4:
temp_char[4] = "\0";
//15.2 would become 15.20
//-7.4 would become -7.40
break;
// -15.3 is in right format already
} | E.g. I tried for 15.4 and get
Serial.println(temp_char[0]); | 1
Serial.println(temp_char[1]); | 5
Serial.println(temp_char[2]); | .
Serial.println(temp_char[3]); | 4
Serial.println(temp_char[4]); | ؟
return temp_char;
}
Но, когда я запускаю приложение, я беру странные символы в качестве вывода в ArduinoIDE (обратные знаки вопроса, квадраты и т. Д.).В чем может быть проблема? Как я могу решить эту проблему?или можешь предложить лучший способ?спасибо прямо сейчас ..
ПРИМЕЧАНИЕ: Происхождение этого вопроса (проблемы) больше относится к встраиваемым системам, и я задал еще один вопрос по электронике StackExchage в качестве ссылки на этот вопрос (Если вы хотите / нужно Вы можете прочитать здесь )