|
нужно передать строку с замешанными данными |
|
|
|
Feb 12 2016, 14:32
|
Профессионал
    
Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079

|
под линукс надо из кода выполнить Цитата system("i2cget -f -y 0 0x3a"); но значение 0x3a я хочу сделать переменной. Первое, что приходит- это массив символов. Цитата char i2cset_str[] = {'i', '2', 'c', 's', 'e', 't', ' ', '-', 'f', ' ', '-', 'y', '0', 0x3a, 0x40, 0x27, '\0'}; Но не работает, и похоже, что не верно. Как правильно делать?
|
|
|
|
|
Feb 12 2016, 21:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079

|
Пока все тут- вопрос по теме- не очень получается этот spintf заюзать мне надо как-то так- это в отладке я вижу в вотче Цитата char str[40]; sprintf_s(str, "%s %s", "i2cset -f -y 0", "0x3a"); только вот вместо последнего 0x3a надо переменную подсунуть, которая имеет это значение. Как раз такой вывод меня устроит- как строку. Мне в команде system (... ) надо написать 0x3a. решил Цитата sprintf_s(str, "%s 0x%x", "i2cset -f -y 0", 0x3a);
|
|
|
|
|
Feb 14 2016, 16:21
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(andrew_b @ Feb 13 2016, 10:10)  Код [andrew@myhost ~]$ man _Printf No manual entry for _Printf Для IAR: Код extern "C" int _Printf(void *(*)(void *, int), void *, const char *, va_list *); uint GrAPI::Print(int x, int y, char const *s, ...) { va_list v; va_start(v, s); GrPrintData data; data.x = x; data.y = y; data.width_gap = 0; _Printf(PrintPutc, (void *)&data, s, &v); va_end(v); return data.width; } Для CCS подобная функция: Код #if !defined(NOFLOAT) && !defined(MINIMAL) extern "C" int _printfi(char **_format, va_list _ap, void *_op, int (*_outc)(char, void *), int (*_outs)(char *, void *, int)); #elif defined(NOFLOAT) extern "C" int _printfi_nofloat(char **_format, va_list _ap, void *_op, int (*_outc)(char, void *), int (*_outs)(char *, void *, int)); #elif defined(MINIMAL) extern "C" int _printfi_minimal(char **_format, va_list _ap, void *_op, int (*_outc)(char, void *), int (*_outs)(char *, void *, int)); #endif Возможности - намного больше чем у sprintf или snprintf. В run-time библиотеке IAR все функции семейства printf работают через _Printf()
|
|
|
|
|
Feb 14 2016, 16:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079

|
Пробую кодеблокс. Какой компилятор установить надо, чтобы из-под чтобы компилить код для железки арм Линукс? Само ядро я собирал линаро -gcc. Но вроде на сайте кодеблокс пишут,что нельзя для линукса линаро поставить. Цитата(jcxz @ Feb 14 2016, 19:21)  Для IAR: Код extern "C" int _Printf(void *(*)(void *, int), void *, const char *, va_list *); uint GrAPI::Print(int x, int y, char const *s, ...) { va_list v; va_start(v, s); GrPrintData data; data.x = x; data.y = y; data.width_gap = 0; _Printf(PrintPutc, (void *)&data, s, &v); va_end(v); return data.width; } Для CCS подобная функция: Код #if !defined(NOFLOAT) && !defined(MINIMAL) extern "C" int _printfi(char **_format, va_list _ap, void *_op, int (*_outc)(char, void *), int (*_outs)(char *, void *, int)); #elif defined(NOFLOAT) extern "C" int _printfi_nofloat(char **_format, va_list _ap, void *_op, int (*_outc)(char, void *), int (*_outs)(char *, void *, int)); #elif defined(MINIMAL) extern "C" int _printfi_minimal(char **_format, va_list _ap, void *_op, int (*_outc)(char, void *), int (*_outs)(char *, void *, int)); #endif Возможности - намного больше чем у sprintf или snprintf. В run-time библиотеке IAR все функции семейства printf работают через _Printf() Так это на плюсах должен быть проект тогда.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|