Megakoteyka, нет тут все сложнее, человек сейчас стоит на тех же граблях на которых стоял я сам когда после PHP начал изучать Си и вообще углубляться в познаниях ПК. Супер краткий курс о данных. Любые данные в любом цифровом электронном устройстве хранятся лишь как 0 и 1. Если мы возьмем к примеру число 1000110 что это ? да это ВСЕ ЧТО УГОДНО, это может быть буква, число, или любое слово или даже целая фраза, все зависит от того как мы с вами договоримся кодировать данные. То есть по сути это просто комбинация нулей и единиц которая может быть интерпретирована как мы пожелаем. И все цифровые электронные устройства обмениваются именно набором 0 и 1, они не обмениваются массивами или буквами, только НОЛЬ и ОДИН. Данные в памяти не лежат в качестве каких то строк, память это лишь набор ячеек для 0 и 1 и строка это лишь последовательный набор ячеек где в каждой ячейке хранится набор 0 и 1 которые мы должны интерпретировать как некий символ, или можем интерпретировать его как душе угодно (для этого в языках у переменных требуется указывать тип данных что бы компилятор знал как ему интерпретировать этот набор 0 и 1 в PHP интерпретатор все это скрывает), ПК вообще не знает таких понятий как символы, и когда вы видите символ на экране это всего навсего битовая матрица какие пиксели надо закрасить на экране согласно некому набору 0 и 1, для ПК есть только два числа 0 и 1 .. остального для него прост не существует. Таким образом строку можно считать набором или массивом символов которые последовательно размещены в памяти. и ТО заметь те это лишь договоренность что мы будем хранить строчки именно так. И так как мы выяснили что передать массивы в том привычном для вас виде что вы привыкли использовать в PHP например уже нельзя, ибо тут мы имеем дело с низкоуровневыми данными а не с данными внутри программы, там компилятор или интерпретатор скрывает все эти заморочки. И так как же вам все же массив то передать, ну есть два пути. 1. Может быть кто то написал некую библиотеку, которая сможет взять набор символов и распарссит в привычный для вас массив. Пример функции serialize() и unserialize() в PHP которая может превратить массив в строку а потом из строки опять в массив. 2. Самому определить некий протокол и отправлять данные на ардуин а на ардуине уже эти данные согласно своей собственной договоренности переделать в массив. Например вы можете отправить два блока данных первый: 10 второй 13400 .. на ардуине уже интерпретировать первый блок данных как ключ массива 10 а второй 13400 как значение массива с этим ключем. И вот так один за одним передавать и парсить это к примеру. И советую прислушатся к совету Megakoteyka который он вам дал темой рание, вы пришли в область которая имеет немного другие понятия чем PHP и JS, что бы тут что то делать надо иметь хотя бы базовые понятия более низкоуровневые, посему прислушайтесь к его совету, он знает что говорит поверьте P.s. Если вдруг я где выше в чем то ошибся, то более опытные участники форма надеюсь меня поправят.
Человек не знает и не хочет изучать С/С++ и разбираться, а вместо этого ищет готовое решение. При этом не может даже четко сформулировать вопрос. Это как спросить "как запрограммировать робота?". Чтобы получить хороший ответ, нужно сперва задать хороший вопрос
Вы зря так говорите. Если бы я хотел просто игрушку, я бы купил игрушку. Я как раз ХОЧУ в этом разобраться, но сейчас я уперся в стену, которую не могу пройти. Естественно я пытаюсь идти по пути наименьшего сопротивление, и пытаюсь найти готовое решение. Черт возьми да! я не могу сформулировать вопрос, я пытаюсь это сделать. Конечно ответ иди учи С/С++ это вообще универсальный ответ. Такой ответ всегда имеет место быть. Но для чего тогда форум!? Объясните мне если я чего то не понимаю.
Огромное спасибо NR55RU за сочувствие к дилетантам. Ваше сообщение было очень полезным. Благодаря ему я могу переформулировать вопрос.
Отправляю данные по сериал вида "123" Как их распарсит на ардуино и превести к виду int a = "1"; int b = "23"
Прежде всего не надо отправлять данные вида "123". Отправляйте данные вида "1,23" - используйте разделитель. Далее. Предположим, вы отправляете несколько пакетов. получается "1,231,231,231,231,23". По дороге испортился один байт и Вы его не приняли. В итоге получили: 1,21,231,231,23...". Как понять, какой байт потерян? А если первое число может быть различной длины, как и второе (что обычно и встречается на практике? Дополнять нулями спереди можно, но нехорошо. Хорошо сделать пакетный протокол - сперва идет стартовый символ, затем длина пакета в байтах, затем байты пакета. Тогда на приеме Вы всегда сможете определить неверно принятый пакет и отбросить его.
А на php можете распарсить? Только без использования регулярных выражений, а исключительно своим кодом. З.Ы.: Форум нужен для решения хотя бы мало-мальски нестандартых задач и обмена опытом, а не для задавания вопросов, на которые уже было отвечено сотни раз. Вы же вэб-разработчик, не мне Вас учить пользоваться поиском. Или в гугле забанили?
Код (Text): char *readSerialString(const char BeginChar, const char EndChar, const int MaxLength, const unsigned long Timeout) { const unsigned long time_start = millis(); char *buf = new char[MaxLength]; int pos = 0, count = 0; bool message = false; while (true) { if (Serial.available()) { char c = Serial.read(); if (message) { buf[pos++] = c; buf[pos] = 0; } else if (c==BeginChar) { pos = 0; message = true; } else if (c==EndChar) { message = false; break; } count++; } if ((pos+1)>=MaxLength) { buf[pos] = 0; break; } if ((millis()-time_start)>Timeout) { break; } } if (0==count) { delete[] buf; buf = 0; } return buf; }