Разработка схем программно-аппаратного комплекса биометрического датчика с интерфейсом локальной сети, страница 4

4. Разработка алгоритма передачи изображения с датчика FPC1010 в локальную сеть Ethernet.

Для начала необходимо отметить, что передача данных в сети Ethernet осуществляется не по IP-адресам сетевых устройств, а по MAC-адресам, которые уже «зашиты» в сетевые адаптеры.

Для нормальной работы необходимо поставить в соответствие каждому IP-адресу MAC-адрес. Этот процесс осуществляется с помощью ARP(Address Resolution Protocol)-запросов и ответов. Происходит это следующим образом:

1.  Перед отправкой данных по заданному IP-адресу сначала посылается ARP-запрос содержащий MAC-адрес источника, IP-адрес источника, IP-адрес получателя, а также широковещательный MAC-адрес(для всех устройств сети).

2.   Данный запрос получают все устройства, находящиеся в сети. НО отвечает на этот запрос лишь то устройство, которое имеет заданный IP-адрес получателя.

3.  Устройство с соответствующим IP-адресом формирует ARP-ответ, содержащий его MAC-адрес, и отправляет ему инициатору запроса.

4.  Таким образом каждое сетевое устройство формирует свою ARP-таблицу, которая содержит список соответствия IP- и MAC-адресов.

5.  Дальнейшая работа осуществляется по MAC-адресам. Важно, что ARP-таблицы обновляются если обнаруживается неизвестный ранее получатель, либо если таблица устарела.

В данной разработке необходимо передать 200х152 байт информации. Максимальная длина поля данных в UDP-пакете ограничена верхним значением 1500 байт. Как видно в одном кадре передать всё изображение не удастся (30400 байт), поэтому есть смысл передавать пакеты построчно, то есть один UDP-пакет будет содержать одну строку информации об изображении отпечатка пальца + номер этой строки(для удобства сборки на оконечном приемном устройстве). Получаем, что изображение об отпечатке пальца передается 200-ми UDP-пакетов, каждый из которых содержит 152+1 байт в поле данных.

В курсовом проекте вся работа с сетью осуществляется с помощью уже разработанного OpenTCP TCP/IP стека для MC9S12NE64. Он содержит все необходимые библиотеки функций работы с TCP/IP стеком написанные на языке С++.

Из OpenTCP TCP/IP использованы следующие библиотеки:

- arp.c – библиотека работы с ARP

- tcp.c – библиотека работы с TCP

- ip.c – библиотека работы с IP

- udp.c – библиотека работы с UDP

- icmp.c  – библиотека работы с ICMP

В разрабатываемой программе необходимо периодически обновлять ARP-таблицу, это осуществляется с помощью подпрограммы arp_manage(), а также периодически проверять наличие принятых Ethernet-кадров – receive_packet().

На рисунке 4.1 приведена структура Ethernet-кадра с UDP-вложением

Более детальное описание  приведено в разделе 7.

5. Cистема команд управления датчиком FPC1010

 


В связи с тем, что разработчик датчика FPC1010 компания Finger Print ограничивает доступ к информации о работе данного устройства, ниже, в таблице 5.1, будет приведено предположительное описание уже существующих команд, исходя из анализа драйвера работы с FPC1010, написанного для процессоров от Texas Instruments серии DSK5****.

Таблица 5.1 Система команд управления датчиком FPC1010

Название команды

Шестнадцатеричное представление

Предположительное описание

READ_SHFTX

0x45

Сдвиг на след. ячейку изображения по Ox

READ_SHFTY

0x49

Сдвиг на след. ячейку изображения по Oy

READ_SHFTX_SHFTY

0x4D

Сдвиг по диагонали

READ_SAME_ELEMENT

0x41

-

READ_STATUS

0x5D

Чтение данных о состоянии датчика

SENS_X

0x61

Указание положения по Ox

SENS_Y

0x69

Указание положения по Oy

WRITE_DRIVX

0x65

-

WRITE_DRIVY

0x6D

-

COMMAND

0x79

-

RESET

0x7D

Сброс в начальное состояние

START_COORDINATE

0x01

Установка начального положения