Например TDA7294

Форум РадиоКот • Просмотр темы - bash-подобная оболочка на МК
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб фев 28, 2026 00:50:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: bash-подобная оболочка на МК
СообщениеДобавлено: Вс апр 12, 2020 21:08:14 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
В очередной раз велосипедя командный интерфейс для МК задумался: ну ведь жутко неудобно, когда команды приходится 100500 раз подряд одни и те же вводить, лишь немного параметрами отличающиеся! А иногда тупо нужно N раз команду одну и ту же повторить.
Я и так уже в одной штуке (есть и более приличная версия, но пока она закрыта, открою летом), замучавшись с "очепятками", добавил обработку backspace в интерфейсе USB.
Сильно сомневаюсь, что подобных вещей никто не делал.

Вот и возник вопрос: а вдруг где-то у кого-то на просторах гитхаба уже есть простая реализация башеподобной оболочки? Нужно совсем немного: небольшая история (команд эдак на 64) с возможностью перемещаться по ней стрелками курсора и ctrl+r, автодополнение команд по TAB и обработка прочих спецсимволов (в т.ч. ESC-символов).
Самому подобное писать крайне лень. Ведь у меня, как выразилась жена, "золотые руки из жопы". И оптимизировать эту штуку, чтобы она в килобайт-другой RAM влезла, я точно не смогу...

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Вс апр 12, 2020 21:35:07 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
https://github.com/Nrusher/nr_micro_she ... ADME_EN.md ?


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Пн апр 13, 2020 06:29:14 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Не совсем то.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Пн апр 13, 2020 06:41:45 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Ну это "перебирание харчами". Взять и адаптировать для себя тогда. Альтернатив особо не вижу, кроме упомянутого там здоровенного finsh.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Пн апр 13, 2020 08:34:09 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Адаптировать там нечего особо. Такая "адаптация" превратится по сути в написание своего с нуля.
А хочется готовое.

Кстати, еще одна штука меня интересует: уж очень долго использовать самопальную strcmp для того, чтобы пробегаться по списку строковых команд. Если их под сотню, это приличных тормозов добавляет! Хотелось бы обычный case для этого случая использовать. Понятно, что для этого ничего невозможно сделать, кроме кодогенерации, когда из шаблона будет воспроизводиться case-дерево + туда же будет генерироваться функция вычисления хэша.
Но тут возникает проблема: как придумать надежную хэширующую функцию, чтобы из списка N команд длиной до 10-15 символов получать однозначный хэш?
Единственное, что приходит в голову: придумать несколько разных хэширующих функций, и при кодогенерации выбирать подходящую. Или, скажем, добавлять в хэш-функцию параметр-константу, которая выбирается на стадии кодогенерации...

Нет ли на примете таких "подстраиваемых" под ситуацию хэш-функций?

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Пн апр 13, 2020 09:41:43 
Прорезались зубы

Карма: -11
Рейтинг сообщений: -41
Зарегистрирован: Ср апр 17, 2019 01:53:29
Сообщений: 231
Рейтинг сообщения: 0
MicroPython ?

https://micropython.org


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Пн апр 13, 2020 12:22:58 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
AndyGU70, а это-то говнище зачем? Фу...

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Чт апр 16, 2020 04:28:39 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 4
Эдя, ищи Microrl - micro readline...

На, лови https://habr.com/ru/post/127890/


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Чт апр 16, 2020 06:28:33 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
dosikus, интересно. Почитаю, спасибо.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Сб апр 18, 2020 03:50:28 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Наверное не совсем по теме, но разве с CASE удобнее ? Я вот это запускал на stm а строка прилетела по ethernet udp
плюс добавил туда x макрос для совмещение команды и функции которую надо запускать и все обработчики вынес в отдельный файл.
Код:
//            ID         Имя команды      Функция обработчик
#define ItemDebugCmd\
      ENTRY(Function1,   "\n",          Null_handler            )\
      ENTRY(Function2,   "help",         print_help               )\
      ENTRY(Function3,   "GetSoftWare",   GetSoftWare_handler       )\
      ENTRY(Function4,   "GetTest",      GetTest_handler            )\
      ENTRY(Function5,   "dampsocket",   DampSocket_handler        )\


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Сб апр 18, 2020 05:55:23 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
pokk, можно подумать, там "под капотом" не switch или нагромождение if/else if…

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
 Заголовок сообщения: Re: bash-подобная оболочка на МК
СообщениеДобавлено: Сб апр 18, 2020 14:41:33 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Нашел такое, возможно сап дописал. sys_func_names и sys_func это массив функции, 2 и 3 столбик в приведенный ранее примере.
Код:
//==========================
/*
    * @Описание:    Описание функции.
    * @Параметр:   
    * @Возврат:     Нету
*/
uint16_t cmd_exec_tread(uint8_t *cmdline,uint8_t *out,uint8_t s){
uint8_t i;
uint16_t len=0;
    //----------
    split_args(cmdline);
    i=0;
    //----------
    while(strcmp((char*)cmdline,(char*)sys_func_names[i]) != 0){
        i++;
        if (i>=FUNC_NUM){
            strcpy((char*)out,(char*)msg_cmd_err);
            strcat((char*)out,(char*)"\nStm32Root@:");
            return strlen((char*)msg_cmd_err);
        }
    }
    //----------
    len=(sys_func[i])(s,arg_ptr,args_num,out);
    strcat((char*)out,(char*)"Stm32Root@:");
    len++;
    return len;
}


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y