Перейти к публикации
Форум - ComputerCraft
therealbattler

Контроль реактора с помощью компьютера

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

Здравствуйте!

 

Ко мне пришла в голову мысль - сделать дистанционное управление реактором. То есть ты сидишь за компьютером, тебе выводится, скажем, температура реактора, и в случае перегрева он отключается.

 

Это сделать несложно, но в модах нет температурных сенсоров. Поэтому выход для меня следующий - сделать робота, который будет мониторить этовсёб а такжеб возможно, работать с инвентарём реактораю Вопрос в следующем - можно ли это сделать? Пытался ли кто-нибудь и что из этого получилось?

 

Спасибо за ответы!

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


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

Хм. Если компьютер не может получить температуру реактора в виду отсутствия сенсора, то почему это сможет сделать робот? В чем у робота преимущество?

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


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

Дима, видимо, робот будет по замыслу сидеть в самом реакторе, в центре активной зоны, прямо попой на стержнях, и будет там всё мониторить, следить за цепной реакцией и орать о критической температуре=)

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


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

Не. Я понимаю, робот может вставлять/вынимать стержни и охладители. Но как контролировать температуру?

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


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

Не. Я понимаю, робот может вставлять/вынимать стержни и охладители. Но как контролировать температуру?

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

 

Проблема там присутствует пока только вроде для ЖЯР, так как  там нет толком пока порта управления для ПК(адаптера), и не совсем понятно, как этой "многоблочкой" управлять программно.

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


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

Могу предположить по поводу робота. Робот перед выключением (от перегрева процессора) по wifi подаёт сигнал, что реактор очень сильно нагрелся, а пк в свою очередь будет вырубать реактор и пытаться запустить робота :D.(Если что это шутка)

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


Ссылка на сообщение
Поделиться на других сайтах
Ко мне пришла в голову мысль - сделать дистанционное управление реактором. То есть ты сидишь за компьютером,

Адаптер, приставленный к реактору предоставит необходимый интерфейс, а транспозер позволит помещать/извлекать компоненты в реакторе. Но работает адаптер только с обычным реактором. С жидкостной версией этот номер не пройдёт.

 

Например -     print(component.reactor_chamber.getHeat())      - выведет на печать температуру реактора

 

Само собой, что робот с адаптером работать не может. Только компьютер.

О том, как узнать доступные методы: http://computercraft.ru/topic/752-raskrytie-vozmozhnostei-adaptera-s-modami-ic2exp-i-gc/?do=findComment&comment=9854

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

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


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

В OpenOS уже есть программа для просмотра методов.

Пишем: components -l <имя компонента> — и всё, весь список с документацией.

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


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

Что-то типа такого?

 

 

local component = require('component')
local gpu = component.gpu
local event = require('event')
local term = require('term')
local reactor
if component.isAvailable('reactor') then
  reactor = component.reactor
elseif component.isAvailable('reactor_chamber') then
  reactor = component.reactor_chamber
end

