Здравствуйте, требуется получать и отправлять данные по UART между ESP01(LUA) и Arduino Uno. Есть ли какой нибудь шаблон кода приёма передачи, заранее благодарен.
написал небольшой код (на LUA) приема и парсинга строки такого типа :<s1=0,s2=3,s3=95,s4=33,s6=555>\n которую принимает ESP. Вопрос почему не работает условие скобок <> ,или можно как то по другому сделать? Код (Python): dat = {} dat.s1 = 0 dat.s2 = 0 dat.s3 = 0 dat.s4 = 0 dat.s5 = 0 local index local UARTindex function UART() uart.setup(0,9600,8,0,1) tmr.create():alarm(300, tmr.ALARM_AUTO,UART_SCAN) --скорость обмена end tmr.create():alarm(25000, tmr.ALARM_SINGLE, UART)--задержка для возможности отключения режима юарт ----------------------------- function UART_SCAN() --прием пакета uart.on("data","\n", function(data) --if(string.sub(data,0,1)=="<" and string.sub(data, -1)==">" )then--проверка наличия скобок(не работает почему то) UARTindex = 0 for i in string.gmatch(data, "(%w+)") do --выборка с шаблоном if(UARTindex == 0)then index = i else --защита от несуществующего индекса local function func() if not dat[index] then return end dat[index] = i+0 end func() end UARTindex = (UARTindex == 0) and 1 or 0 end --end end, 0) end
какой сам придумаешь, такой и будет. Шаблонов нет, Есть стандарты. Но стандарты тебе с такими вопросами не поднять.
В Lua любой первый элемент имеет номер 1, а не 0, как в Си. Не проще ли передать данные в формате json и распарсить их стандартным sjson парсером?
просто при выводе Код (C++): local data1 = "<s1=000,s2=111,s3=222,s4=033,s6=555>" print(string.sub(data1,0,1)) print(string.sub(data1,-1)) получаю < > кстати так же и при Код (C++): local data1 = "<s1=000,s2=111,s3=222,s4=033,s6=555>" print(string.sub(data1,1,1)) print(string.sub(data1,-1)) да и код я неправильно написал, забыл что uart.on работает всегда и цикл ненужен
Итог: все равно не выполняет условие, кстати на счет json можно попробовать, но думаю разбираться буду долго
Да, могу там в любой форме переделать. Я думаю может проще сделать. Просто данные в определенном порядке отправлять без идентификатора, и парсить проще, какие недостатки этого? Данные часто путаются?
Что отправите то и придет. Вот старый старый (но до сих пор работающий) проект для примера. Сейчас я бы делал по-другому.
Спасибо, огромное, но все-таки заинтриговала фраза "Сейчас я бы делал по-другому", в 2-х словах можно?
Не лепил бы все в один файл (наверняка есть резервы уменьшения затрат памяти) и работал с json - это обязательно. А так - не исключаю что и код писал как-то по-другому. Тогда я только начинал этим заниматься.