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

Контроль над 9 реакторами из ic2

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

Моя первая программа на OpenComputers та и вообще первая программа. Попытался сделать максимально продуктивно, но какие бы мои попытки не были улучшить на оборот всё ухудшилась. Буду очень благодарен советам. А суть программы в том что есть у нас 2 пк один собирает информацию про реакторы и отправляет другому, с того можно включать и выключать реакторы.
image.png.b8f7cd0ab620bd807545ea862d257184.png
Сборщик: https://pastebin.com/GmAty2ik

Панель управление: https://pastebin.com/L8JkntkX

А также спасибо @Mihis @Asior @serafim что помогли разобраться в этом страшном мире) 

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


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

Придется допиливать функционал тебе, не очень много допилить, всего то превратить паровоз в самолет при помощи напильника.

  1. Для начала рекомендую зарегистрироваться на пастебине, так как с каждым обновлением программы будут плодиться новые страницы на сайте, что не есть хорошо. Ну и удобнее отредактировать код на пастебине, а тут ссылку менять не надо.
  2. К сожалению программа для реактора будет работать только у тебя. Для начала непонятно как ты разместил адаптеры, что там еще надо подключать и как вообще организовать структуру работы реакторов.
  3. Никогда не делай так!
    local serialize = require("serialization").serialize
    local unserialize = require("serialization").unserialize
    --[[лучше замени этот бред на ]]
    local srl = require("serialization")
    --а в коде программы просто вызывай 
    message = srl.serialize(tbl)
    --и соответсвенно
    tbl = srl.unserialize(mess[6])
  4. У тебя таблица с id есть, там жестко привязаны они, но у других они работать не будут так как id тупо поменяются. Так что надо думать о калибровке/настройке, короче о хранении этих адресов в отдельном файле конфигурации с их подкачкой при запуске программы.
  5. Всегда добавляй в основном цикле паузу программы. У тебя не особо аварийный режим работы, который требует мониторинга каждый тик. Делай обновление всех данных раз в 5 сек. Думаю это будет достаточно. И по на сервере не будет хаотичной нагрузки флудом по карте. Ну и энергию поэкономнее будет расходовать.
  6. Какие-то у тебя проблемы с локальми и глобальными переменными. Я если честно в шоке что оно как-то работает. Конкретно меня смущает таблица tbl. Как-то не вижу я её объявления.
  7. Насчет кнопок ничего сказать не могу, но я бы их сделал пошире и заранее зарезервировал место под числа до 99999,0 (короче 7 символов). Не хватает выравнивания текста по центру, но это уже придирки. А оно случайно не мерцает когда работает?
  8. И последнее чего я не понял, как оно вообще срабатывать умудряется, если 1 программа тупо повисает в ожидании сообщения от 2 программы? Или пока не тыкнешь не обновляются данные?
  9. Гонять туды сюды таблицу ну такое себе если честно.

Ну как-то так, молодец, что осилил такую программу, но рекомендую поправить ошибки в функционале, реализовать расширение, тоесть чтоб можно было не строго 9 реакторов на управление использовать, а на выбор, хочу 1 реактор а хочу 72.

 

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


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

Придется допиливать функционал тебе, не очень много допилить, всего то превратить паровоз в самолет при помощи напильника.

Да, накуралесил он тут

Собрал сейчас два реактора для теста, буду переделывать его фиксированную таблицу

Заодно потом может сваяю инструкцию по подключению этого чуда, вроде разобрался,  как оно тут устроено

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


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

Заодно потом может сваяю инструкцию по подключению этого чуда, вроде разобрался,  как оно тут устроено

может стоит дать ему шанс на переделку?

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


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

