Просто получать и обрабатывать строки как в примере Прием строки это конечно же хорошо, но желательно еще иметь возможность преобразовывать эти строки в числа. Библиотека от elm-chan которую мы использовали в предыдущем примере имеет эту возможность.
Дополнив пример вводом строки длиной до 80 символов, мы будем с помощью функции xatoi преобразовывать ее в число(а) пока не будет обработан последний символ. Числа могуть быть как в десятичной, так и в шестнатиричной и восьмиричной, а также в двоичной форме. Поддерживается ввод как знаковых так и беззнаковых чисел.
Создадим наш проект:
nis@jane ~/stm32/f4examples/06-usart $ cp -av 04-receive-string/ 08-xgets-xatoi/
nis@jane ~/stm32/f4examples/06-usart $ cd 08-xgets-xatoi/
Для того чтобы получать символы с помощью библиотеки необходимо в usart.c создать функцию прием символов для последовательного порта №1.
После не забудем изменить xprintf.h добавив работу на прием и отображение вводимых символов:
#define _USE_XFUNC_OUT 1 /* 1: Use output functions */
#define _CR_CRLF 1 /* 1: Convert \n ==> \r\n in the output char */
#define _USE_XFUNC_IN 1 /* 1: Use input function */
#define _LINE_ECHO 1 /* 1: Echo back input chars in xgets function */
Ну и конечно в фукции main() файла main.c мы подключим библиотеку, и создадим код в соотвествии нашему алгоритму.
Осталось собрать проект и загрузить его в МК:
nis@jane ~/stm32/f4examples/06-usart/08-xgets-xatoi $ make write
Видео:
На основе этого примеры мы убедились что ввод строки с целью извлечения из нее чисел не так сложен.