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

Передача данных по рэдстоуну

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

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

Работает быстро

слева-приемник

справа-передатчик

 

 

Использование: сначала запускаем приемник,затем передатчик,вводим число,которое хотим передать,и ждем.

Внимание! Не вводить числа больше 1000,если не хотите прождать минуту-другую.

 

Новая версия будет скоро(завтра или раньше)

           V 1.1 (Релиз,сила сигналов)

Передатчик http://pastebin.com/KeQk3iPv

Приёмник http://pastebin.com/FztBeV6E

           V0.1 (сырая,двоичный код)

Добавляется кабель сзади!

Передатчик:http://pastebin.com/2f1YAdTM

Приёмник:http://pastebin.com/f1bGEvbb

P.S. Кот-нибудь знает,как перевести код символа в символ,кроме elseif-ов?(решено)

Изменено пользователем Quant
  • Like 7

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


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

С расстоянием уровень сигнала уменьшается. Такая передача будет работать правильно лишь при определенном расстоянии между приемником и передатчиком. Подумай над передачей двоичным кодом.

  • Like 3

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


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

Кот-нибудь знает,как перевести код символа в символ,кроме elseif-ов?

 

Глянь тут: http://lua-users.org/wiki/StringLibraryTutorial

(в частности string.byte и string.char)

А также тут: http://ocdoc.cil.li/api:keyboard

  • Like 1

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


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

Глянь тут: http://lua-users.org/wiki/StringLibraryTutorial

(в частности string.byte и string.char)

А также тут: http://ocdoc.cil.li/api:keyboard

Спасибо! Собрался делать шифратор,

возможно когда-нибудь будет.

 

С расстоянием уровень сигнала уменьшается. Такая передача будет работать правильно лишь при определенном расстоянии между приемником и передатчиком. Подумай над передачей двоичным кодом.

Сейчас попробую.

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


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

У меня вопрос.. Зачем?!!

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


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

Ммм... Так... То есть у тебя каждое слово имеет свой код? Тогда твоя прога на данный момент актуальна только для символов, иначе это какой-то Код Вечности получится) И,да, надо найти другой способ преобразования строки в число. Tonumber не годится. Далее. Введеную строку мы преобразуем в символы, а потом передаем по одному. Можно попробовать использовать юникод. А так-идея годная :)

P.S. для тех, кто не понял принципа проги-объясню: прога преобразует строку в число, а затем передает его с помощью сигналов разной силы, например 65 она выдаст как 4 сигнала 15 и сигнал 5. Очень интересная задумка, автор молодец. Например я попробовал бы идти через двоичную систему исчисления.

P.P.S Проблема скорости решается уменьшением времени ожидания, поставь symtime 0.1 и скорость повысится в 10 раз!

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

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


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

Ммм... Так... То есть у тебя каждое слово имеет свой код? Тогда твоя прога на данный момент актуальна только для символов, иначе это какой-то Код Вечности получится) И,да, надо найти другой способ преобразования строки в число. Tonumber не годится. Далее. Введеную строку мы преобразуем в символы, а потом передаем по одному. Можно попробовать использовать юникод. А так-идея годная :)

P.S. для тех, кто не понял принципа проги-объясню: прога преобразует строку в число, а затем передает его с помощью сигналов разной силы, например 65 она выдаст как 4 сигнала 15 и сигнал 5. Очень интересная задумка, автор молодец. Например я попробовал бы идти через двоичную систему исчисления.

P.P.S Проблема скорости решается уменьшением времени ожидания, поставь symtime 0.1 и скорость повысится в 10 раз!

Ускорять ну получается,сообщения идут в "молоко"

Пока-что передача строк только планируется.

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

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


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

Ускорять ну получается,сообщения идут в "молоко"

Пока-что передача строк только планируется.

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

Нет, твой вариант имеет право на жизнь, но нужно что-то делать с передачей, твоя прога анализирует сигнал, и на это тратится время, в итоге оно и создает дисбаланс программ. Нужно делать что-то наподобие ивентов, то есть что бы прога ожидала сигнала, например между каждой передачей делать паузы сигнала редстоуна. Допустим, ты передаешь сигнал 20. Включил редстоун на 15, потом на 0; потом на 5. У проги приема в таком случае не будет ожидания по времени, она будет ждать редстоуна, и настраивать время нужно будет только в точке отправления. Если ты собираешься делать быструю систему, то тебе все равно придется отказаться от времени ожидания.

P.S. двоичный код-штука хорошая, но, во-первых, медленная а во-вторых, труднореализуемая из-за той же проблемы, что и в случае с редстоуном с силой. Тебе придется все равно делать вышеперечисленное, только вместо 0 и 1 у тебя будут 1 и 2. В общем, смотри сам.

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

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


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

Эт абракадабра какая-то :|

