Ввод чисел

Просто получать и обрабатывать строки как в примере Прием строки это конечно же хорошо, но желательно еще иметь возможность преобразовывать эти строки в числа. Библиотека от 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

Видео:

На основе этого примеры мы убедились что ввод строки с целью извлечения из нее чисел не так сложен.