проблема с ценностью конверсии

У меня есть две функции, которые возвращают int16_t, но мне нужно преобразовать целые числа в char* — это attiny13

Это было бы примерно так

const char* msg = "value1()"+','+"value2()"+','+"value3()"

как пример

#include "TinyRF_TX.h"

void setup(){
  // контакт передатчика по умолчанию — контакт №2. Вы можете изменить его, отредактировав Settings.h.
  setupTransmitter();
}

void loop(){

  const char* msg = "Hello from far away!";

  //функция отправки принимает массив байтов в качестве первого аргумента
  //второй аргумент — длина массива
  send((byte*)msg, strlen(msg));

  //убедимся, что между передачами есть задержка не менее TX_DELAY_MICROS
  //иначе поведение получателя будет неопределенным
  delayMicroseconds(TX_DELAY_MICROS);

, 👍0

Обсуждение

Что вы собираетесь делать с этой строкой? Если вы собираетесь отправить его куда-нибудь с помощью Something.print() или Something.write(), вам, вероятно, вообще не нужно его собирать., @Edgar Bonet

спасибо за ваш ответ, вы увидите, что мне нужно отправить эту строку с помощью tinyRF, насколько я вижу, она позволяет отправлять только строки типа pchar *, @jota mauel


1 ответ


3

Вам придется создать строку самостоятельно. Вероятно, самый простой способ — использовать функцию sprintf(), которая принимает набор аргументов и преобразует их в строку на основе заданных вами инструкций по форматированию.

По поводу статьи здесь... https://www.programmingelectronics.com/sprintf-arduino/

,

_"для attiny13"_ Код, в котором нет ничего, кроме avrlibc snprintf() для int в буфере, занимает около 1,5 КБ из доступного 1 КБ флэш-пространства на attiny13. И это без участия ядра Arduino, последовательного порта или чего-либо еще. Это может сработать для attiny85, или 45, или даже 25, у которых мало свободного места. Но для attiny13 вам придется сделать что-то более жесткое., @timemage