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 |
Установка начального положения |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.