Windows на банкомате? Почему бы и нет
Некоторым из нас приходилось, может быть, видеть, неисправный банкомат, на экране которого — до боли привычный зеленый холм, кнопка «Пуск» и прочие признаки наличия ОС от Microsoft.
Помню, когда я первый раз увидел такое, будучи тогда еще очень молодым и далеким от всей этой банковской темы, то сарказму моему не было предела. Но сейчас я в теме, и потому не смеюсь 🙂
Дело в том, что банкомат, на самом деле, в самом своем сердце представляет собой самый обычный компьютер самой обычной производительности и архитектуры. А ему больше и не надо. Тем более, что большинству протоколов уже давно сто лет в обед, и рассчитаны они на очень тупое устройство. Во времена, когда все эти технологии зарождались (а это начало семидесятых), банкоматы действительно были весьма примитивными машинами. И из-за вопросов совместимости все анахронизмы протоколов и сценариев взаимодействия до сих пор тянутся с тех времен.
Протоколы, конечно, включают в себя вполне современные расширения. Но устроены они, мягко говоря.
В любом случае, основной принцип работы банкомата — это переход по цепочке специальных состояний и предъявление пользователю специальных экранов. А это не невесть какая сложная работа. За подробностями загляните в пост » Как программируют банкоматы «.
В общем, реально задача довольно простая, в том смысле, что не надо хранить сложно организованные структуры данных, никаких там чрезвычайно ветвящихся алгоритмов. Сейчас всю эту работу выполняет в банкомате специальная программа, которая, помимо этого, умеет взаимодействовать с оборудованием банкомата и общаться с хостом (процессинговой системой в банке) по специальному протоколу поверх обычного сетевого соединения.
Эту программу разрабатывает и поддерживает производитель банкомата. И на его совести ее работоспособность. Ребята свое дело знают, работает эта штука довольно исправно.
А операционная система может быть действительно любая. Почему бы и не Windows XP? От домашней установки она отличается более тонкой настройкой, правильно установленными обновлениями, тщательно сконфигурированными правами и т.п. В общем, нужно грамотное администрирование, чтобы все это работало, как надо.
Плюс программные файрволы, SSL-тунелирование, и т.п. — весь тот комплекс мер, который доступен для любой операционной системы. Плюс поверх всего этого есть еще собственное шифрование протокола. Короче, вполне нормальная защита.
Так что ничего такого, что там Windows. Все-таки банкомат — это не ядерный реактор. Хотя даже в системах управления очень сложными и опасными объектами можно встретить рабочие станции под управлением операционных систем от Microsoft. Не знаю, так ли это на атомных электростанциях, но я бы не удивился, если бы так было. У каждого инструмента есть свои достоинства и недостатки, и у каждого инструмента есть своя область применимости. Когда это всё грамотно учтено — проблем будет минимум.
С прекращением поддержки Windows XP происходит миграция на Windows 7.
В общем, почти всегда на банкомате установлена операционная система от Microsoft. Альтернативы возможны, но на практике они заметного распространения не получили. Попалась цифра, что Windows XP установлена на 95% всех банкоматов. Что ж. Я думаю, похоже на правду, с поправкой на то, что идет миграция на Windows 7.
Подписывайтесь на канал «Технологии Денег» в Яндекс.Дзен и Телеграм ! У меня много интересного материала!
Что такое Windows 10 IoT
Microsoft предлагает Windows 10 в девяти отдельных выпусках, начиная с домашней версии и заканчивая корпоративной. Windows 10 IoT («Интернет вещей») — это издание, которым Вы, скорее всего, не обладаете, но которое Вы, вероятно, использовали чаще, чем представляете себе.
Windows 10 IoT выросла из Windows Embedded
Windows 10 IoT — это эволюция более ранней версии Windows — Windows Embedded. Вы можете вспомнить банкоматы под управлением Windows XP и нуждающихся в серьезном обновлении. Эти банкоматы и другие подобные устройства работали под управлением Windows Embedded (XPe). Это урезанная версия операционной системы Windows, которая будет хорошо работать на менее мощном оборудовании, использовать один сценарий использования или оба варианта.
Банк может использовать эту ОС для банкомата, розничный торговец может использовать ее для системы POS (точки продажи), а производитель может использовать ее для простого прототипа устройства. Однако Windows IoT — это не просто переименованная версия Windows для использования Интернета вещей, и не только для предприятий и крупных корпораций. Это очевидно в двух разных версиях ОС, IOT Enterprise и IoT Core.
IoT Enterprise предназначен для использования с несколькими устройствами
Microsoft предлагает Windows 10 IoT в двух вариантах: Enterprise и Core. Корпоративная версия по сути Windows 10 Enterprise, но с дополнительными элементами управления блокировкой. С помощью этих элементов управления, например, Вы можете заставить Windows отображать одно приложение для киоска. Windows по-прежнему будет работать в фоновом режиме, но обычные пользователи не должны иметь доступ к этим службам. Если Вы подошли к киоску регистрации и заметили, что приложение для регистрации не работает, и Windows 10 уже видна, Вы, вероятно, столкнулись с Windows 10 IoT Enterprise.
Как и в Windows 10 Enterprise, Вы не можете купить лицензию для IoT Enterprise в магазине. Microsoft распространяет лицензии через партнеров по перепродаже и OEM-соглашения. Поскольку это полная версия Windows, Вы получаете всю мощь, которая прилагается к ней, но есть один существенный недостаток: IoT Enterprise не будет работать на процессорах ARM.
IoT Core предназначен для простых плат, индивидуальных программ и датчиков
IoT Core это урезанная версия. Вы не получаете полный опыт Windows Shell; вместо этого ОС может запускать только одно приложение универсальной программы Windows (UWP) и фоновые процессы. Однако IoT Core будет работать на процессорах ARM. Вы бы выбрали IOT Core для запуска простых программ, которые могут не требовать столько непосредственного взаимодействия с пользователем. Например, термостат Glas использует IoT Core. А благодаря совместимости с ARM Вы можете запускать IoT Core на простых платах, таких как Raspberry Pi .
Эта особенность делает IoT Core отличным выбором для быстрых прототипов для производителей или одноразовых проектов для любителей. Hackster , сообщество разработчиков аппаратного и программного обеспечения, содержит немало уникальных примеров IoT Core, в том числе дверь с распознаванием домашних животных , дверь с распознаванием лиц , информационную панель smarthome и волшебное зеркало . Это все проекты, которые Вы могли бы построить самостоятельно, если у Вас есть необходимые навыки. Microsoft даже продемонстрировала робота на базе Raspberry Pi , который использовал Windows IOT и взаимодействовал с голограммами. Он предоставляет необходимые ресурсы, поэтому Вы можете загрузить IoT Core для личного использования с бесплатной лицензией.
Кроме того, IoT Core на Raspberry Pi или Minnowboard может быть соединен с датчиками и механизмами, такими как камеры, PIR-датчики, сервоприводы и температурные датчики для расширенного использования. Это, в свою очередь, позволяет Windows 10 передавать данные, собранные этими датчиками, что является основной предпосылкой Интернета вещей.
Windows IoT — это вариант с закрытым исходным кодом для разработчиков Visual Studio
Вам может быть интересно, почему кто-то использует Windows IoT вместо альтернатив, таких как Linux или Android. Большая часть этого сводится к тому, для чего или для кого предназначено устройство и кто занимается программированием.
Преимущества открытого исходного кода, такие как варианты лицензирования и настройки, часто рекламируются как замечательные вещи — и это так. Но открытый исходный код не лучший выбор для всех сценариев сценариев. Иногда для конкретных проектов требуется программное обеспечение с закрытым исходным кодом (или проприетарное). Некоторые предприятия и правительства (в лучшую или в худшую сторону) также прямо запрещают использование программного обеспечения с открытым исходным кодом в своих покупках. Даже если компания не запрещает ПО с открытым исходным кодом, оно может быть неофициально осуждено. Если Вы производитель и способны работать с любым из этих вариантов, Вы будете использовать все, что порадует Вашего клиента.
Но если оставить в стороне эти дебаты с открытым исходным кодом и проприетарным программным обеспечением, у некоторых людей есть еще одно явное преимущество. Windows 10 IoT связывается с Visual Studio, и Вы можете использовать эту среду разработки для разработки программ для нее. Фактически, IoT Core спроектирован так, чтобы работать без графического интерфейса и будет подключаться к другому компьютеру с Windows 10 для программирования и обратной связи. Если Вы все равно проводите большую часть времени разработки в Visual Studio, выбор IoT для Windows 10 вместо альтернативы может сэкономить время на обучение и настройку. Вы сможете сразу же использовать весь свой опыт.
Обычный пользователь, вероятно, не будет загружать и использовать IoT для Windows 10, но это не значит, что он не столкнется с этим. По большей части, если Вы не разработчик, эта ОС работает для Вас так, что Вы можете даже не заметить. Это может быть питание киоска, который Вы использовали для заказа еды в ресторане, или приготовления коктейля. Даже если Вы разработчик, и Вы не хотите тратить время на изучение альтернативы, такой как Linux, Windows 10 IoT может быть лучшим вариантом для Вашего следующего проекта.
Как программируют банкоматы
Лично я, когда был далек от банковских технологий, всегда удивлялся, до чего убогий интерфейс у многих банкоматов. А сейчас я уже сам учу людей, как разрабатывать программы для них. И хочу рассказать, как все это устроено на самом деле, и почему порой мало мультимедии в этих серьезных устройствах.
Подавляющее большинство банкоматов во всем мире имеют на борту всего три гордых лэйбла. Это Diebold (Диболд), NCR и Wincor. Причем Wincor и Diebold объединились, став крупнейшим в мире производителем в этой области.
Помимо этих (теперь уже двух, а не трех) мастодонтов на рынке есть и немного мелкой и средней рыбёшки. В принципе, банкоматы выпускали многие, многим было не лень. Особенно на заре становления банкоматного рынка. (Да и до сих пор не лень). Потом, как водится в рыночной экономике, остались три главных игрока (почему-то так почти всегда получается, что три игрока — это устойчивая конструкция на любом рынке, причем один самый большой, один средний и один маленький обычно — вспомните большую тройку сотовых операторов). Но это не значит, что других марок нет. Встречаются. И из старых, и из новых. В общем, и на этом рынке имеется поднебесное влияние.
Но как бы там ни было, принципы разработки «программ» для банкоматов изначально закладывались конторами NCR и Diebold. И это было в те времена (а это семидесятые), когда компьютеры были большими и слабыми. Соответственно, все разрабатывалось так, чтобы все это слабенькое железо как-то удовлетворительно работало.
Хотя, пожалуй, это легкое высокомерие не совсем уместно.
Правильнее было сказать, что тогдашние банкоматы были сделаны надежно и качественно, как и многие другие изделия тех времен. Настолько качественно, что, говорят, в некоторых местах работают до сих пор. Но тогдашние протоколы даже и не предполагали появления мультимедии. А потому рассчитывались на очень слабые устройства.
В реальности же, как я уже сказал, в мире довольно много старых банкоматов (хотя больше в США), которые все еще прекрасно работают. Поэтому нужна обратная совместимость протоколов. Как итог — устаревшее наследие тащится с незапамятных времен, новые возможности достраиваются как расширения. Поэтому, если посмотрите спецификацию на протокол NDC (NCR Direct Connect авторства NCR) или DDC (Diebold Direct Connect авторства Diebold) — увидите, какая она огромная, а протоколы нестройные, запутанные и используют странные механизмы. Скажем так, у нормального программиста возникает реакция: взять бы да переписать всё по уму! Но нельзя, потому что есть парк старых банкоматов, которые не поймут нашего стремления к прекрасному. Кстати, Wincor не стал разрабатывать свой собственный протокол. Он стал поддерживать оба (но не полностью), плюс добавил свои авторские расширения. NDC и DDC протоколы в главном очень похожи друг на друга, хотя различия, конечно есть.
Да, а средние и мелкие производители банкоматов просто берут и поддерживают один из протоколов — NDC или DDC (хотя сейчас есть и кое-что современное).
Так вот, протоколы эти исходили из того, что банкомат выполняет ограниченный набор простых и четких инструкций, безо всяких там скриптов и стороннего программного обеспечения.
Все это пишу для того, чтобы стало понятно, почему программы для банкоматов не являются программами в чистом виде. На самом деле для банкоматов разрабатываются сценарии. Сценарии работы. В этих сценариях нет ни единой строчки программного кода, не надо ничего писать ни на каком языке программирования.
У вас есть набор состояний, в которые банкомат умеет переходить и выполнять в них какие-то заранее известные операции. И составляя сценарий, вы просто выбираете из имеющихся те состояния, которые вам нужны, и ставите их в определенном порядке.
Например, состояние «A» в обоих протоколах — это состояние ожидания ввода карты, оно должно быть самым первым. При старте банкомат начинает с первого состояния. После того, как карта вставлена, банкомат, находясь в состоянии «А», пытается ее прочесть и проанализировать результат. У состояния «А» есть настройки, в т.ч. номера следующих состояний. К состоянию с каким номером перейти, если, например, карта не прочиталась. Или куда перейти, если всё прошло успешно.
А, например, в состоянии «B» банкомат ожидает ввода PIN-кода. Еще он в этом состоянии умеет выводить звездочки на экран.
Состояние «E» создано для организации меню из четырех функционально-дисплейных клавиш (FDK), которые находятся по периметру экрана. Состояние «Y» — уже для меню из восьми пунктов (чаще всего именно восемь кнопок вокруг экрана, хотя в рекордных случаях есть еще четыре штуки сверху). В состоянии «D» устанавливается начальное содержание командного буфера. И так далее.
Разработчик сценария последовательно указывает имена состояний (они жестко заданы в протоколе), их настройки (среди них обязательно есть номера следующих состояний для разных случаев), а также номера «экранов».
Дело в том, что «экраны» описываются отдельно от состояний. И это, кстати, удобно. Бывает, что у разных состояний может быть один и тот же «экран» (да хоть бы банальная надпись «Подождите, транзакция обрабатывается»), поэтому экран описывается один раз, а в состояних указываются номера подходящих экранов. Некоторые состояния не имеют никакого визуального представления, а у некоторых состояний может быть несколько «экранов» (для разных случаев).
В общем, «программа» работы банкомата — это, на самом деле, некий сценарий. В котором есть набор пронумерованных состояний, связанных между собой переходами, набор пронумерованных «экранов», ну и плюс набор некоторых настроек.
Какой-то универсальной программы для разработки сценариев нет, и в ней нет смысла. Сценарий в банкомат загружается по сети, из процессингового центра. А программы процессинга там стоят самые разные. И каждый производитель процессингового софта сам реализует редактор сценариев для банкоматов. Нередко такие редакторы позволяют представить сценарий в виде диаграммы переходов, где узлы — это состояния, а стрелки указывают переходы между ними.
После того, как сценарий разработан и протестирован, он по сети загружается в банкомат. Такое обновление по сети очень важно, потому что банкоматная сеть может быть очень большой. К каждому банкомату не набегаешься.
А на современном банкомате просто установлена какая-нибудь Windows XP , но главное — в ней запущена программа, которая умеет понимать этот банкоматный протокол и делать всё то, что требует от неё сценарий. Вот как-то так это устроено, если постараться уложиться в краткий формат.
Ах, да, я обещал рассказать, почему часто мультимедия такая грустная в банкоматах.
Дело вот в чем. Я выше в тексте слово «экран» везде старался помещать в кавычки. Потому что это не просто картинка, точнее, совсем не картинка. Когда в сценарии описывается экран, на самом деле, перечисляется список команд, который должен выполнить банкомат, чтобы получить какое-то изображение. А там команды такие, уровня прошлого века. «Поместить курсор в позицию 5, 7». «Вывести текст ПРИВЕТ». «Поместить курсор в позицию 30, 30». «Выбрать цвет КРАСНЫЙ». «Вывести текст МИР». И т.д. Грустно, конечно. Ну да рассчитано на старые банкоматы.
Но, конечно же, есть современные расширения для описания экранов. Не только картинку можно вывести, но видео, и целую веб-страницу. Т.е. мультимедийные возможности присутствуют, но все они поверх отдельных состояний, экранов и т.д. И разрабатывать это довольно неудобно. Муторно. Но можно. Если банк хорошо заморочился — бывают целые шедевры. Однако не получается сделать все очень плавно и современно. Из-за того, что все это продолжает работать на фоне дискретно сменяющих друг друга состояний и экранов.
На самом деле есть и более современные протоколы и решения. Где все устроено на привычных нам языках программирования. Но это больше в новых банкоматах (или просто этот софт стоит отдельных денег) и пока не получило большого распространения.
А вообще от банкомата не требуется, чтобы он пел и плясал. Шуршание банкнот доставляет удовольствие почище симфонии в 3D звуке. Но выглядеть он должен презентабельно. Чего можно добиться и без 4K разрешения при 60 FPS.
Подписывайтесь на канал «Технологии Денег» в Яндекс.Дзен и Телеграм ! У меня много интересного материала!