Перейти к содержанию
    

как вывести в Си вот такую строку

Добрый день подскажите плз как можно в СИ , а конкретно IAR ARM 6.30 вывести в UART вот такую строку?

{"Name": "001","ChValues": [128,64,32,255],"OnOff": 1}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в чём проблема?

Если в представлении символа " внутри строки, то так: \"

 

const char string[] = "\"Name\": \"001\",\"ChValues\": [128,64,32,255],\"OnOff\": 1";

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день подскажите плз как можно в СИ , а конкретно IAR ARM 6.30 вывести в UART вот такую строку?

{"Name": "001","ChValues": [128,64,32,255],"OnOff": 1}

 

Можно использовать sprintf:

char buffer[BUF_SIZE];
sprintf(buffer, "строка форматирования", "параметры");
SendBufferToUART(buffer);

 

Фунцию SendBufferToUART написать самому или скопипастить, если есть подходящая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в чём проблема?

Если в представлении символа " внутри строки, то так: \"

 

const char string[] = "\"Name\": \"001\",\"ChValues\": [128,64,32,255],\"OnOff\": 1";

 

Да , только у меня значения параметров переменные

т.е имя ChValues , а параметры 128,64,32,255 в процессе работы программы считаются

 

 

 

 

Изменено пользователем man1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да , только у меня значения параметров переменные

т.е имя ChValues , а параметры 128,64,32,255 в процессе работы программы считаются

Тогда нет смысла строку формировать. Разве что строку форматирования как константу.

 

sprintf(buffer, "Kakoi-to text %d, %d, %d, %d", value1, value2, value3, value4);

полученную строку выдать в UART.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делал недавно подобное, правда IAR AVR. Использовал библиотеку string.h.

Параметры преобразовать в ASCII и strcat в буфер, строки - strcpy в буфер

#define MAX_BUF 256
unsigned char buf[MAX_BUF];
char temp[4];

 bin2ascii(N1);
 strcat_P((char *)buf,(char __flash *)(" N1:"));
 strcat((char *)buf,temp);

 bin2ascii(N2);
 strcat_P((char *)buf,(char __flash *)(" N2:"));
 strcat((char *)buf,temp);

 if (send(buf,strlen((char *)buf)) <= 0) break;

Изменено пользователем oll

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На ARM можно себе позволить пользоваться и просто printf().

Нужно только прочитать документацию (EWARM_DevelopmentGuide.ENU.pdf) и реализовать функцию __write().

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...