Лидеры
Популярный контент
Показан контент с высокой репутацией 23.06.2022 в Сообщения
-
1 баллизначально разрабатывалась под eeprom от сюда и фичи boot to external os и много плохого кода ос была портирована на скорую руку так что извините и зарепортире если работы вдруг окажется нестабильной о любых бага просьба репортить в тему функционал установка привата на робота (ака useradd) настройка автозагрузки установка одной из 2 предустановленных тем скачивания программ по url показ документации к программам перемежения/копирования/переименования программ запуск программ установка ос на диск установка с робота: перейдите в тему мода для openOS() и откройте dev устоновшик, и устоновите им micro bios, затем введите на роботе команду: mkdir /boot/kernel; wget https://raw.githubusercontent.com/igorkll/roboOS/main/source.lua /boot/kernel/roboOS -f затем переключите ос, для этого при загрузке micro bios нажмите alt найтите диск робота и выберите /boot/kernel/roboOS установка с компьютера: устоновите диск будушего и разобраного робота в компьютер перейдите туда куда ом смонтирован (обычьно /mnt/xxx (где xxx первые три буквы uuid диска)) а зачем введите команду wget https://raw.githubusercontent.com/igorkll/roboOS/main/source.lua init.lua пример программы для данной ос(круговая копалка) local robot = component.proxy(component.list("robot")()) if gui then gui.status("to exit press ctrl+c") end local sides = { bottom = 0, top = 1, back = 2, front = 3, right = 4, left = 5, unknown = 6, down = 0, up = 1, north = 2, south = 3, west = 4, east = 5, negy = 0, posy = 1, negz = 2, posz = 3, negx = 4, posx = 5, forward = 3 } local damegeWait = 0.5 ----------------------------------------------- local function interrupt(time) local e = {computer.pullSignal(time or 0.1)} if e[1] == "key_down" and e[3] == 3 and e[4] == 46 then error("terminated", 0) end end local function delay(time) local inTime = computer.uptime() while computer.uptime() - inTime < time do interrupt(time - (computer.uptime() - inTime)) end end local oldInterruptTime = computer.uptime() local function interruptTimer() if computer.uptime() - oldInterruptTime > 1 then interrupt() oldInterruptTime = computer.uptime() end end ----------------------------------------------- local function wait(event) while not event() do interruptTimer() end end local function move(side, swing, dmg) while true do interruptTimer() local detectOk, detectOut, detectType = pcall(robot.detect, side) if not detectOk or not detectOut then if robot.move(side) then break end else if swing and (dmg or detectType ~= "entity") then robot.swing(side) if damegeWait and detectType == "entity" then delay(damegeWait) end end end end end local function swing(side, dmg) local swingCount, detectOut, detectType = 0, nil, nil while true do interruptTimer() swingCount = swingCount + 1 detectOut, detectType = robot.detect(side) if detectType == "liquid" or detectType == "air" then break elseif detectType == "entity" then if not dmg then break end if not robot.swing(side) then break end delay(damegeWait) if swingCount >= 16 then break end else if not robot.swing(side) then break end if swingCount >= 4 then break end end end end local function waitEntity(side) while select(2, robot.detect(side)) == "entity" do interruptTimer() end end ----------------------------------------------- local size = 1 while true do for i = 1, 2 do for i2 = 1, size do swing(sides.up, true) swing(sides.down, true) move(sides.forward, true, true) end robot.turn(false) end size = size + 1 end демо программа демонстрирующая работу gui local docs = {[0] = "TUT OSNOVNA DOCA A UNICODE NE PODDERHITICA POTOMU CHE EKONOMIL BYTES FOR EEPROM"} local strs = {} local funcs = {} table.insert(strs, "null") table.insert(docs, "null menu point") table.insert(funcs, false) table.insert(strs, "yesno") table.insert(docs, "yesno gui element") table.insert(funcs, function() if gui.yesno("shutdown?") then computer.shutdown() end end) table.insert(strs, "yesno") table.insert(docs, "yesno gui element") table.insert(funcs, function() if gui.yesno("shutdown?") then computer.shutdown() end end) table.insert(strs, "read") table.insert(docs, "input") table.insert(funcs, function() local data = gui.read("press ctrl+c to cancel") if data then gui.warn("msg: " .. data) end end) for i = 100, 2000, 100 do table.insert(strs, tostring(i)) table.insert(docs, "test doc for menu point " .. tostring(i)) table.insert(funcs, function() computer.beep(i, 0.1) end) end gui.setData("gui test", docs, strs) local num, scroll = 1, 0 while true do num, scroll = gui.menu(num, scroll) if funcs[num] then funcs[num]() else gui.warn("is null menu point") end end документация для пользователей программы могут располагаться на любых дисках и дискетах, автозагрузка привязывается к конкретному диску и ссылается на конкретный файл а ссылка лежит на диск с установленной автозагрузкой в /roboOS/autorun.cfg настройки ос храниться в /roboOS/settings.cfg на системном диске такая система позволяет легко поставить на робота одну автозагрузочную программу а на дискету другую, причем информация о том какая программа автозагрузочная лежит на диске а не в системе, PS если хотите создать автозагрузочную дискету то создайте на ней файл /roboOS/autorun.cfg а в нем ссылка не файл на этой же дискете, например /roboOS/programs/karer/main.lua каждая программа имеет свою папку в /roboOS/programs там должен находиться файл main.lua а так же может находиться файл doc.txt с небольшим описаниям обратите внимания что при скачивании программы по url будет скачан только файл main.lua однако при входе вы сможете скачать все необходимые файлы в программу первым аргументом передаться табличка с некими данными о этой программе а конкретнее имеет в себе 2 ключа fs proxy файловой системы от куда произошёл запуск программы и file с путем до главного файла этой программы по у автозагрузки приоритет на внешние диски при запуске автозагрузочного файла у вас есть секунда на то чтобы отменить запуск и сразу попасть в меню для этого необходимо нажать alt
-
0 баллов
Эта таблица лидеров рассчитана в Москва/GMT+03:00
