Перейти к содержимому
Bs0Dd

Coverett - пишем программы на C/C++ для OpenComputers II

Рекомендуемые сообщения

covlogo.bmp

 

Coverett - библиотека для взаимодействия с HLAPI устройствами мода OpenComputers II.

Что такое HLAPI устройство? Это новый тип устройств в OC2, к которому относятся большинство девайсов, вроде модулей для робота, красной карты, звуковой карты и прочих. Они управляются через "контроллер", который общается JSON сообщениями с компьютером через символьный файл-поток (по умолчанию "/dev/hvc0"). Для Lua автор уже добавил в систему библиотеку "devices", однако она не слишком быстра, как и Lua в целом. Для С (куда в первую очередь писалась библиотека) работа с JSON сообщениями - довольно утомительная задача. Coverett призван упростить общение с HLAPI устройствами в C и совместимых с ним языках. Разумеется, программы не станут от этого очень легкими в написании, C есть C. Однако, процесс разработки программ для OC2 заметно упростится. Сама по себе библиотека состоит только из "ядра" с набором стандартных функций. Наборы функций для устройств подключаются в виде отдельных "модулей" (папка devices) со своими заголовочными файлами (заголовки нужных устройств затем подключаются в исходнике программы). Поэтому, если вы очень хороший знаток C, то можете писать модули для своих устройств и подключать их к библиотеке при сборке.

 

К сожалению на данный момент полноценная документация еще не готова (две руки - очень мало), но в заголовочных файлах библиотеки есть небольшие комментарии-описания (в формате doxygen), а также несколько программ-примеров, что немного поможет в работе с библиотекой.

 

Также необходимо учесть, что библиотека находится в альфа-стадии. Поэтому не исключено наличие багов и (особенно) утечек памяти, поскольку ранее на C я практически не писал)).

 

Репозиторий на GitHub.

(Инструкция по сборке, а также собранная библиотека и программы находятся там)

 

Немного про скорость:

Скрытый текст

Главное преимущество Coverett над devices для Lua - скорость. Приложения хоть и сложнее в написании и отладке, но быстрее в исполнении, что может быть очень полезно, учитывая невысокую производительность компьютеров OC2.

Показываю на примере:

  • Программа, выводящая список всех HLAPI устройств на Lua (от автора мода) и моя на C (обратите внимание на время выполнения)

           xPHOkYt.png

 

           2zz4nFF.png

           Немногим более секунды, довольно приличная разница.

 

  • Программа для управления редстоун устройствами на Lua и C

           uL4wLd0.png

          Тоже секунда разницы.

 

  • И, наконец, программа для приема файлов с реального компьютера на Lua (import.lua от автора мода) и на C

           kfxcj7I.png  CWPG5xL.png

         Прием одного и того же файла занял 24 секунды (~8.8kbit/s) и 5 секунд (~42.4kbit/s) соответственно.

 

Изменено пользователем Bs0Dd
картинки перекосило
  • Нравится 7
  • Одобряю 1
  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос по оформлению кода. Зачем использовать uppercase для typedef? По сишному кодстайлу uppercase-ом определяют дефайны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, NEO сказал:

Зачем использовать uppercase для typedef? По сишному кодстайлу uppercase-ом определяют дефайны.

Ну, как я уже говорил, на си ранее почти не писал, а кастомные типы вообще делаю впервые, ну пошёл от того, что файловый дескриптор там записан апперкейсом (FILE), оттуда и DEVICE, RESULT и так далее. Не знаю стоит ли переделывать теперь, придётся всю библиотеку перекопать и программы. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
54 минуты назад, Bs0Dd сказал:

файловый дескриптор там записан апперкейсом (FILE)

Легаси -_-. В более свежих стандартах используют snake_case с добавлением _t, это относится к typedef.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, NEO сказал:

В более свежих стандартах используют snake_case с добавлением _t, это относится к typedef.

Чтож, перевернул все и переделал на более правильный вариант, раз уж так.

Нехорошо конечно менять систему библиотеки после выхода в публику, но пока прошло мало времени и никто не начал ей пользоваться, можно и поменять разок.

Изменено пользователем Bs0Dd

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...