+7 (812) 670-9095
Обратная связьEnglish
Главная → О компании → Наши клиенты → British American Tobacco → Разработка системы авторизации по ключу iButton для станка под управлением Windows CE для British American Tobacco
Полезный совет
Анализируете однотипные данные отчетов по нескольким филиалам - не тратьте время на переход от одного листа к другому, выбирая нужные ячейки - воспользуйтесь трёхмерными формулами Excel.Подробнее
Версия для печати

Разработка системы авторизации по ключу 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.


Скачать



Константин Цивин, Вице-президент по маркетингу
Заказать звонок Задать вопрос