local tbl = {
  {
    {3, 2},  {9, 2},  {15, 2},
    {3, 5},  {9, 5},  {15, 5},
    {3, 8},  {9, 8},  {15, 8},
    {3, 11}, {9, 11}, {15, 11},
    {3, 14}, {9, 14}, {15, 14},
    {3, 17}, {9, 17}, {15, 17}
  },
  {
    {3, 2},  {9, 2},  {15, 2},  {21, 2},
    {3, 5},  {9, 5},  {15, 5},  {21, 5},
    {3, 8},  {9, 8},  {15, 8},  {21, 8},
    {3, 11}, {9, 11}, {15, 11}, {21, 11},
    {3, 14}, {9, 14}, {15, 14}, {21, 14},
    {3, 17}, {9, 17}, {15, 17}, {21, 17}},
  {
    {3, 2},  {9, 2},  {15, 2},  {21, 2},  {27, 2},
    {3, 5},  {9, 5},  {15, 5},  {21, 5},  {27, 5},
    {3, 8},  {9, 8},  {15, 8},  {21, 8},  {27, 8},
    {3, 11}, {9, 11}, {15, 11}, {21, 11}, {27, 11},
    {3, 14}, {9, 14}, {15, 14}, {21, 14}, {27, 14},
    {3, 17}, {9, 17}, {15, 17}, {21, 17}, {27, 17}},
  {
    {3, 2},  {9, 2},  {15, 2},  {21, 2},  {27, 2},  {33, 2},
    {3, 5},  {9, 5},  {15, 5},  {21, 5},  {27, 5},  {33, 5},
    {3, 8},  {9, 8},  {15, 8},  {21, 8},  {27, 8},  {33, 8},
    {3, 11}, {9, 11}, {15, 11}, {21, 11}, {27, 11}, {33, 11},
    {3, 14}, {9, 14}, {15, 14}, {21, 14}, {27, 14}, {33, 14},
    {3, 17}, {9, 17}, {15, 17}, {21, 17}, {27, 17}, {33, 17}},
  {
    {3, 2},  {9, 2},  {15, 2},  {21, 2},  {27, 2},  {33, 2},  {39, 2},
    {3, 5},  {9, 5},  {15, 5},  {21, 5},  {27, 5},  {33, 5},  {39, 5},
    {3, 8},  {9, 8},  {15, 8},  {21, 8},  {27, 8},  {33, 8},  {39, 8},
    {3, 11}, {9, 11}, {15, 11}, {21, 11}, {27, 11}, {33, 11}, {39, 11},
    {3, 14}, {9, 14}, {15, 14}, {21, 14}, {27, 14}, {33, 14}, {39, 14},
    {3, 17}, {9, 17}, {15, 17}, {21, 17}, {27, 17}, {33, 17}, {39, 17}},
  {
    {3, 2},  {9, 2},  {15, 2},  {21, 2},  {27, 2},  {33, 2},  {39, 2},  {45, 2},
    {3, 5},  {9, 5},  {15, 5},  {21, 5},  {27, 5},  {33, 5},  {39, 5},  {45, 5},
    {3, 8},  {9, 8},  {15, 8},  {21, 8},  {27, 8},  {33, 8},  {39, 8},  {45, 8},
    {3, 11}, {9, 11}, {15, 11}, {21, 11}, {27, 11}, {33, 11}, {39, 11}, {45, 11},
    {3, 14}, {9, 14}, {15, 14}, {21, 14}, {27, 14}, {33, 14}, {39, 14}, {45, 14},
    {3, 17}, {9, 17}, {15, 17}, {21, 17}, {27, 17}, {33, 17}, {39, 17}, {45, 17}},
  {
    {3, 2},  {9, 2},  {15, 2},  {21, 2},  {27, 2},  {33, 2},  {39, 2},  {45, 2},  {51, 2},
    {3, 5},  {9, 5},  {15, 5},  {21, 5},  {27, 5},  {33, 5},  {39, 5},  {45, 5},  {51, 5},
    {3, 8},  {9, 8},  {15, 8},  {21, 8},  {27, 8},  {33, 8},  {39, 8},  {45, 8},  {51, 8},
    {3, 11}, {9, 11}, {15, 11}, {21, 11}, {27, 11}, {33, 11}, {39, 11}, {45, 11}, {51, 11},
    {3, 14}, {9, 14}, {15, 14}, {21, 14}, {27, 14}, {33, 14}, {39, 14}, {45, 14}, {51, 14},
    {3, 17}, {9, 17}, {15, 17}, {21, 17}, {27, 17}, {33, 17}, {39, 17}, {45, 17}, {51, 17}}
}

local tSize = {[22] = 1, [28] = 2, [34] = 3, [40] = 4, [46] = 5, [52] = 6, [58] = 7}
local r_t = tSize[reactor.getInventorySize()]
local side_r = 3

local function list()
  for k = 1, #tbl[r_t] do
    local item = reactor.getStackInSlot(k)
    if item ~= nil then
      gpu.fill(tbl[r_t][k][1], tbl[r_t][k][2], 3, 2, '#')
      
    end
  end
end

local function setka()
  for i = 1, #tbl[7] do
    gpu.fill(tbl[7][i][1], tbl[7][i][2], 3, 2, 'X')
  end
end

local function click()
  while 1 do
    local e = {event.pull('touch')}
    for j = 1, #tbl[r_t] do
      if e[3] >= tbl[r_t][j][1] and e[4] >= tbl[r_t][j][2] and e[3] <= tbl[r_t][j][1]+3 and e[4] <= tbl[r_t][j][2]+2 then
        term.clear()
        setka()
        list()
        local item = reactor.getStackInSlot(j)
        if item ~= nil then
          gpu.set(1, 20, 'item: '..item.display_name)
          if item.dmg ~= nil and item.max_dmg ~= nil then
            gpu.set(30, 20, ' '.. string.sub(item.dmg/item.max_dmg, 1, 4) .. '%')
          end
          break
        end
      end
    end
    gpu.set(1, 21, 'energy: '..reactor.getEUOutput())
    gpu.set(1, 22, 'heat: '..string.sub(reactor.getHeat()/reactor.getMaxHeat(), 1, 4)..' %')
  end
end

term.clear()
setka()
list()
click()

 

 

 

Как руки дойдут - доведу до ума.

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×