+7 (812) 494-9090
Обратная связьEnglish
Главная → О компании → Наши клиенты → British American Tobacco → Разработка системы авторизации по ключу iButton для станка под управлением Windows CE для British American Tobacco
Версия для печати

Разработка системы авторизации по ключу iButton для станка под управлением Windows CE для British American Tobacco

Заказчик: British American Tobacco

Сайт: http://www.bat.com/

Отрасль: Пищевое производство


По созданной технологии изготовлена партия из 20 считывателей, которыми оснащён цех заказчика. Специалистами АстроСофт была выявлена особенность работы Windows CE разных версий с портом LPT.



Ситуация

iButtonУправление станками на производстве заказчика организовано по принципу одного сервера, к которому подключены «тонкие клиенты» - специализированные терминалы, на которых установлена ОС Windows CE 5.0. К терминалам подключено оборудование цеха. В начале смены рабочий должен авторизоваться, введя имя пользователя и пароль. Заказчику требуется изменить метод авторизации на какой-либо аппаратно зависимый. С учётом имеющихся портов наилучшим является «таблетка» iButton.

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

Решение

Терминал имеет три вида портов: COM, LPT и USB. Порты USB уже заняты в производственном процессе, порт COM использовать допускается, но не рекомендуется, порт LPT – свободен.

Было решено подключить к этому терминалу устройство считывания ключей iButton, чтобы с их помощью осуществлять авторизацию пользователя.

Работа терминала с портами осуществляется по довольно сложной схеме. Программы физически выполняются не на самом терминале, а на сервере. Таким образом, скорость прохождения запроса на обращение к порту – величина непостоянная. Она зависит от загруженности сервера, на котором исполняются и другие программы, а также от загруженности сети, через которую терминал связан с сервером. Протокол 1WIRE, используемый в iButton, очень критичен к временным диаграммам, поэтому все стандартные решения оказались неприемлемы: стандартные адаптеры, подключаемые к COM-порту, либо LPT-порту формируют каждый бит при помощи центрального процессора, что допустимо на PC, но приводит к искажениям общей посылки по описанным выше причинам на "тонком клиенте".

В результате было принято решение отказаться от попыток использования покупных считывателей и начать делать собственный на базе микроконтроллера. На тот момент документ со стандартом IEE1294 найти было практически невозможно (особенно в условиях ограниченных сроков), поэтому пришлось искать описания режимов EPP и ECP в Интернете. Разные сайты содержали разные толкования одного и того же стандарта. Методом сравнения был составлен документ, из которого выкинуты все разночтения, найденные в толкованиях.

Протокол EPP выглядел намного проще в реализации, чем протокол ECP, поэтому в первую очередь, была разработана «прошивка» для микроконтроллера, которая реализовывала его. Полученное устройство корректно работало с IBM PC, но по-прежнему не работало с терминалами, где были установлены разные версии Windows CE. Та же участь постигла версию устройства, для которого была разработана «прошивка», поддерживающая протокол ECP.  Однако известно, что порт LPT может работать в стандартном режиме (Centronix), а также в режимах EPP и ECP.

Дальнейшие исследования показали, что последняя разновидность терминала не работает с матричными принтерами точно так же, как и с разработанными устройствами. Следовательно, решение крылось в процессе инициализации. При помощи логического анализатора был снят процесс согласования порта с принтером. Анализ выявил, что при начале работы принтер посылает в ЭВМ своё название, но делает это не байтами, а ниблами. Если имя не получено, Windows CE считает, что принтера нет и отвергает функцию CreateFile.

Соответствующий функционал был добавлен к «прошивке», исполняемой в микроконтроллере. Кроме того, этот механизм решил такую важную проблему, как организация ввода через порт LPT (Windows CE трактует порт принтера как однонаправленный интерфейс от сервера к клиенту). В качестве имени принтера, микроконтроллер передаёт в ЭВМ идентификатор «таблетки» iButton.

Результат

По созданной технологии изготовлена партия из 20 считывателей, которыми оснащён цех заказчика. Специалистами АстроСофт была выявлена особенность работы Windows CE разных версий с портом LPT.

Используемые технологии

Система авторизации разработана на языке С++. Считыватель реализован на микроконтроллере AtMega8 фирмы Atmel, «прошивка» разработана на языке ассемблера в среде AVR Studio 4.


Скачать