Если абракадабру почитать на ночь, и уснуть, положив два кусочка медного провода под подушку, то наутро абракадабра станет менее кадабристой.

  • Like 2

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


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

Если абракадабру почитать на ночь, и уснуть, положив два кусочка медного провода под подушку, то наутро абракадабра станет менее кадабристой.

Хороший подход. Перед сном по чайной ложке знаний каждый день.

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


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

Хороший подход. Перед сном по чайной ложке знаний каждый день.

Перед сном я кодю. Знаете ли, расслабляет

Если абракадабру почитать на ночь, и уснуть, положив два кусочка медного провода под подушку, то наутро абракадабра станет менее кадабристой.

Медные провода просочатся в голову?! :О

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


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

Сделай два провода, один - это бит, а второй это подтверждение.

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


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

Сделай два провода, один - это бит, а второй это подтверждение.

Нео, в качестве подтверждения можно просто отключить сигнал, делать два провода нерационально

 

Отправлено с моего HTC One через Tapatalk

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


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

Может лучше сразу 64 битную шину?

Может, лучше сразу сетевую плату?

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


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

Может, лучше сразу сетевую плату?

Противоречит названию темы --- "передача данных по редстоуну", а у тебя получается "передача данных по сети".

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


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

Противоречит названию темы --- "передача данных по редстоуну", а у тебя получается "передача данных по сети".

Это был сарказм -_-

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


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

Нео, в качестве подтверждения можно просто отключить сигнал, делать два провода нерационально

Отправлено с моего HTC One через Tapatalk

Почему? А как ты определишь ноль?

Можно с помощью времени - это делать, но могут быть сбои.

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


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

Почему? А как ты определишь ноль?

Можно с помощью времени - это делать, но могут быть сбои.

Собственно, Квант по времени сначала и сделал, но, как ты и сказал, сбои. Квант реализовал передачу данных с помощью силы редстоуна, т.е. сигнал 20 передается как 15 и 5. Я же предлагаю, что бы приемник не ждал N-ое количество времени, а ожидал сигнала. В ситуации выше - 15,0,5

P.S. ноль-отсутствие сигнала.

P.P.S А вообще, если передавать сигнал на расстояние с помощью цветных проводов, то да-наилучшим вариантом будет дополнительный контрольный провод, то есть программа приема считывает данные с основного провода, когда получает контроль

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


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

Может лучше сразу 64 битную шину?

А есть такие шины?

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


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

Перед сном я кодю. Знаете ли, расслабляет

 

Медные провода просочатся в голову?! :О

Программист, не забывай!

Покодил? Смой за собой!

Прими ложку знаний, и спать!

 

З.Ы.

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

Изменено пользователем swg2you
  • Like 2

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


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

Недавно делал шину(bus) в star-made там нету компутеров так что все на логике. Короче считаешь сколько тебе нужно вариантов 2^Xbit. допутим я делал 5ти битную шину, значит у меня было 0-31, тоесть 32 значения. Дальше подключаю к шине компараторы идентичности, ну в луа обойдемся == тоесть если пришедший бит == тому который ждем отлично нас зовут. еще одна линия (6) в шине Tx то есть линия отправки сигнала. Все слушают Tx если Tx 1 значит надо читать шину. Для расшифровки я делал бинарный кодер и декодер. здесь я думаю можно обойтись tonumber(val,x). Сигналы можно пускать в очередь, тоесть на пятибитной шине можно передать число любого размера главное что бы n * 32 было >= числу, где n колличество передач сигнала. Так же я использовал сигнал 11111 (31) для резета шины, поскольку на шине каждый прибор был с очередью все приборы кроме того код которого слался блокировались до того как отработал этот прибор и послал 11111 в шину. 
Не спал много часов, прогал несколько часов подряд поэтому мысли очень сумбурны).

 

PS Насколько я знаю в майнкрафте 20 тиков в секунду. соответственно скорость сети будет (10 * Xbit) / 8 byte/sec , 10 потому что я бы делал перерыв по одному тику между ближайшими Tx'ми.

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

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


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

Код Грея мог бы помочь, хотя вряд-ли, ускорить обновление блоков невозможно. http://www.computercraft.info/forums2/index.php?/topic/16414-chat-via-redstone-but-its-not-reading-incoming-messages/

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


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

Зарелизил-скорость где-то в 11 раз больше(1000 за 42сек.) предпоследнее обновление передачи!

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


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

Почему не сделаете разрядность канала стольким, сколько уровней силы сигнала? А чтобы сигнал с силой 1 не терялся, используйте изолированные кабели из мода RedLogic.

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

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


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

Почему не сделаете разрядность канала стольким, сколько уровней силы сигнала? А чтобы сигнал с силой 1 не терялся, используйте изолированные кабели из мода RedLogic.

В изолированных силы сигнала нет.

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


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

А если обычный? Из красного сплава, неизолированный.

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


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

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

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

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

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

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

Войти

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

Войти сейчас

×