Dmitriy
Если без аргумента?
Igor
Igor
Если удалять из середины/начала таблицы, то происходит переиндексация
Igor
Dmitriy
Получается следующее:
if control ==4 and value==1 then
table.insert(data, out1_up)
table.insert(data, out2_up)
table.insert(data, out3_up)
end
Затем в таймере
on_timer()
uart_send_data(table.remove(data, 1))
end
Dmitriy
Igor
Igor
Только не забудь таймер запустить функцией start_timer, или как она там называется
Dmitriy
Dmitriy
работает)))
Dmitriy
17:53:23.275 DBG error [string "out1_up={0xA5,0xC3,0x3C,0x5A,0xFF,0x36,0x05,0..."]:51: attempt to get length of a nil value (local 'msg')
Dmitriy
А как избежать таких сообщений?
Igor
Igor
В таймере в самом начале функции сделай что-нибудь типа if #data < 1 then return end
Dmitriy
сейчас попробую
Dmitriy
при размере таблицы меньше нуля - закончить функцию
Dmitriy
Александр
Ещё как очень своеобразное решение - собери gcc usleep.c -o usleep
// usleep.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
if(argc == 2)
{
int msec = atoi(argv[1]);
usleep(msec);
}
else
{
printf("Ошибка, не передан параметр\n");
}
return 0;
}
Затем из ванильной луа можно звать через os.execute("./usleep 200000") решение не особо элегантно, но работает, хотя тут вопрос к возможностям сред в которых ты запускаешь.
Aqendo
Hello, World! 🎄
Aqendo
сделать зависимость к скрипту в виде gcc и при каждом выполнении компилировать бинарник и использовать 😈😈😈
Александр
Легче уж луа либу скомпилить, не?
Ну не соглашусь, ибо тогда может быть столкновение с версиями луа или придётся тратить время на поиски) Плюс приведённый код - позволят минимальными усилиями получить usleep и не думать откуда взять код(вряд ли роскошь в виде lr будет в тему) и как его собрать
Hello, World! 🎄
Александр
Aqendo
Aqendo
Я бы написал другое слово из пяти букв с Х посредине, но пусть будет так.
Александр
Aqendo
Hello, World! 🎄
И у пользователя не будет этих компиляторов...
Dmitriy
Hello, World! 🎄
Hello, World! 🎄
Dmitriy
в вашем варианте только секунды кстати
Hello, World! 🎄
Dmitriy
Hello, World! 🎄
Dmitriy
я в гугл сразу полез - но там или сокеты используют какие-то, которых нет, или слип разный но основанный на секундах
Dmitriy
А таблицы тут при чем?
изящное решение - где в прерывании таймера на 200мсек происходит обработка очереди команд
Hello, World! 🎄
Dmitriy
да, я сразу же понял, как это можно использовать и во множестве других случаев. Как же приятно все-таки познавать что то новое и потом понимать где это можно применить. Несмотря на то, что судьба зашвырнула меня в луа ( где я был 0) теперь стало полегче
Hello, World! 🎄
Snusmumriken
не вариант для встройки
А на встройке — читай доку встройки. Она должна предоставлять расширения для интерпретатора.
Snusmumriken
Например у nodemcu есть dsleep где ты можешь усыпить на микросекунды.
Igor
Snusmumriken
Dmitriy
Dmitriy
Хочу ее раскурить в скором времени. Про nodemcu на нее тоже слышал. Кто работает с этим - что скажете - какие очевидные плюсы и минусы есть?
Dmitriy
я в основном работаю с СИ. Сейчас стал осваивать python и столкнулся с луа. По системам мне интересно освоить rtos так как по менеджменту они неплохи в плане гибкости и задачности
jesus-2.6.tar.gz ☮︎
Хех
Dmitriy
Dmitriy
Dmitriy
Snusmumriken
Ну знаешь, например у тебя есть 3д-принтер. И он тупой, управляется например принимая команды по spi в реальном времени: "начать двигаться вперёд, остановиться, начать двигаться назад" и так далее.
И ты не можешь управлять им с компа например, потому что накапливается гора ошибок таймера, потому что комп не может просто так взять и переключиться на процесс в нужное время чтобы отправить команду в конкретную микросекунду не выжирая 100% одного ядра.
И ты берёшь ардуину, которая в миллиард раз менее мощная чем твой камплюхтер, зато способна ровно в НУЖНОЕ время запускать и останавливать движки без особых ошибок.
А луёвая nodemcu не может по тем же причинам что и пк. Или может но надо немножко изгаляться.
Dmitriy
Ну, собственно часы собраны на 168 Меге 16мгц. 250 адресных диода и шаговик 96 шагов\оборот
Snusmumriken
А не слишком ли оверкилл? )
Snusmumriken
Ну кста должно быть нормась, но имхо всё равно оверкилл, и питать их кажись приходится от розетки. Как хобби-прожэкт ништяк )
Dmitriy
Dmitriy
168 мега - 1кб рам и 16кб флеш
Dmitriy
В режиме сна потребление 5 мкА
Dmitriy
Пульт по автономности - при часе работы в день на 30 дней хватает
Dmitriy
Там 920мА аккум. В режиме сна 1 мкА
Денис
Денис
Дался ей этот нулевой индекс... Там таблица используется для извлечения значения по стейту...
Денис
Хотя, тут и повеселее вещи есть...
Snusmumriken
Это не intellij, это luacheck, ты можешь использовать его и вне интелы.
Денис
Snusmumriken
Он скорее всего встроен в аддон для интеллы. Может числится в списке лицензий аддона.
Денис
Денис
Что-то не могу сообразить: а можно ли как-то игнорировать такого рода проблемы...
Anonymous
Хм, а кто то запускал луа через wasm в вебе?