Mais uma dúvida, que deve ser simples, mas que meus conhecimentos não me deixam responder... rsss
Em meu sistema tenho algumas variáveis, dados e sensores que me entregam os valores em uma infinidade de classes.
Por exemplo, tenho dados int; float, string e char.
Preciso concatenar tudo isso em uma única variável, uma char, com 70 caracteres, para ser entregue a outro sistema.
Se eu fizer algo do tipo abaixo funciona, mas como o código é grande acaba ocupando muito espeço por conta da string smstexto:
// smstext foi declarada como string
smstexto += dt; // string
smstexto += ";"; //
smstexto += hr; // string
smstexto += ";"; //
smstexto += ch; // float (0.00)
smstexto += ";"; //
smstexto += tc; // float (0.00)
smstexto += ";"; //
smstexto += ur; // float (0.00)
smstexto += ";"; //
smstexto += pa; // float (0.00)
smstexto += ";"; //
smstexto += vd; // float (0.00)
smstexto += ";"; //
smstexto += vv; // float (0.00)
smstexto.toCharArray(textosms, smstexto.length() + 1);
// textosms tem que ser char
Alguma orientação de como usar mais char e menos string para poder poupar bytes e bytes que no meu UNO valem ouro?
Em tempo o meu sketch usa 27.580 bytes (85%) de espaço de armazenamento para programas e as variáveis globais usam 1.671 bytes (81%) de memória dinâmica. Ou seja, estou perto do meu limte... rssss
Obrigado a todos
Tags:
Tu pode tentar usar sprintf, acho que funcionaria bem nesse teu caso, tipo:
char voltageMsg[25];
sprintf(voltageMsg, "Pot Voltage = %f", volts);
Serial.println(voltageMsg);
Ou o que o pessoal recomenda bastante também, que é usar
char *dtostrf(double valor, signed char tamanhoDoBuffer, unsigned char casasDecimais, char *stringDeSaida);
Mas se for usar essa dtostrf, lembra de colocar um '\0' no final da cadeia de char (stringDeSaida).
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por