Библиотеки обработки текста оболочки - PullRequest
1 голос
/ 06 июня 2011

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

Есть идеи?

Спасибо

Ответы [ 3 ]

1 голос
/ 20 июня 2011

чтобы получить действительно простую «оболочку» с буферизацией строки (буферизация строки означает обработку только после «ввода» или «\ n») в микроконтроллере, я бы сделал что-то вроде этого (в середине основного цикла:

char * p = my_read_buffer; //this is in the initialization, rather than the main loop

if (byte_from_my_uart_avaliable()) {
    *p = read_uart_byte();

    if (*p == '\n') {
        process_input(my_read_buffer);
        p = my_read_buffer; //reset the linebuffer
    }
    else 
        p++;
}

Тогда секретом будет функция process_input(), в которой вы будете анализировать команды и их параметры, чтобы вы могли вызывать соответствующие функции для их обработки.

Это просто идея далеко не закончена, вам нужно установить ограничение на число символов, полученных до '\n', чтобы предотвратить переполнение.

1 голос
/ 06 июня 2011

Попробуйте найти переводчика Forth .Это большая экосистема, и вы найдете множество реализаций, предназначенных для использования в прошивках, таких как Open Firmware ¹ реализации OpenBIOS .Например, Open Firmware ² имеет лицензию BSD и содержит код для доступа к терминалу, который вы можете использовать повторно.Я не знаю, насколько переносим код Open Firmware, но если он вам не подходит, я предлагаю поискать другие системы Forth, отвечающие вашим требованиям по переносимости и лицензированию и имеющие компонент терминального доступа.1011 * спецификация ² программа

0 голосов
/ 07 июня 2011

Проверьте ECMD , который является частью платформы Ethersex .

Справочник по ECMD .

...