Перейти к содержанию
    

Всем здравствуйте!,

 

пишу web интерфейс для stm32. Стек протоколов у меня готов, всё работет. Страница хранится в памяти ввиде массива. На странице есть кнопка "READ", при её нажатии МК читает регистр и по указателю подменяет днные в массиве, после чего страница выводится на экран. Всё дело в том, что для этого мне приходится каждый раз обновлять страницу, что раздражает мерцанием экрана. Как можно сделать вывод только изменеившихся значений, как переменных??

 

Clip2net_210809134924.png

Изменено пользователем Сёха

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вебсокеты для этого жирновато будет. А вот асинхронные запросы - в самый раз. Отдавать клиенту статику: html с жабоскриптом, а уж жабоскрипт пусть каждые N секунд посылает МК запросы на конкретные данные, парсит JSON с ответом и заполняет нужные поля.

А вот если вам понадобится не просто смотреть на параметры, а еще и что-то менять, то здесь уже все намного хуже: придется на МК реализовать SSL. В общем, дешевле купить orange pi zero и сделать на нем основную сетевую часть, а на МК уже — RT'шную + то, что не потянет по периферии одноплатник.

P.S. Я уж молчу о том, что лично мне вообще неизвестна ни одна вменяемая реализация TCP/IP на микроконтроллеры! Чтобы там не было дикого оверхеда и не нужны были аллокаторы.

Изменено пользователем Eddy_Em

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Сёха said:

 Как можно сделать вывод только изменеившихся значений, как переменных??

shtml

https://www.ti.com/lit/wp/spmy001/spmy001.pdf?ts=1628482082862&ref_url=https%3A%2F%2Fwww.ti.com%2Fsitesearch%2Fdocs%2Funiversalsearch.tsp%3FlangPref%3Den-US%26searchTerm%3Dweb%2Bserver%26nr%3D5083

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

adnegadimka76MX_Master - спасибо за наводки, но это только слова и они мало что проясняют. Я как не понимал что нужно, так и не понимаю. Может есть примеры реализации??

Задача допилить то, что есть... Например WebSocket моя реализация не умеет. 

AJAX вроде не плохо, но у меня данные хранятся в flash памяти МК, её нужно на файлы разделить. Можно было бы использовать RAW API, но на сколько я понял она находится в составе lwIP, а у меня свой стек.

Про XMLHttpRequest пока ничего не могу сказать не успел...

 

Вообщем я запутался...

Изменено пользователем Сёха

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Сёха сказал:

Может есть примеры реализации??

Думаю, в Интернете для ПК полно примеров. Я бы с них начал.

1 минуту назад, Сёха сказал:

Задача допилить то, что есть... Например WebSocket моя реализация не умеет.

Тогда AJAX можно попробовать. Я для МК не пробовал, а для ПК лет 10 назад (когда WebSocket не было) что-то делал. Может, вам какой-нить web-программист нужен для начала.

1 минуту назад, Сёха сказал:

AJAX вроде не плохо, но у меня данные хранятся в flash памяти МК, её нужно на файлы разделить. Можно было бы использовать RAW API, но на сколько я понял она находится в составе lwIP, а у меня свой стек.

В своем можно все необходимое реализовать - это плюс. Ваша задача использовать то, что браузеры умеют.

1 минуту назад, Сёха сказал:

Про XMLHttpRequest пока ничего не могу сказать не успел...

Это и есть AJAX если мне не врет память.

1 минуту назад, Сёха сказал:

Вообщем я запутался...

Вы пишите как бы сервер. Существуют браузеры с поддерживаемым функционалом - это клиенты. Вам нужно использовать те технологии, которые браузерами поддерживаются. Я бы советовал WebSocket, но сам его не применял.

Я бы советовал посмотреть как реализовано в TCP2UART. Там и webfs и WebSocket, но для ESP8266.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 минуты назад, adnega сказал:

Думаю, в Интернете для ПК полно примеров. Я бы с них начал.

Целый день лазил по нету, искал... глухо. Может я не там ищу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

51 minutes ago, Сёха said:

Целый день лазил по нету, искал... глухо. Может я не там ищу...

Вот пример

https://habr.com/ru/company/embox/blog/541662/

2 hours ago, dimka76 said:

У TI также есть пример. Сходу не нашел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Сёха сказал:

Целый день лазил по нету, искал... глухо. Может я не там ищу...

Вот архив с исходниками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Eddy_Em said:

Отдавать клиенту статику: html с жабоскриптом, а уж жабоскрипт пусть каждые N секунд посылает МК запросы на конкретные данные, парсит JSON с ответом и заполняет нужные поля.

P.S. Я уж молчу о том, что лично мне вообще неизвестна ни одна вменяемая реализация TCP/IP на микроконтроллеры! Чтобы там не было дикого оверхеда и не нужны были аллокаторы.

 

По первому пункту полностью согласен. Вывожу индикаторы уровня звука с ДСП процессора. Запросы идут каждые 0.5сек. Обновление другого контента раз в сек. Все летает. Правда у меня ПИК32

Есть линейка серийного оборудования с ПИК32 с достойным веб.

Вот веб настроек эвалайзера усилителя с ДСП

А там еще других настроек и функционала немерено

396646848_.thumb.png.2f32868f232b3b09334eaa4df520b664.png

 

86039921_.thumb.png.f794d1142432ada92fb3731af06e9b30.png

Изменено пользователем smart_pic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо за подсказки, удалось сделать на AJAX. Всё работает! Но у меня данных 33 поля. Я их хочу упаковать в массив и вернуть. Данные приходят, но я не могу их распарсить!

 

var xhr;
		var idTimer;

	function onload()
		{
			xhr = new(XMLHttpRequest);
			
			Timer();
		}
	
	function Timer()
		{
			xhr.open("GET", "supply" + Math.random(), true); //Math.random() - защита от кеширования
			xhr.responseType = "text";	

				xhr.onload = function (oEvent)
					{
						console.log(xhr.response);
					
					
						parser = new DOMParser();
						xmlDoc = parser.parseFromString(xhr.response,"text/xml");

						document.getElementById('supply').innerHTML = xmlDoc.getElementsByTagName("t1")[0].childNodes[0].nodeValue;
					}
					
			xhr.send(null);
			
			idTimer = setTimeout("Timer()", 3000);		
		}

 

Получаю вот такую ошибку в логе...

 

Clip2net_210812153010.png.d797dbf5a3b7d1f06ab180a21152129b.png

 

Подскажите, где я ошибаюсь, как распарсить строку?

Изменено пользователем Сёха

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблему решил, JSON рулит:bye:

Изменено пользователем Сёха

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15.08.2021 в 16:23, Сёха сказал:

Проблему решил, JSON рулит:bye:

 

Добрый день. Пытаюсь вывести на страничку данные с веб сервера. Данные приходят строковым массивом. Как вам удалось распарсить данные чтоб вывести их в разных частях странички? С JS я не работал.  За ранее благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...