Перейти к содержимому
  • 0
SergOmarov

Помогите понять, что не так в управлении дрона

Вопрос

Вот код для компьютера:

local modem=require("component").modem
local keyboard=require("keyboard")
local event = require("event")
local term = require("term")
modem.open(111)
modem.setStrength(10)
while true do
local x=term.read()
local y=term.read()
local z=term.read()
term.write("sending")
modem.broadcast(111,x,y,z)
end

Вот для дрона:

drone = component.proxy(component.list("drone")())
modem = component.proxy(component.list("modem")())
modem.open(111)
while true do
local name,receiverAddress, senderAddress, port, distance, x, y, z = computer.pullSignal(1)
  if name == "modem_message" then
--local tabletAddress=""
--if(sender==computer.address() or tabletAddress)then
dron.move(x,y,z)
--end
end
end

По идее дрон должен смещаться на x,y,z, переданные через беспроводной модем, но он тупо вырубается(

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


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

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

Переменная с АПИ дрона у тебя называется drone, а вызываешь метод ты из нилловой переменной, вместо drone ты написал dron


Меня вообще кто-то видит? Зеро,тут другая ошибка. Он метод вызывает фиг знает откуда.


e5fe402e97.jpg

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


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

Вот код для компьютера:

local modem=require("component").modem
local keyboard=require("keyboard")
local event = require("event")
local term = require("term")
modem.open(111)
modem.setStrength(10)
while true do
local x=term.read()
local y=term.read()
local z=term.read()
term.write("sending")
modem.broadcast(111,x,y,z)
end

Вот для дрона:

drone = component.proxy(component.list("drone")())
modem = component.proxy(component.list("modem")())
modem.open(111)
while true do
local name,receiverAddress, senderAddress, port, distance, x, y, z = computer.pullSignal(1)
  if name == "modem_message" then
--local tabletAddress=""
--if(sender==computer.address() or tabletAddress)then
dron.move(x,y,z)
--end
end
end

По идее дрон должен смещаться на x,y,z, переданные через беспроводной модем, но он тупо вырубается(

Посмотри на первую строку: drone = component.proxy(component.list("drone")())

И на строку с управлением: dron.move(x,y,z)

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


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

Пробовал использовать tonamber() - не помогло.


Посмотри на первую строку: drone = component.proxy(component.list("drone")())

И на строку с управлением: dron.move(x,y,z)

omg)) спасибо)

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


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

Функция term.read возвращает во-первых строку, а не число, во-вторых строка эта заканчивается символом "/n". 

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


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

Серг,ты слепой. Во первых: tonumber(value), во вторых: напиши не dron.move(x, y, z), а drone.move(x, y, z)

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


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

Еще один вопрос, не по программе:

когда дрона после старта снимаешь, он не стакуется с точной копией себя(если без включения поставить и снять - стакуется), это что значит: при запуске что-то изменяется в eeprom?(специально ничего не изменяю)


Переменная с АПИ дрона у тебя называется drone, а вызываешь метод ты из нилловой переменной, вместо drone ты написал dron


Меня вообще кто-то видит? Зеро,тут другая ошибка. Он метод вызывает фиг знает откуда.


e5fe402e97.jpg

я же написал: спасибо, то есть у мя заработало...


tonumber()

тут я описался)

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


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

Еще один вопрос, не по программе:

когда дрона после старта снимаешь, он не стакуется с точной копией себя(если без включения поставить и снять - стакуется), это что значит: при запуске что-то изменяется в eeprom?(специально ничего не изменяю)

 

 Очевидно, для eeprom дрона создается новая папка на сервере. Т.е. eeprom получает уникальный id и стакаться уже ни с кем не может.

К стати, как снимать дрона? А то я поставил, а снять не могу.

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


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

 

я же написал: спасибо, то есть у мя заработало...

 

Не увидел

 Очевидно, для eeprom дрона создается новая папка на сервере. Т.е. eeprom получает уникальный id и стакаться уже ни с кем не может.

К стати, как снимать дрона? А то я поставил, а снять не могу.

ШИФТ + ПКМ

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


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

Немного обновил вызов move, теперь он

drone[action](...)--action - строка

Но почему не работает?

Если что, мне так надо для вызова других функций, но пока я кроме move ниче не вызывал

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

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


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

Нормально код напиши


event, _, _, _, _, action, arg1, arg2, arg3 = computer.pullSignal()

if event=="modem_message" then

  drone[action](arg1, arg2, arg3)

end ?

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


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

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

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


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

Гораздо лучше будет сделать так: ставишь на дрона этот код: CC-bios NET, и на планшете просто отправляешь данные дрону


Планшет-часть: while true do modem.broadcast(42, io.read()) end

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


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

Типо, отправлять код?


Это не пойдет


И еще проблема:

пытаюсь через контроллер инвенторя открыть сундук перед дронов, он вырубается.

if typeAction=="move\n" then
drone.move(tonumber(x),tonumber(y),tonumber(z))
elseif typeAction=="open\n" then
for i=1,invController.getInventorySize(int) do
invController.suckFromSlot(int,i)
dropFromSlot(1)--защита от переполнения))
end

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


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

А биндить нет?Если меня на сервак пустят,покажу тебе код


Я просто код отправляю по нажатию на кнопку

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


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

Вот тебе код грабежа:for i=0, 5 do if drone.suck(i) then break end for i=1, 60 do drone.suck(i) drone.drop(1) end


Кнопки

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


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

а я не умею) кнопки биндить...


 

 

Вот тебе код грабежа

Он не работает 

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


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

Ок) А почему тебя не пускают?

И если что, я в одиночке тестирую

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


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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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


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