Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Avazart
2019-11-05 12:47:15

Avazart, за код спасибо, но он не подходит. Более того, длина HTTP запроса зависит от браузера и принимающего сервера и там точно не 127 символов. Через хром можно и 2000+ передать, а вот сколько может обработать сервер arduino за раз я не знаю. Но мне вполне хватит и 500 символов для всех целей.

Та конкретно в Вашем случае как за программировать столько и будет символов, все остальное можно отсекать. 500 символов явно много, лучше используйте POST


Строка в С/С++ это и есть массив символов, только всегда завершающийся терминальным символом равным нулю. А класс String это слишком долгий разговор для форума.

В С++ есть std::string который обычно используется.

Watchdog
2019-11-05 07:07:15
Dessan пише:

Не форум, а сборище флудеров.  ... я не понимаю как работают строки, почему вдруг они являются массивами и как из строки сделать цельное слово. Спросить не у кого. На форумах одни юмористы и умники.
Скачал Visual Studio - изучаю строки в С++, а там видно будет.

Про флудеров и юмористов это точно. Вы хоть один учебник прочитали? Например этот: https://proklondike.net/books/cpp/cplus_dlja_chainikov.html Строка в С/С++ это и есть массив символов, только всегда завершающийся терминальным символом равным нулю. А класс String это слишком долгий разговор для форума.

Dessan
2019-11-05 05:06:01
Kaka пише:
Dessan пише:

я не знаю как подключить модули String и stdio в ардуино, в стандартных библиотеках его нет.

В студии нет stdio.h ??? А если найду? Пиши #include <stdio.h> и не выпендривайся.

Ок, оно должно подсвечиваться как-то?Почему все модули красным цветом а #include <stdio.h> чёрным?Или это ни на что не влияет?

Kaka
2019-11-05 02:47:24
Dessan пише:

я не знаю как подключить модули String и stdio в ардуино, в стандартных библиотеках его нет.

В студии нет stdio.h ??? А если найду? Пиши #include <stdio.h> и не выпендривайся.

Dessan
2019-11-05 01:24:25

Не форум, а сборище флудеров. Если не знаете как решить задачу, так и не пишите ваши крайне умные мысли ни о чём. Хорошо, что у меня есть рабочее решение через функцию и даже без цикла while (что особенно приятно).

Avazart, за код спасибо, но он не подходит. Более того, длина HTTP запроса зависит от браузера и принимающего сервера и там точно не 127 символов. Через хром можно и 2000+ передать, а вот сколько может обработать сервер arduino за раз я не знаю. Но мне вполне хватит и 500 символов для всех целей.

Моя главная проблема в том, что я не знаю как подключить модули String и stdio в ардуино, в стандартных библиотеках его нет. На западных форумах нашёл, что их качают и устанавливают. Зачем они мне нужны? Хочу понимать как они работают. Вроде что-то скачал, но они не подсвечены совсем в коде красным цветом, как остальные модули и я не знаю так должно быть или нет. К тому же я не понимаю как работают строки, почему вдруг они являются массивами и как из строки сделать цельное слово. Спросить не у кого. На форумах одни юмористы и умники.

Скачал Visual Studio - изучаю строки в С++, а там видно будет.

Avazart
2019-11-04 14:39:47

Правильно разбивать задачи на подзадачи, а не пытаться все сделать сразу при чем мудрённым путем когда в этом нет никакого смысла.

Kaka
2019-11-04 10:56:45
Avazart пише:

логично анализировать именно по строкам

В заголовке http нет ничего, что могло бы, стоя в конце строки, отменить (или как-то повлиять на) то, что стояло в начале. Потому логично анализировать посимвольно, обычным лексическим автоматом. Построчно - это для тех, кто правильно делать не умеет.

Avazart
2019-11-03 22:15:43

ПоТамушта HTTP протокол, есть заголовки(headers) и тело(body). Заголовки идут строками(lines, т.е по разделителю CRLF). Соответственно логично анализировать именно по строкам, по крайней мере пока идут заголовки, тело потом можно читать как надо/угодно, но вообще в данном случае как правило можно тупо отбрасывать, игнорировать так как все интересное у нас содержится в самом URL в параметрах.

Kaka
2019-11-03 21:03:35
Avazart пише:

все равно нужно читать до перевода строки.

Зачем?

Watchdog
2019-11-03 16:02:25
Avazart пише:

А читать по байтику не зависнет? Не несите чушь.
Ведь все равно нужен буфер куда складывать и все равно нужно читать до перевода строки.

Чушь, сейчас, самая востребованная ноша. Её несут все и везде! Складывать пора вёсла, и браться за буфера! lol Их парсить проще, чем поток токенов.

Avazart
2019-11-03 15:30:50

А читать по байтику не зависнет? Не несите чушь.
Ведь все равно нужен буфер куда складывать и все равно нужно читать до перевода строки.

Watchdog
2019-11-03 11:46:49
Dessan пише:

Как мне объяснил народ, плохая идея забивать сначала всё что приходит в буфер а потом парсить, потому что буфер слишком маленький и если будет много данных, то всё зависнет. Нужно парсить на лету

Как пить дать зависнет. Просящий дожен писать так, чтобы можно было обслужить всё последовательно, без откладывания до поступления дополняющих инструкций. Но кто у нас так просить умеет? Всем давай всё с полуслова и сразу! lol А еще исполнитель может не успевать исполнить все желания. Это приводит к необходимости контроля потоков запросов, это типа как официант приностит блюда только после употребления предшествующих, едоком. big_smile Тут всё как в ресторане, только на другом языке. smile

Kaka
2019-11-03 11:03:18
Dessan пише:

Нужно парсить на лету

Таки да.

Avazart
2019-11-03 00:48:04

Так размер буфер нужно подбирать.
И именно поэтому стоит использовать Mega вместо UNO.
Если не ошибаюсь  в строке HTTP запроса обычно не более 127 символов (Лучше посмотреть RFС) что должно вполне хватать под буфер для построчного чтения.

Dessan
2019-11-02 23:46:52
Avazart пише:

Я делаю примерно так:

//------------------------------------------------------------------------------

Как мне объяснил народ, плохая идея забивать сначала всё что приходит в буфер а потом парсить, потому что буфер слишком маленький и если будет много данных, то всё зависнет. Нужно парсить на лету

Підвал форуму