URC220_QNX (Раздаточные материалы), страница 5
Описание файла
Файл "URC220_QNX" внутри архива находится в следующих папках: Раздаточные материалы, Документация. PDF-файл из архива "Раздаточные материалы", который расположен в категории "". Всё это находится в предмете "программное обеспечение управляющих комплексов (поук)" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "поук" в общих файлах.
Просмотр PDF-файла онлайн
Текст 5 страницы из PDF
Один изпотоков первым переводит mutex в состояние locked. Далее, когда другой потокпытается обратиться к данным, он зависает до тех пор, пока первый поток невыполнит все операции с данными и не переведёт mutex в состояние unlocked,чтобы к данным мог получить другой поток, который также установит mutex всостояние locked, и так далее. То есть с данными в один момент времени работаеттолько один поток. Для каждого устройства имеется свой mutex и поток, гдевыполняется dev_thread().Таким образом, во время работы сервера работают сразу несколько потоков:главный (функция main()) в состоянии ожидания плюс по одному потоку накаждое подключенное к компьютеру устройство.Алгоритм работы функции dev_thread() показан на рисунке 6.4.Рис.6.4 Алгоритм работы функции dev_thread()Для обмена данными с устройством используются функции write() и read() объектаpipe. Таким образом, класс CURCPIPE, кроме конструктора и деструктора состоитиз следующих функций.27CURCPIPE::open() - функция открывает устройство,конфигурацию, в случае ошибки возвращает 0.ипроизводитегоCURCPIPE::close() – отключает от устройства.CURCPIPE::bulk_cbf() – функция вызывается операционной системой дляобработки различных событий во время передачи данных.CURCPIPE::wait_io() – после вызова функция ожидает окончания операцииприёма или отправки данных до их завершения или до возникновения ошибки.CURCPIPE::write() – отправляет данные по USB в устройство, вызывает в своёмкоде функцию wait_io(), поэтому функция write() является синхронной функциейотправки данных.CURCPIPE::read() – принимает данные по USB от устройства, вызывает в своёмкоде функцию wait_io(), поэтому функция read() является синхронной функциейприёма данных.6.2 Алгоритм работы клиентских программАлгоритм работы той части клиентских программ, которая отвечает завзаимодействие с устройствами, во многом похож на алгоритм работы функцииdev_thread() и показан на рисунке 6.5Рис.6.5 Алгоритм работы клиентских программ28Здесь сначала идёт подключение к программе внешней памяти, чтобы иметьдоступ к полям массива структур.
Далее идёт получение доступа ксоответствующей ячейке массива через mutex (который также является полемэтой структуры). После этого идёт копирование данных – чтение или запись, азатем разблокировка данных, чтобы к ним мог получить доступ сервер ивыполнить действия для передачи или приёма данных от устройства.Этот алгоритм реализован в классе CURC220, который представляет собойоболочку для программ конечного пользователя, а также имеет специальныйнабор функций, необходимый для удобной работы с устройством.
Описание этихфункций находится в разделе “3.2 Описание функций класса CURC220”.297. Содержание1. Техническое задание ............................................................................... 22. Драйвер..................................................................................................... 32.1 Алгоритм работы ........................................................................................... 33. Библиотека для работы с платой на компьютере ..................................
53.1 Алгоритм работы с библиотекой .................................................................... 53.2 Описание функций класса CURC220............................................................... 54. Применение библиотеки.......................................................................... 94.1 Создание проекта .......................................................................................... 94.2 Пример использования .................................................................................. 94.3 Универсальный пример................................................................................
135. Устройство шины USB ............................................................................ 165.1 Общие сведения .......................................................................................... 165.2 Версии спецификаций и скорость передачи данных .................................... 165.3 Архитектура.................................................................................................
165.4 Физическая среда ........................................................................................ 175.5 Передача данных......................................................................................... 185.5.1 Состояние шины USB ................................................................................ 185.5.2 Транзакции ...............................................................................................
195.6 Протокол обмена данными .......................................................................... 225.6.1 Управление устройством........................................................................... 225.6.2 Дескрипторы (Descriptors)......................................................................... 226.
Реализация ПО для управления URC220............................................... 246.1 Алгоритм работы сервера ............................................................................ 246.2 Алгоритм работы клиентских программ ....................................................... 287. Содержание ............................................................................................
3030.