Придется допиливать функционал тебе, не очень много допилить, всего то превратить паровоз в самолет при помощи напильника.

  1. Для начала рекомендую зарегистрироваться на пастебине, так как с каждым обновлением программы будут плодиться новые страницы на сайте, что не есть хорошо. Ну и удобнее отредактировать код на пастебине, а тут ссылку менять не надо.
  2. К сожалению программа для реактора будет работать только у тебя. Для начала непонятно как ты разместил адаптеры, что там еще надо подключать и как вообще организовать структуру работы реакторов.
  3. Никогда не делай так!
    
    local serialize = require("serialization").serialize
    local unserialize = require("serialization").unserialize
    --[[лучше замени этот бред на ]]
    local srl = require("serialization")
    --а в коде программы просто вызывай 
    message = srl.serialize(tbl)
    --и соответсвенно
    tbl = srl.unserialize(mess[6])
  4. У тебя таблица с id есть, там жестко привязаны они, но у других они работать не будут так как id тупо поменяются. Так что надо думать о калибровке/настройке, короче о хранении этих адресов в отдельном файле конфигурации с их подкачкой при запуске программы.
  5. Всегда добавляй в основном цикле паузу программы. У тебя не особо аварийный режим работы, который требует мониторинга каждый тик. Делай обновление всех данных раз в 5 сек. Думаю это будет достаточно. И по на сервере не будет хаотичной нагрузки флудом по карте. Ну и энергию поэкономнее будет расходовать.
  6. Какие-то у тебя проблемы с локальми и глобальными переменными. Я если честно в шоке что оно как-то работает. Конкретно меня смущает таблица tbl. Как-то не вижу я её объявления.
  7. Насчет кнопок ничего сказать не могу, но я бы их сделал пошире и заранее зарезервировал место под числа до 99999,0 (короче 7 символов). Не хватает выравнивания текста по центру, но это уже придирки. А оно случайно не мерцает когда работает?
  8. И последнее чего я не понял, как оно вообще срабатывать умудряется, если 1 программа тупо повисает в ожидании сообщения от 2 программы? Или пока не тыкнешь не обновляются данные?
  9. Гонять туды сюды таблицу ну такое себе если честно.

Ну как-то так, молодец, что осилил такую программу, но рекомендую поправить ошибки в функционале, реализовать расширение, тоесть чтоб можно было не строго 9 реакторов на управление использовать, а на выбор, хочу 1 реактор а хочу 72.

 

Наверное в этому списку добавлю привидение к одному типу кавычек (двойные / ориднарные), так код становиться более приятным для чтения.

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


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

Какие-то у тебя проблемы с локальми и глобальными переменными. Я если честно в шоке что оно как-то работает. Конкретно меня смущает таблица tbl. Как-то не вижу я её объявления.

 

Не понял насчёт таблиц, а объявление таблицы происходит в сборщике, после переходит на второй. 
А так спасибо, есть пару идей как переделать и сделать более обширней и функциональней. Но не могу понять как сделать так, чтоб мы получали данные и чтоб в любой момент можно было выключить или включить реактор.

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


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

Не понял насчёт таблиц, а объявление таблицы происходит в сборщике, после переходит на второй. 
А так спасибо, есть пару идей как переделать и сделать более обширней и функциональней. Но не могу понять как сделать так, чтоб мы получали данные и чтоб в любой момент можно было выключить или включить реактор.

Технически - это 2 абсолютно разные таблицы. Ее нужно объявлять при запуске на 2 компьютерах. А во время передачи ты просто считываешь значение 1 таблицы и присваиваешь это значение 2 таблице.

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


Ссылка на сообщение
Поделиться на других сайтах
В 30.01.2021 в 01:55, Flays сказал:

 

Программа великолепна, ведь работает, чего ещё надо. Дальше автору надо клепать патчи/обновления, с которыми: раскрыть для себя некоторые технические моменты, такие как передача данных (значений реакторов, редстоун сигналов) , создание таблицы опросом компонентов с помощью pairs. Жонглирование методами String тоже может пригодиться

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


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

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

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

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

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

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

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

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

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


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