Строки
- Войдите на сайт для отправки комментариев
Ср, 05/02/2014 - 17:27
Вывожу несколько переменных в com порт примерно так:
Serial.print("SN:"); Serial.print(num_package); Serial.print(";");
Serial.print("PRS="); Serial.print(press); Serial.print(";");
Serial.print("TMP="); Serial.print(temp); Serial.print(";");
Serial.print("ALT_BAR="); Serial.print(alt_bar); Serial.print(";");
Serial.println();
а хотелось бы так:
char* sn_str = "SN:" + num_package + ";PRS=" + press + ";TMP=" + temp + "ALT_BAR=" + alt_bar ";";
но так не работает:
error: invalid operands of types 'const char*' and 'const char [6]' to binary 'operator+'
пробывал так:
float press = 1.1, temp = 1.2, alt_bar = 1.3;
char report[80];
snprintf(report, sizeof(report), "SN:%6d; %6d; %6d;",
press, temp, alt_bar);
Serial.println(report);
видемо самый рациональный способ, но в сериал выдает
SN:-13107; 16268; -26214;
подскажите как сделать лучше?
вещественные переменные вы через sprintf не выведете, не сработает. надо выводить отдельно целую и дробную части как целые числа, а между ними - точку
подскажите как сделать лучше?
обычно самый лучши способ это тот, который работает. чем не устраивает вариант, который вы сначала привели?
а хотелось бы так:
Ну так пожалуйста String
обычно самый лучши способ это тот, который работает. чем не устраивает вариант, который вы сначала привели?
Тем что мне нужна на выходе одна переменная (sn_str), я ее потом в функцию засовываю=)
Ну так пожалуйста String
String sn_str = "SN:" + num_package + ";PRS=" + press + ";TMP=" + temp + "ALT_BAR=" + alt_bar ";";
пробывал, не работает, ошибка:
обычно самый лучши способ это тот, который работает. чем не устраивает вариант, который вы сначала привели?
Тем что мне нужна на выходе одна переменная (sn_str), я ее потом в функцию засовываю=)
Ну так пожалуйста String
String sn_str = "SN:" + num_package + ";PRS=" + press + ";TMP=" + temp + "ALT_BAR=" + alt_bar ";";
пробывал, не работает, ошибка:
String sn_str = String("SN:") + num_package + ";PRS=" + press + ";TMP=" + temp + "ALT_BAR=" + alt_bar ";";String sn_str = String("SN:") + num_package + ";PRS=" + press + ";TMP=" + temp + "ALT_BAR=" + alt_bar ";";выдает
и куча " note: StringSumHelper& operator+(const StringSumHelper&, unsigned char) "
выдает:
Попробывал так:
int num_package = 1; float press = 1.1, temp = 1.2, alt_bar = 1.3; void setup(){ Serial.begin(9600); } void loop(){ String sn_str = "SN:"; sn_str = sn_str + num_package; sn_str = sn_str + "PRS:"; sn_str = sn_str + (char)press; sn_str = sn_str + "TMP:"; sn_str = sn_str + (char)temp; sn_str = sn_str + "ALT:"; sn_str = sn_str + (char)alt_bar; Serial.println(sn_str); delay(500); }на выходе получил
Почему так?
Попробывал так:
попробОвал
Наверное, потому, что приведение типа (char) вырывает из переменной типа float только один первый байт.