Snusmumriken
Wsl2 смотри. Удобная виртуалка для вин10
Собственно прекол в том, что это не виртуалка )
ベクゾッド
Собственно прекол в том, что это не виртуалка )
Это виртуалка hypervisor только урезанная
Cyberpunk enjoyer
Snusmumriken
Ну она как бы использует hyper-v виртуализацию, это да ) Но это не означает то, что именно ты сказал.
Cyberpunk enjoyer
Там не используется никакая виртуализация
ベクゾッド
Wsl1 другая была
ベクゾッド
Но wsl2 это виртуализация
ベクゾッド
WSL 1's design featured no hardware emulation / virtualization (unlike other projects such as coLinux) and makes direct use of the host file system
Cyberpunk enjoyer
А, возможно, я просто всю технологию
Cyberpunk enjoyer
как ретранслятор представляю
Cyberpunk enjoyer
"Вместо того, чтобы полагаться на виртуальную машину или вручную переписывать приложения, подсистема Windows для Linux переводит команды, предназначенные для ядра Linux — основной части операционной системы — в команды для ядра Windows. "
Денис
Господа, вопрос чего-то меня постиг... Нужен ли такой код или Lua умнее, чем я думаю? ``` -- Let check any alien library copy local alien = nil if package.loaded.alien then alien = package.loaded.alien elseif package.loaded.alien_c then -- This is non-wrapped alien library. We freely can use this because we don't use any specific functions from alien = package.loaded.alien_c else alien = require "alien_c" end ``` Или Lua будет сама смотреть в preload? Т.е., кода типа: ``` alien = require "alien_c" ``` достаточно?
Igor
Если бы require использовал таблицу loaded только в целях записи, то от неё было бы мало смысла, ибо приходилось бы городить как раз то, что делал ты
Денис
Ну и еще вопрос к интеллигистам: решил пощупать IntelliJ. Какой плагин под Lua посоветуете?
Snusmumriken
Там есть подсветка луёвого кода? )
EmmyLua был хорош, когда я пробовал.
Денис
EmmyLua был хорош, когда я пробовал.
Да, там оказывается других вариантов и нет. Есть какой-то крутой плагин, но он только под Ultimate.
Да, там оказывается других вариантов и нет. Есть какой-то крутой плагин, но он только под Ultimate.
ТБХ конкретно Idea для Lua ничего не даст. Тот же EmmyLua есть для VSCode, а для него и других редакторов есть и другие хорошие варианты (sumneko_lua language server, например).
Dmitriy
Привет всем, подскажите, как реализовать в луа 5.3 задержку в милисекундах? допустим uart_send_data(data1) delay(200) uart_send_data(data2)
Igor
Опиши сначала своё окружение и место, где скрипт выполняется
Hello, World! 🎄
Привет всем, подскажите, как реализовать в луа 5.3 задержку в милисекундах? допустим uart_send_data(data1) delay(200) uart_send_data(data2)
нужно написать функцию: function sleep(time) last_time = тут получаешь время while(получаешь время - last_time < time) then end end
Dmitriy
FreeRTOS, lua5.3
Igor
FreeRTOS, lua5.3
Какие есть сторонние библиотеки, помимо стандартных из lua?
Dmitriy
эмбед железка на фри или опенртос и луа 5.3 на борту. Есть ли вариант выяснить список библиотек?
Igor
эмбед железка на фри или опенртос и луа 5.3 на борту. Есть ли вариант выяснить список библиотек?
Поищи доку по скриптингу конкретно для этой железки. Может там реализован миллисекундный таймаут.
Dmitriy
get_tick_count () Получите время работы после включения, единица 10 мс. 32 Битовый счетчик, приблизительно 49 Через несколько дней переполнение будет сброшено на ноль, и таймер перезапустится
Dmitriy
нашел такое
Dmitriy
мне не надо в сон. Мне задержку перед исполнением команды бы
Dmitriy
типа послали месседж, ждем 200 мсек , послали месседж
Igor
мне не надо в сон. Мне задержку перед исполнением команды бы
В сон в том смысле, чтобы он не выполнял ничего в отведённый период времени
Dmitriy
может типа таймера на этой фигне замутить?
Igor
может типа таймера на этой фигне замутить?
Можно, если не волнует нагрузка и энергопотребление
Dmitriy
при нажатии на кнопку - сброс таймера timer = get_tick_count () потом послали месседж, затем ждем пока get_tick_count () - timer > 200 послали второй месседж, сбросили таймер
Aqendo
local ffi=require('ffi') ffi.cdef[[ void Sleep(int ms); int poll(struct pollfd *fds, unsigned long nfds, int timeout); ]] local sleep if ffi.os == "Windows" then function sleep(s) ffi.C.Sleep(s*1000) end else function sleep(s) ffi.C.poll(nil, 0, s*1000) end end
Igor
только для машин на windows/linux
Igor
ну и unix-лайках
Aqendo
а вариант с os.clock жрет цпу
Aqendo
Тут из двух зол меньшее
Igor
Тут из двух зол меньшее
я имею ввиду то, что это тупо нереализуемо на встройке через ffi
Aqendo
Блин, а вот казалось бы, просто как два пальца. Да нет.
Igor
целевая машина - встраиваемая платка, у которой нет жирной операционной системы по типу винды и подобных
Igor
соответственно и поведение другое
Igor
но я более чем уверен, что там есть какая-то своя функция для миллисекундного таймаута, её нужно поискать по документации
Dmitriy
start_timer (timer_id, тайм‑аут, обратный отсчет, повтор) Запустите таймер, система автоматически позвонит по истечении тайм‑ аута. on_timer timer_id‑Таймер Я БЫ,0 ~ 31 тайм‑аутПериод ожидания в миллисекундах обратный отсчет‑0 К тому времени,1 Обратный отсчетповторить‑ повторять раз,0 Представляет бесконечное повторение stop_timer (timer_id) Остановить таймер on_timer (timer_id)Функция обратного вызова таймера тайм‑аута get_timer_value (timer_id)Получить текущее время таймера в миллисекундах
Dmitriy
function on_init() start_timer(1, 200, 1, 0)
Dmitriy
Короче вот получается стартовать таймер на 200 мсек с повторением
Dmitriy
Нет - я все перерыл - делая нет (
Cyberpunk enjoyer
который выполняется в системе?
Cyberpunk enjoyer
или есть другие приложения?
Dmitriy
единственный
Cyberpunk enjoyer
используй ffi, и асм своей архитектуры
Dmitriy
тут все тупо просто - нажатие на кнопку выполняет отправку одной или нескольких команд в uart последовательно
Dmitriy
Но вот если просто их подряд слать - приемное устройство пропускает некоторые команды из-за низкой задержки
Cyberpunk enjoyer
Ну, если есть поддержка ffi - asm sleep ( int 15) если нету - простой цикл
Dmitriy
библиотек нет и установить их нельзя. FFI - встроен в 5.3?
Cyberpunk enjoyer
luajit
Cyberpunk enjoyer
FFI Library https://luajit.org/ext_ffi.html
Dmitriy
нету такого (
Dmitriy
А можно используя таймер некоторую функцию задержки написать?
Igor
исходя из этого?
Именно функцию задержки ты никак не сделаешь. Можно сделать типа конвеер команд, табличку, в которую ты будешь отправлять юарты
Igor
И запустить бесконечный таймер, который будет при тике отправлять их, удаляя из таблички
Dmitriy
во блин. я до такого уровня еще не дошел (
Dmitriy
Что то вроде реализации очереди команд?
Igor
Делаешь тиблицу queue, которая в себе держит всякую всячину, создаешь функцию on_timer, при её тике выполняешь uart_send_data(table.remove(queue, 1))