Столкнулся с проблемой, что в моем проекте ардуино может не хватить мощности и главное памяти. Тут я понял, что пора бросать проект и идти спать. Тут я понял, что ардуино нужен внешний помощник, но кто имеет много памяти и быстро выполняет сложнейшие операции за доли секунды??? ...и тут я вспомнил про свой VPS сервер... Вот собственно вопрос: как сделать так, чтобы ардуино через Ethernet shield подключалась к серверу, на сервере запущена программа. которая ждет подключения ардуино, как только ардино подключилась, серевер ждет команды управления (например прочитать что-то из файла (я себе это представляю вроде набора команд с ардуино к примеру: read_file /cd/project/files/test.txt) или наоборот записать в него (file_write /cd/project/files/test.txt ***ждать ответа от сервера "ok" далее отправляем, что писать (@-перевод на следующую строку)*** hello@world) или выполнить арифметическую операцию (&1 сложение; &2 вычитание; &3 умножение; &4 деление; # получить ответ) КСТАТИ! ЧУТЬ НЕ ЗАБЫЛ! СОЕДИНЕНИЕ ДОЛЖНО ЗАЩИЩАТЬСЯ ПАРОЛЕМ! Вот примерно как я представляю общение с сервером (// - это комментарий) arduino: hi //типо пинг сервера server: hi //ответ на пинг server: login //запрос логина arduino: abc //логин server: (если пароль/логин правильный отправляет ok, если нет no) ok //этот логин правельный server: pass //запрос пароля arduino: 123 //пароль server: ok arduino: &1 server: ok server: a arduino: 2 server: ok server: b arduino: 2 server: ok arduino: # server: 4 //(2+2=4) arduino: &2 server: ok server: a arduino: same //(вот тут-то самое интересное same означает результат предыдущего действия (он //хранится на сервере в переменной) в нашем случае он=4) server: ok server: b arduino: 3 server: ok arduino: # server: 1 //(4-3=1) arduino: file_write /cd/test/test.txt //записать в файл test.txt server: ok arduino: hello@world //записать hello на первой строке, а world на второй server: ok arduino: ext //закрытие соединения server: ext //исключение ошибок arduino: ext //исключение ошибочных отсоединений не подскажете, как такое осуществить?)
А на какого рода операции не хватает памяти и вычислительной мощности, если не секрет? Возможно, проблему можно решить и без сервера.
Это не клиентская часть, а пример использования машины состояний. Поняв логику данного подхода, Вы легко сможете написать и клиент, и сервер под свои нужды. Начните с составления протокола. Необходимо определить все возможные состояния клиента и сервера, а также условия переходов между этими состояниями. Важно на этапе продумывания протокола представлять себе, каким образом будет обрабатываться каждое состояние, иначе можно придумать такой протокол, который не получится реализовать. Продумать протокол - половина дела. Потом останется просто реализовать соответствующие машины состояний на стороне клиента и сервера, это уже больше дело техники. Если есть вопросы по машине состояний, задавайте в теме про машину. По протоколам - здесь.
большое спасибо! я тут уже немного вроде нашаманил Код (Text): int err_code = 0; //код ошибки int err_numb = 0; //общее кол-во ошибок если будет больше 5, выдавать сообщение "Соединение не надежно, сервер не будет подключен" int key_server = 0; //ключ сервера int key_client = 2423; //ключ клиента boolean server_connect = true; //подключение к серверу, идет-тру не идет-фолс boolean server_connected = false; //подключен сервер? да-тру нет-фолс char ip = xxx.xxx.xxx.xxx; //айпи удаленного сервера int ip1 = xxx; //первая часть айпи int ip2 = xxx; //вторая int ip3 = xxx; //третья int ip4 = xxx; //четвертая int server_get_key = 0; //часть ключа для генерации char username = lalkalalka; //имя пользователя, при подключении со значением rootlalka сервер открывает больше своих возможностей char password = 1234567; //пароль void key_generate(){ key_server = ((ip1 + ip2 + ip3 + ip4)/4) + server_get_key; key_client = server_get_key + key_client; } void server_connection_start(){ } void