sadman41, ну почему вы стребетесь. Вот есть скалярная и векторная графика. Если скалярная это блок переменных, то векторное это передача изображения через макросы, о которых говорил выше.
KISS (акроним для «Keep it simple, stupid») — принцип проектирования, принятый в ВМС США в 1960[1][2]. Принцип KISS утверждает, что большинство систем работают лучше всего, если они остаются простыми, а не усложняются. Поэтому в области проектирования простота должна быть одной из ключевых целей, и следует избегать ненужной сложности.
Благодарю за разъяснение. Поясняю. Да, мне удобнее предавать команды текстом. Как на управляемых свичах вроде dell или cisco. Понравилось как там реализовано.
Здесь так же есть плюс в понятности ввода-вывода. Тоесть если кодом отправлять специальные байты, или код вроде 018\n который заставит модуль перезагрузится. То при разработкие клиент-серверной части, логировании событий, опросов, скриптовании я измучаюсь помнить все их, более того делать прослойку между своим легким протоколом и человекопонятным, для того чтобы одна команда скажем идущая от веб сервера с кнопочки веб панели reboot несла в себе байты нужной команды - не особо хочется.
А простым reboot или getTemperature, мне будет с обоих сторон не то что понятно где зачем и почему, но и назвав имя исполняемой функции в качестве передающего параметра кажется проще.
Я поразмыслю и над вашим вариантом. Судя по описанию он должен быть легким. Вот только я на таком уровне что я не совсем понял про send() это из консоли или это составляющая команды. Ну есть такое некоторые люди могут по другому представлять.
Я продумал стиль общения arduino на mega328 и arduino на esp8266 котрый по идее должен быть в симбиозе с первым. И вот как идеалист хотел бы придерживаться того стиля который пришел мне в голову. А между прочим этот проект жуется в голове не один месяц и даже не пол года. Когда додумал структуру, схватился за написание так называемого движка, и тут бац, а чего это мы пишем кучу if-ов... непорядок.
А может я просто уперся и хочу текстовые команды тупо из принципа своей типагениальности))
которые в последствии при разросшемся функционале соберутся в памяти и проведут митинг куда утекут все 2 кило байтиков озу, а я в свое время буду вынужден упростить задачу МК. Уж незнаю
Даже и не думал. Сам неоднократно перелопачивал свой код в поисках оптимального (с точки зрения ресурсов и моего субъективизма) решения. Зачастую выигрывал простой if() (даже у switch-a). Но, безусловно, что для принятия взвешенного решения нужно составить точное ТЗ, реализовать его несколькими способами, произвести замеры. Иначе всё это просто трёп и маниловщина начальной стадии.
я не совсем понял про send() это из консоли или это составляющая команды. Ну есть такое некоторые люди могут по другому представлять.
Пока это чисто абстрактная функция осуществляющая отправку ))) А Вы уж сами её конкретизируете задав канал, формат и пр..
UserDead пишет:
А может я просто уперся и хочу текстовые команды тупо из принципа своей типагениальности))
Ну тогда смотрите тот пример работы с модемом, там ничего особо сложного. Обявляем массив записей в каждой из которых 2 поля: строка, которая команда, по которой ищем функцию и указатель на саму функцию. Как пришла строка - бегаем по массиву, ищем. Нашли - вызываем функцию.
Некоторое усложнение вызывает три момента: возможность появления команды не в начале строки (отсюда эти pInpStr+currchar), желание передать в вызываемую функцию указатель на строку (там могут быть параметры) и возможность игнорить ОК (условие if(e==em)) . Первое и второе Вам может пригодится.
ПС. сижу втыкаю, почему p+=strlen(e->Name); а не p+=strlen(e->Name)+currchar. Наверно это бага. Скорей всего случай когда команды не в начале строки и есть параметры одновременно не встречались и она не проявилась. Теорема о том что в любом коде есть бага снова доказана )))
sadman41, ну почему вы стребетесь. Вот есть скалярная и векторная графика. Если скалярная это блок переменных, то векторное это передача изображения через макросы, о которых говорил выше.
//Но зато новый полет мысли в ардуиностроении.
У Вас полеты мысли ради полетов мысли :)
KISS (акроним для «Keep it simple, stupid») — принцип проектирования, принятый в ВМС США в 1960[1][2]. Принцип KISS утверждает, что большинство систем работают лучше всего, если они остаются простыми, а не усложняются. Поэтому в области проектирования простота должна быть одной из ключевых целей, и следует избегать ненужной сложности.
"если из чемоданчика мастера выложить часть инструментов, его работа лучше не станет".
Если чемоданчик без ущерба для функциональности будет легче, мастер будет меньше уставать, и повысится производительность его труда.
Вот есть скалярная и векторная графика.
А что такое скалярная графика?
И почему она скалярная?
Все сложности системы надо прятать во внутрь. Снаружи системы должны выглядить просто.
Благодарю за разъяснение. Поясняю. Да, мне удобнее предавать команды текстом. Как на управляемых свичах вроде dell или cisco. Понравилось как там реализовано.
Здесь так же есть плюс в понятности ввода-вывода. Тоесть если кодом отправлять специальные байты, или код вроде 018\n который заставит модуль перезагрузится. То при разработкие клиент-серверной части, логировании событий, опросов, скриптовании я измучаюсь помнить все их, более того делать прослойку между своим легким протоколом и человекопонятным, для того чтобы одна команда скажем идущая от веб сервера с кнопочки веб панели reboot несла в себе байты нужной команды - не особо хочется.
А простым reboot или getTemperature, мне будет с обоих сторон не то что понятно где зачем и почему, но и назвав имя исполняемой функции в качестве передающего параметра кажется проще.
Я поразмыслю и над вашим вариантом. Судя по описанию он должен быть легким. Вот только я на таком уровне что я не совсем понял про send() это из консоли или это составляющая команды. Ну есть такое некоторые люди могут по другому представлять.
Я продумал стиль общения arduino на mega328 и arduino на esp8266 котрый по идее должен быть в симбиозе с первым. И вот как идеалист хотел бы придерживаться того стиля который пришел мне в голову. А между прочим этот проект жуется в голове не один месяц и даже не пол года. Когда додумал структуру, схватился за написание так называемого движка, и тут бац, а чего это мы пишем кучу if-ов... непорядок.
А может я просто уперся и хочу текстовые команды тупо из принципа своей типагениальности))
которые в последствии при разросшемся функционале соберутся в памяти и проведут митинг куда утекут все 2 кило байтиков озу, а я в свое время буду вынужден упростить задачу МК. Уж незнаю
Предлагаю на вход ардуине передавать инструкции честного Си. Это достаточно концептуально?
Зачем, С? Я ж писал в #17, что-нибудь вроде Forth - интерпретатор маленький, всё дёшево и сердито. Можно удалённо загружить полноценные программы.
Зачем, С? Я ж писал в #17, что-нибудь вроде Forth - интерпретатор маленький, всё дёшево и сердито. Можно удалённо загружить полноценные программы.
Так видимо этот вариант не подошёл, я предлагаю альтернативу.
sadman41, ну почему вы стребетесь.
Даже и не думал. Сам неоднократно перелопачивал свой код в поисках оптимального (с точки зрения ресурсов и моего субъективизма) решения. Зачастую выигрывал простой if() (даже у switch-a). Но, безусловно, что для принятия взвешенного решения нужно составить точное ТЗ, реализовать его несколькими способами, произвести замеры. Иначе всё это просто трёп и маниловщина начальной стадии.
я не совсем понял про send() это из консоли или это составляющая команды. Ну есть такое некоторые люди могут по другому представлять.
Пока это чисто абстрактная функция осуществляющая отправку ))) А Вы уж сами её конкретизируете задав канал, формат и пр..
А может я просто уперся и хочу текстовые команды тупо из принципа своей типагениальности))
Ну тогда смотрите тот пример работы с модемом, там ничего особо сложного. Обявляем массив записей в каждой из которых 2 поля: строка, которая команда, по которой ищем функцию и указатель на саму функцию. Как пришла строка - бегаем по массиву, ищем. Нашли - вызываем функцию.
Некоторое усложнение вызывает три момента: возможность появления команды не в начале строки (отсюда эти pInpStr+currchar), желание передать в вызываемую функцию указатель на строку (там могут быть параметры) и возможность игнорить ОК (условие if(e==em)) . Первое и второе Вам может пригодится.
ПС. сижу втыкаю, почему p+=strlen(e->Name); а не p+=strlen(e->Name)+currchar. Наверно это бага. Скорей всего случай когда команды не в начале строки и есть параметры одновременно не встречались и она не проявилась. Теорема о том что в любом коде есть бага снова доказана )))