Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как вывести в Си вот такую строку
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
man1
Добрый день подскажите плз как можно в СИ , а конкретно IAR ARM 6.30 вывести в UART вот такую строку?
{"Name": "001","ChValues": [128,64,32,255],"OnOff": 1}
SSerge
А в чём проблема?
Если в представлении символа " внутри строки, то так: \"

const char string[] = "\"Name\": \"001\",\"ChValues\": [128,64,32,255],\"OnOff\": 1";
_Артём_
Цитата(man1 @ Jul 2 2012, 22:56) *
Добрый день подскажите плз как можно в СИ , а конкретно IAR ARM 6.30 вывести в UART вот такую строку?
{"Name": "001","ChValues": [128,64,32,255],"OnOff": 1}


Можно использовать sprintf:
Код
char buffer[BUF_SIZE];
sprintf(buffer, "строка форматирования", "параметры");
SendBufferToUART(buffer);


Фунцию SendBufferToUART написать самому или скопипастить, если есть подходящая.
man1
Цитата(SSerge @ Jul 3 2012, 00:09) *
А в чём проблема?
Если в представлении символа " внутри строки, то так: \"

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


Да , только у меня значения параметров переменные
т.е имя ChValues , а параметры 128,64,32,255 в процессе работы программы считаются



_Артём_
Цитата(man1 @ Jul 2 2012, 23:21) *
Да , только у меня значения параметров переменные
т.е имя ChValues , а параметры 128,64,32,255 в процессе работы программы считаются

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

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

полученную строку выдать в UART.
skripach
Любой учебник по си поможет одолеть проблему.
Гуглить - "модификаторы printf"
oll
Делал недавно подобное, правда IAR AVR. Использовал библиотеку string.h.
Параметры преобразовать в ASCII и strcat в буфер, строки - strcpy в буфер
CODE

#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;
SSerge
На ARM можно себе позволить пользоваться и просто printf().
Нужно только прочитать документацию (EWARM_DevelopmentGuide.ENU.pdf) и реализовать функцию __write().
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.