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

Дистанционное управление компьютером [ПОМОГИ]

Вопрос

Привет, форумчане! 
Возник вопрос по созданию программы для управления компьютером из ComputerCraft с Advanced Wireless Pocket Computer.
И так, я сделал программу таким образом:
С телефона отправляется сообщение с особым кодом , компьютер принимает код и сравнивает его с образцом, сравнивание сделано для того, что бы кто-то случайно, или нет, не заброадкастил то сообщение, которое ждет мой компьютер и случайно не спровоцировал его на выполнение моей команды. Так вот в чем проблема, я очень люблю что бы все не только хорошо работало, но и было оформлено более менее красиво , и во время ожидания получения сообщения и до его прибытия, по моей идее, должно быть такое ожидание:

wait.gif

 

Я думал сделать подобное "анимированное" ожидание с помощью цикла while, но почему-то вместо анимации и удачного выполнения программы я получил черный экран и программа ничего не выпола в том числе и не приняла сообщение посылаемое с телефона.
Пожалуйста объясните, как я должен кодом изобразить такой алгоритм:
"Пока сообщение не пришло делай ...(анимация), принимай сообщение" а после принятия сообщения компьютер подает сигнал redston'а  ну и т.д.".
Надеюсь, что поймете, если есть ко мне вопросы - задавайте.

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

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


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

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

Алгоритм бы ваш увидеть, а то так ничего не понятно. Мы же не клуб начинающих оракулов.  :)

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


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

Алгоритм бы ваш увидеть, а то так ничего не понятно. Мы же не клуб начинающих оракулов.  :)

 

Вот то, над чем я кумекаю:

...

rednet.open("right")
while (Я не особо понимаю какое условие сюда пихать, но вобще было message == nil) do
print(wait()) -- wait() - функция с этой анимацией 
rednet.receive()
end
...

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


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

 

Вот то, над чем я кумекаю:

...

rednet.open("right")
while (Я не особо понимаю какое условие сюда пихать, но вобще было message == nil) do
print(wait()) -- wait() - функция с этой анимацией 
rednet.receive()
end
...

 

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

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


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

Вот то, над чем я кумекаю:

Функция rednet.receive() сама ждёт, пока не получит сообщение. Но, чтобы при этом анимацию загрузки делать с использованием реднет, одним потоком не обойтись. Нужно использовать функцию parallel.waitForAny().

function wait() -- Функция отрисовки экрана загрузки
    while true do
        ...
        slepp(1) -- Это важно!
    end
end

parallel.waitForAny(wait, function() id, message = rednet.receive() end)

Вот как-то так.

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

А чего нельзя? Кто-то запрещает?  ;)

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

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


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

 

 

А чего нельзя? Кто-то запрещает? 

Я быстро прошёлся по коду, показалось что он по модему функцию передавал. А в ОС нельзя по модему функции и таблицы передавать. 

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


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

Можно и без распараллеливания

repeat

mess=rednet.receive(1)

print(--выводим анимацию)

until mess==что_то

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

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


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

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

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

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

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

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

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

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

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


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