Разработка DLL на основе SDK поставщика оборудования. Программист С++

Дмитрий6 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
15.03.2019

Существует основная программа Maticard Pro, которая обслуживает персонализационную машину. Maticard Pro взаимодействует с машиной через программный  модуль MM Main. 

Машина – набор физических модулей, которые кодируют магнитную полосу, печатают штрихкода, и т.д. 

Персонализация происходит по загружаемой базе данных, обычно это файл MS Acess 

Стандартные модули машины работают из Maticard Pro + MM Main, тут все хорошо, и проблем никаких, это самодостаточный полноценный софт. 

Если нам нужно подключить к машине нестандартный модуль,  например считыватель/кодировщик бесконтактных карт Mifare, то для его взаимодействия с программой необходимо писать DLL. 

DLL осуществляет обмен данными между Maticard Pro и PCSC драйвером считывателя с помощю XML запросов. 

Обмен двухсторонний, т.е. мы можем считать UID карты и занести его в какой то конкретный столбец базы, можем считать UID и напечатать его на карте,  

либо можем взять информацию из базы и произвести запись в какой то определенный сектор. 

Причем DLL может быть как универсальной для каких то действий, например прочитать UID карты (в каждой бесконтактной карте зашит уникальный идентификатор)  и напечатать его на карте в десятичном виде. 

  

Так и уникальной для каждого заказа, например если необходимо произвести запись на карту по базе.  

Для понимания процесса: 

Организация памяти MIFARE Classic 

Память MIFARE 1K  разделена на 16 секторов. Каждый сектор MIFARE 1K  состоит из трех блоков данных и одного блока для хранения ключей (Sector Trailer). Блоки данных доступны для чтения/записи при условии успешной авторизации по ключу. 

Блок Sector Trailer: 

Этот блок хранит секретные значения ключей (А и В) для доступа к соответствующему сектору, а также условие доступа (определяемое значением битов доступа). Блок Sector Trailer всегда последний (четвертый) блок в секторе. Каждый сектор MIFARE Classic может иметь свои собственные ключи доступа и условия записи/чтения данных. 

Блоки данных: 

Каждый блок данных состоит из 16 байт, доступных для записи/чтения (кроме блока 0 сектора 0, где хранится нестираемая информация завода-изготовителя). Запись/чтение данных производится по ключу и битам доступа. 

Блоки данных: 

Каждый блок данных состоит из 16 байт, доступных для записи/чтения (кроме блока 0 сектора 0, где хранится нестираемая информация завода-изготовителя). Запись/чтение данных производится по ключу и битам доступа. 

Соответственно, если нам необходимо производить запись на карту, то для каждого заказа нам необходимо писать новую DLL, в В DLL прописывается Sector Trailer для всех секторов, и обращение к конкретному столбцу базы данных для записи переменной информации.  

Существует SDK от производителя Maticard Pro, в котором есть некие примеры DLL + исходный код для них+ несколько обучающих видео.  

На основании SDK необходимо разработать DLL под наши задачи, нам будет необходима как сама DLL, так и исходный код для нее.  

-=-=-=-== 

От соискателя ждем цены на подобные услуги.  

Условия:  

- желательно ИП/ООО;  

- желательно Москва, область и ближайшие регионы т.к. вполне возможен приезд в Москву.