Totoro 3 563 Опубликовано: 7 сентября, 2017 (изменено) Перенос статьи Эта тема была перенесена из блока "Статьи". Автор оригинала: ShuraGamer. Сначала выскажу огромное спасибо @Totoro, @Alex, @Fingercomp, @LeshaInc за их программы, благодаря которым более-менее смог разобраться в очках.Небольшая предыстория(кому неинтересно, основной текст ниже): Началось все с дверного замка Тоторо, в котором использовались неведомые мне до этого очки для вывода информации под названием Terminal Glasses. Мне захотелось побольше узнать о них, но увы-ни в каких, даже англоязычных источниках подробного гайда я не нашел. Спросил на форуме, может кто знает? Кибер предложил написать гайд самому, на халяву вайт получить. Тут-то , немного покопавшись в документации,я и осознал весь размер подложенной мне свинки... Я, наивная душа, подумал, а, фигня, тут же только вывод данных! OpenPeripheral оказался отдельным модом, и писать гайд только по одной его части не имеет особого смысла. Так что придется разбираться полностью. А пока что-держите первую часть гайда по моду OpenPeripheral - Terminal Glasses!Приятного ознакомления!Итак, начнем мы с физической части нашей парочки - Terminal Glasses и Terminal Glasses Bridge. В дальнейшем я буду называть их "очки" и "мост" для простоты.Методы API одинаковы как в ОС, так и в СС Начнем с принципа работы очков. Он достачно прост: информация передается с компьютера на мост, а с моста уже на очки(прим. Можно подключить несколько очков). Если честно, я хз, как данные передаются на очки, видимо тут квантовая зависимость поиграла...Итак, мы ставим мост рядом с компьютером. Далее мы подключаем очки к мосту, просто райткликнув ими по блоку. Готово! Все подготовления завершены, можем начинать программировать!Сначала подключаем мост к компу: OC -- com = require('component') bridge = com.openperipheral_bridge CC -- bridge = peripheral.wrap(сторона подключения к компьютеру) Или bridge=peripheral.wrap("bridge") Теперь мы разбираемся с API:brige.addBox([X-координата], [Y-координата] , [Размер по вертикали] , [Размер по горизонтали], [Хексадецимальный код*], [Прозрачность**]) -- добавляет прямоугольник по заданным параметрам.*Хексадецимальный код - цветовой код, подробнее - гугл.Малая таблица цветов: Черный #000000 Белый #FFFFFF Красный #FF0000 Зеленый #00FF00 Синий #0000FF Желтый #FFFF00 Морская волна #00FFFF Розовый #00FF00 Подробная таблица цветовых кодов:Тык!Цвета подаются в программу в виде 0xКОД, например 0x000000**Прозрачность: 1 - полностью видимый; 0 - еле заметный(Дробные числа работают)bridge.addText([X-координата], [Y-координата] , [Строка] , [Хексадецимальный код]) - выводит строку в нужных координатах.bridge.clear() - сбрасывает все данные в мосте.Итак, вы все еще помните принцип передачи данных? Так вот, сами собой данные в очках не появятся, мы должны вручную "отправлять" картинку с моста на очки(При отправлении данных с моста на очки вся предыдущая информация сбрасывается) В этом нам поможет bridge.sync().Для ясности мы напишем небольшую программку, которая показывала бы нам точное время(Напишем ее на OC): --TIMEONGLASSES-- com = require('component') bridge = com.openperipheral_bridge function addbox() bridge.addBox(1,1,80,10,0xFFFFFF,0.2) end function addtime() datetime = os.date("!*t",os.time()) time ="TIME"..datetime.hour..":"..datetime.min bridge.addText(5,2,time,0xFF0000) end --MAIN-- while true do bridge.clear() addbox() addtime() bridge.sync() os.sleep(0.1) end Итак, господа, разберем по полочкам вышенаписанную программуФункция addbox() создает почти прозрачный прямоугольник слева сверху на экранеФункция addtime() выводит текущее время, кому интересна строчка: datetime = os.date("!*t",os.time()), прошу по ссылке:Тык!Далее мы смотрим на главный цикл. Разберем его построчноwhile true do и end - бесконечный циклbridge.clear() - очищаем мост для новой информацииaddbox(),addtime() - добавляем табличку со временемbridge.sync() - отсылаем табличку на очкиos.sleep(0.1) - ждем десятую секундыВсем спасибо за внимание, надеюсь, помидоры будут не сильно тухлыми :/P.S. BB-зло! Изменено 12 марта, 2018 пользователем Totoro поправил ошибки в исходнике 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nifon 1 Опубликовано: 12 марта, 2018 Тут пара ошибок в программке : bridge = com.openperipheral_brige => bridge = com.openperipheral_bridge time ="TIME",datetime.hour,":",datetime.min => time ="TIME"..datetime.hour..":"..datetime.min 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 12 марта, 2018 Тут вообще не самый идеальный исходник. Это просто репост старого-старого гайда, практически без изменений.Для OpenComputers лучше воспользоваться модом OpenGlasses, который гораздо удобнее в плане использования, и даёт куда больше фич. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах