• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Lua скрипты и модули

nikolz

Well-known member
не понял вопроса.
поясню что я делал.
1) написал скрипт для NodeMCU на луа - компиляция и вывод на экран шестнадцатеричном формате результата для файла N
2) скомпилировал файл N на компе
3) вывел шестнадцатеричный результат на компе
4) Сравнил 1 и 3 сначала все о'кей потом расходится.
Пока подробности отличия не изучал.
 

nikolz

Well-known member
В результате подробного сравнения файлов выяснил чем отличаются, но не ясно почему так.
Отличаются длиной что связано с пропуском группы нулей nodeNCU (либо добавлении в варианте для компа)
Кроме того, несколько байт 03 заменены на 05 и 04 на 06.
--------------------------------
Резюме.
Надо иметь возможность для ESP загрузить и выгрузит байт код файлы.
Тогда можно будет проверить, влияет ли данное отличие на совместимость.
----------------------------
 
1. Вы же сравниваете - "Сравнил 1 и 3". Какая еще выгрузка байт кода?
2. Раз вы много времени потратили на луа - а что разве нет для луа утилиты листинга байт кода?
(чтобы можно было "читать по-русски" а-ля ассемблер).
 

nikolz

Well-known member
1. Речь идет о возможности загрузки(выгрузки) байт кода в ESP с компа для исполнения
2. у меня - нет.
 

nikolz

Well-known member
Кроме того в последней прошивке node указано,
что используется eLUA и нет сведений о совместимости с LUA на уровне байт кода.
 

nikolz

Well-known member
Байт с байтом , начиная с 1 го.
В шестнадцатеричном и символьном, если возможно отображение данного байта, виде.
Хим анализ не проводил.
 

nikolz

Well-known member
это указано в п 1:
1) написал скрипт для NodeMCU на луа - компиляция и вывод на экран шестнадцатеричном формате результата для файла
 
Ну если сравнивать символы или hex, оно конечно нормально.
Не вижу проблемы эту выдачу в файл записать...
 

Alex Sedov

New member
День добрый, пишу скрипт со следующим функционалом:
1) поднять точку доступа;
2)поднять tcp сервер;
3) при приеме байт по uart - отправить на сервер;
4) при приеме байт на сервере - отправка в uart;

local apName = apNamePrefix .. "-" .. string.sub(wifi.ap.getmac(),13)
print("Starting up AP with SSID: " .. apName);
wifi.setmode(wifi.STATIONAP)
local apSsidConfig = {}

--Конфигурация сетки
apSsidConfig.ssid = apName
apSsidConfig.pwd = "12345678"

wifi.ap.config(apSsidConfig) --установка название/пароль
wifi.ap.setip(apNetConfig) --установка ip/netmask/gateway

--Запуск сервера
srv=net.createServer(net.TCP)
srv:listen(80,function(c)
c:eek:n("receive", function(c, pl) print(pl) end)
c:send("hello world")
end)
Проблема в чем - данные с сервера по uart'y принимаются, а вот как их прочитать с uart'a и отправить на сервер - не совсем понятно.

пробовал через:
uart.on("data", 4,
function(data)
print("receive from uart:", data) --дублирование в uart
srv.send(data); -- отправка на сервер -- не отправляется.
if data=="quit" then
uart.on("data")
end
end, 0)

P.s. да, собираю по кусочкам из примеров))
 

Alex Sedov

New member
может это поможет https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru#netsocketon

возможно, что скрипт для очень старой прошивки NodeMCU
Видел, взял оттуда вот этот пример:
sv=net.createServer(net.TCP, 30) -- 30s time out for a inactive client
-- server listen on 80, if data received, print data to console, and send "hello world" to remote.
sv:listen(80,function(c)
c:eek:n("receive", function(c, pl) print(pl) end)
c:send("hello world")
end)
Данные от порта в uart приходят, непонятно, как отправить на сервер, если в uart что-то пришло. "hello, world" приходит только, если подключилось устройство.
 

Victor

Administrator
Команда форума
как отправить на сервер
Вы же поднимаете сервер на ESP8266, так что данные кому-нибудь можно передать только, если этот кто-то (клиент) подключился.
Можно сделать наоборот, создать сокет на ESP8266 и подключится к серверу, например к HTTP на порт 80. Тогда можно послать серверу GET запрос и получить в ответ html
 

Alex Sedov

New member
Вы же поднимаете сервер на ESP8266, так что данные кому-нибудь можно передать только, если этот кто-то (клиент) подключился.
Можно сделать наоборот, создать сокет на ESP8266 и подключится к серверу, например к HTTP на порт 80. Тогда можно послать серверу GET запрос и получить в ответ html
Не совсем корректно сформулировал. Мне нужна связка uart<--> tcp server. Двусторонняя. Проблема в том, что Arduino подключается просто к esp8266, а вот PIC завести с ней через uart и AT команды - целая проблема. Поэтому хочу максмально упростить обмен.
 
Сверху Снизу