Дмитрий Радищев (dibr) wrote,
Дмитрий Радищев
dibr

+++

Давным-давно, во второй половине прошлого века, когда модемы ещё только учились шипеть в линию (телефонную, конечно, других особо не было), встал вопрос о стандартизации управления модемами со стороны компьютера. Кроме стандартного набора команд, нужно было решить ещё один вопрос - и команды управления, и передаваемые данные, передавались по одним и тем же проводам, и их надо было как-то различать. Для этого у модемов было сделано два режима: "командный" - в котором он воспринимал то, что в него шло из компьютера, как команды, и "передачи данных" ("онлайн") - в котором всё воспринималось как данные и передавалось на удалённую сторону. Для перехода из командного режима в "онлайн" была специальная команда... а вот как заставить модем перейти из онлайн-режима в командный? Ведь данные могут быть любыми, и всё, что модем получает - он просто передаёт в линию? Да, очень часто доступны дополнительные линии управления, но в общем случае их может и не быть.

Согласно легенде (т.е. "я это когда-то слышал, но ленюсь проверить"), на сцену тогда вышла фирма Hayes, и сказала: "а вот ведь, скажем, комбинация букв "+++" встречается очень редко - вероятность случайно встретить её в потоке одна сколькитотаммиллионная. Пусть модем, увидев в потоке данных такую комбинацию, переходит в командный режим!" Все радостно решили, что таки да, три плюса подряд в реальных данных почти не встречаются, и включили это в стандарт.

После чего фирма Hayes запатентовала небольшую модификацию стандарта - модем переходит в командный режим только от "обособленных" плюсов, с обязательной паузой перед и после "+++" - такая ситуация, с паузами, в реальной жизни действительно почти невозможна. А остальные участники стандарта внезапно обнаружили, что "+++" - не такая уж редкая комбинация! Например, она содержится в, собственно, описании стандарта команд модема. И прочих документах, где про эти самые "+++" пишется. Да и - 2^24 - это только кажется что много, на самом деле достаточно прокачать всего пару десятков мегабайт, чтобы наверняка налететь на случайный "+++". А поздно - патент!


Прошло сколько-то десятков лет. И оказалось, что бутлоадер Arduino Mega 2560 R3 переходит в интерактивный (командный) режим, увидев в потоке данных три восклицательных знака подряд (чаще всего в текстовых константах повышенной эмоциональности, но у автора поста "!!!" встретилось прямо в бинарном коде). Привет, Хайес? :-)

Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 16 comments