Использовать клавиатуру в качестве стандартного - PullRequest
1 голос
/ 14 января 2012

Я не знаю, как получить пользовательские вводы с клавиатуры и отобразить их на эмуляторе терминала (реальный термин).

Обычно я выполняю следующие действия для настройки стандартного ввода.Тем не менее, я понимаю, что у меня не может быть слова KEYBOARD в качестве потока.

   FILE receive_str = FDEV_SETUP_STREAM(NULL, KEYBOARD , _FDEV_SETUP_READ);
   stdin = &receive_str;

Программа скомпилирована с AVR Studio 4.18 под Windows 7, нацелена на микроконтроллер ATmega 32.

1 Ответ

1 голос
/ 09 августа 2012

См. http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html для получения информации о методе FDEV_SETUP_STREAM настройки stdio. В частности, то, что вы указали как «КЛАВИАТУРА» в приведенном выше примере, должно быть функцией, обеспечивающей ввод с клавиатуры. То, как вы написали свой код, означает, что он ищет такую ​​функцию:

int KEYBOARD(FILE *stream)
{
    return 'A';   
}

Это будет поток, который всегда возвращает букву A, например. Конечно, вам нужно заполнить эту функцию любым кодом, необходимым для чтения с любого аппаратного обеспечения клавиатуры, которое вы подключили к своему микроконтроллеру.

В руководстве avr-libc, указанном выше, описаны и другие значения, которые вы можете вернуть из этой функции, например, _FDEV_ERR (если произошла ошибка) или _FDEV_EOF (если это конец файла, т. Е. Больше нет ввода читать).

...