2012-01-14 3 views
1

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

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

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

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

+2

Какая платформа? –

+0

Я запускаю программу в микроконтроллере ATmega 32. Извините, я не понимаю, что вы подразумеваете под платформой. – user1133324

+1

К платформе я имею в виду комбинацию аппаратного обеспечения, компилятора и ОС (при необходимости). –

ответ

1

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

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

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

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