ベクゾッド
ベクゾッド
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
Igor
Igor
Если бы require использовал таблицу loaded только в целях записи, то от неё было бы мало смысла, ибо приходилось бы городить как раз то, что делал ты
Денис
Денис
Ну и еще вопрос к интеллигистам: решил пощупать IntelliJ. Какой плагин под Lua посоветуете?
Snusmumriken
Там есть подсветка луёвого кода? )
ㅤ
EmmyLua был хорош, когда я пробовал.
Денис
Dmitriy
Привет всем, подскажите, как реализовать в луа 5.3 задержку в милисекундах?
допустим
uart_send_data(data1)
delay(200)
uart_send_data(data2)
Igor
Igor
Опиши сначала своё окружение и место, где скрипт выполняется
Hello, World! 🎄
Dmitriy
FreeRTOS, lua5.3
Igor
Hello, World! 🎄
Igor
FreeRTOS, lua5.3
Какие есть сторонние библиотеки, помимо стандартных из lua?
Dmitriy
эмбед железка на фри или опенртос и луа 5.3 на борту. Есть ли вариант выяснить список библиотек?
Dmitriy
get_tick_count ()
Получите время работы после включения, единица 10 мс.
32 Битовый счетчик, приблизительно 49 Через несколько дней переполнение будет сброшено на ноль, и таймер перезапустится
Dmitriy
нашел такое
Igor
Dmitriy
мне не надо в сон. Мне задержку перед исполнением команды бы
Dmitriy
типа послали месседж, ждем 200 мсек , послали месседж
Dmitriy
может типа таймера на этой фигне замутить?
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
Igor
только для машин на windows/linux
Igor
ну и unix-лайках
Aqendo
а вариант с os.clock жрет цпу
Aqendo
Тут из двух зол меньшее
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 мсек с повторением
Igor
Dmitriy
Нет - я все перерыл - делая нет (
Cyberpunk enjoyer
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
А можно используя таймер некоторую функцию задержки написать?
Dmitriy
Igor
исходя из этого?
Именно функцию задержки ты никак не сделаешь. Можно сделать типа конвеер команд, табличку, в которую ты будешь отправлять юарты
Igor
И запустить бесконечный таймер, который будет при тике отправлять их, удаляя из таблички
Dmitriy
во блин. я до такого уровня еще не дошел (
Dmitriy
Что то вроде реализации очереди команд?
Igor
Igor
Делаешь тиблицу queue, которая в себе держит всякую всячину, создаешь функцию on_timer, при её тике выполняешь uart_send_data(table.remove(queue, 1))
Dmitriy