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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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


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

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

 

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

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

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

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

 

З.Ы.

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

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

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


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

Недавно делал шину(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.

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

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


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

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

 

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

Не знаю, чего там Иммибис кушает на обед перед моддингом, но в P:R и в оригинальном RP макс. сила сигнала из любых проводов красных равна 255. Подозреваю, что и в RL та же крипотня.

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


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

Передача информации по редстоуну вряд ли найдет практическое применение. Поэтому поднятую тему считаю интересной только с точки зрения изучения работы реальных последовательных протоколов передачи данных. Ни один из реальных известных мне цифровых протоколов не использует силу сигнала как способ передачи информации. Только наличие/отсутствие. Посему предлагаю автору темы реализовать протокол UART как используемый в известных интерфейсах RS-232 и RS-485. Если это кому то кажется абракадаброй, готов помочь чем смогу.

 

Моё мнение может отличаться от мнения других участников форума.

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


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

Все упирается в лаги, в реальном мире скорость сигнала приближается к скорости света, поэтому можно использовать размещение битов по времени, даже без коррекции ошибок, на огромных скоростях.

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

Где-то видел, как в RedPower делали передачу данных по редстоуну, там долго боролись с двумя проводами (скорость около 1 Мб за 10 минут), потом забили и стали юзать бесцветный кабель.

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


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

Никто не говорит о высоких скоростях. Лучшее на что я рассчитываю - 1 бит/сек. Но для понимания работы этого достаточно. Можно даже осциллограф сделать, что бы смотреть циклограмму.

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


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

Передача информации по редстоуну вряд ли найдет практическое применение. Поэтому поднятую тему считаю интересной только с точки зрения изучения работы реальных последовательных протоколов передачи данных. Ни один из реальных известных мне цифровых протоколов не использует силу сигнала как способ передачи информации. Только наличие/отсутствие. Посему предлагаю автору темы реализовать протокол UART как используемый в известных интерфейсах RS-232 и RS-485. Если это кому то кажется абракадаброй, готов помочь чем смогу.

 

Моё мнение может отличаться от мнения других участников форума.

Есть стационарные крафтовые роботы, так почему бы не сэкономить на ресурсах?

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


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

Никто не говорит о высоких скоростях. Лучшее на что я рассчитываю - 1 бит/сек. Но для понимания работы этого достаточно. Можно даже осциллограф сделать, что бы смотреть циклограмму.

Реализовать UART - отличная задача. Осциллограф, показывающий сигналы на входах - вообще крутотень. А для тактования, думаю, можно взять computer.uptime(). Возможно удастся добиться скорости передачи 1 бит/2 тика.

Нужно прикинуть суммарную погрешность.

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


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

Alex,не повезёт же тебе...

 

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


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

Какая интересная и живая тема, а у меня как раз инета не было. Попробую ответить сразу на все соображения по решению этой задачи.

  • В каких единицах измеряется скорость?

-скорость где-то в 11 раз больше(1000 за 42сек.)

1000 чего?
  • Алгоритм кодирования очень странный: передатчик разделяет число на слагаемые, а приемник суммирует. О какой производительности тут можно говорить? Тут уже предлагали разделить число на пятнадцатеричные разряды, такой подход значительно сократит длину передачи.
  • Скорость можно дополнительно увеличить в два раза, избавившись от бессмысленной передачи нуля. Зачем передавать ноль, когда можно передать полезную информацию?
  • Использовать два и более сигнальных провода — тупиковый путь. При таком подходе проводов всегда будет мало. Использование дополнительных проводов оправдано только в случае полного использования пропускной способности одного.
  • Рассказ про шину на компараторах тут интересен только в контексте двоичного кодирования, но в данном случае более оптимальным будет использование пятнадцатеричного.
  • Код Грея вообще не приносит пользы в решении этой задачи, он полезен только в реальном мире и только для двоичных кодов.
  • Кстати, не следует идеализировать реальный мир. В майнкрафте есть лаги, зато в реальном мире к лагам добавляются шумы и потери сигнала. И без коррекции ошибок там никак не обходится кроме простейших случаев.
  • Предложение реализовать UART мне нравится, но не следует делать утверждений о том, что все способы цифровой передачи сводятся к отсутствию или наличию сигнала. Для понимания этого достаточно ознакомиться со способами кодирования сигнала в модемах. Не погружаясь в детали, скажу, что сигнал имеет несколько состояний, и их количество значительно больше двух. Не принимать их во внимание — значит неэффективно использовать особенности среды передачи данных
Резюмирую. Передача по связке кабелей банальна, UART тоже скучноват, передача данных по одному редстоун-каналу с его 16-ю состояниями выглядит весьма интереной, и в текущем решении потенциал редстоуна совсем не раскрыт. А его раскрытие мне кажется увлекательным. Конечно, для начала и UART сойдет. Но 16 уровней сигнала против двух — это совсем другие возможности.

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


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

Какая интересная и живая тема, а у меня как раз инета не было. Попробую ответить сразу на все соображения по решению этой задачи.

...

Резюмирую. Передача по связке кабелей банальна, UART тоже скучноват, передача данных по одному редстоун-каналу с его 16-ю состояниями выглядит весьма интереной, и в текущем решении потенциал редстоуна совсем не раскрыт. А его раскрытие мне кажется увлекательным. Конечно, для начала и UART сойдет. Но 16 уровней сигнала против двух — это совсем другие возможности.

Несколько замечаний.

 

Насколько мне известно, то редстоун сигнал затухает с расстоянием. Т.е. 16 уровней сигнала, но с каждым блоком количество уровней будет сокращаться. Нужна процедура начального согласования, для определения длины линии и, соответственно, количества возможных уровней сигнала. В этом случае можно кодировать посылку не в двоичной а в N-ричной системе счисления, где N - количество уровней сигнала при данной длине линии. 

 

Реализация подобия UART нужна в любом случае, поскольку это N-ричное число нужно по какому-то протоколу передавать, да и процедура согласования опять же.

 

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

 

Дополнительно можно мультиплексировать канал, тогда по одному проводу мы сможем передавать информацию одновременно туда и обратно. Но тут сложнее. РедСтоун участок - дискретен, и встречные волны скорее всего не пройдут. Нужно более детальное изучение поведения рс-цепи. Скорее всего, возможно только мультиплексирование по времени с падением пропускной способности в 4 раза. В этом случае, введение информационных фреймов внутри протокола, позволит нивелировать этот недостаток и использовать канал по максимуму.

 

По поводу лагов. Неравномерность течения времени в игре наблюдается относительно реального времени. Думаю, что если поставить в майне два компьютера, и одновременно запустить, то не смотря на лаги, расхождения в таймерах данных компьютеров наблюдаться не будут. Т.е. внутри мира майнкрафт лагов нет. Но эта гипотеза требует проверки. 

--=--

Тема действительно интересная и объемная. Передача сигналов по одному (не учитывая землю) проводу - основа основ любой электроники.

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

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


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

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

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

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

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

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

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

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

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


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