|
|
|
Агуров П В.
Последовательные интерфейсы ПК. Практика программирования.
Книга представляет собой практическое руководство по программированию последовательных интерфейсов. В первой части книги представлены теоретические сведения о последовательных интерфейсах, во второй — практические примеры и листинги программ на языках Pascal и Delphi, a третья содержит справочные данные, облегчающие поиск необходимой информации. В приложениях приведены дополнительные сведении и ответы на часто задаваемые вопросы. Большое количество практических советов, примерок программ, а также последовательность и простота изложения позволят читателю уверенно овладеть изложенным в книге материалом.
СКАЧАТЬ 4,2 Mb
|
СОДЕРЖАНИЕ
Введение.................................................................................................................................1
Для кого эта книга...................................................................................................................1
Структура книги.....................................................................................................................2
Краткое описание глав............................................................................................................3
Программные требования........................................................................................................6
О программном коде...............................................................................................................6
Обозначения...........................................................................................................................7
Аппаратные требования.........................................................................................................7
Благодарности........................................................................................................................7
Обратная связь.......................................................................................................................7
Часть I. Протоколы и интерфейсы..........................................................................................9
Глава 1. Стандарты последовательной связи.........................................................................11
1.1. Стандарты последовательной связи................................................................................11
1.1.1. Протокол RS-232.........................................................................................................13
1.1.2. Протокол RS-422A...................................................................................................... 15
1.1.3. Протокол RS-423A.......................................................................................................15
1.1.4. Протокол RS-485.........................................................................................................15
1.1.5. Протокол RS-499.........................................................................................................16
1.1.6. Протокол RS-562........................................................................................................ 16
1.1.7. Протокол V.24.............................................................................................................17
1.1.8. Протокол V.28.............................................................................................................17
1.1.9. Протокол V.35............................................................................................................ 17
1.1.10. Протокол Х.21.......................................................................................................... 18
1.1.11. Рекомендация X.21bis............................................................................................... 18
1.1.12. Краткое сравнение RS-протоколов........................................................................... 18
1.2. Принципы последовательной связи............................................................................... 19
1.3. Разъемы коммуникационного порта...............................................................................20
1.3.1. Сигнальная "земля" (AB/SG)........................................................................................22
1.3.2. Защитная "земля" (АА).................................................................................................22
1.3.3. Передаваемые данные (BA/TxD/TD)............................................................................23
1.3.4. Принимаемые данные (BB/RxD/RD)............................................................................23
1.3.5. Запрос передачи (CA/RTS)...........................................................................................23
1.3.6. Готовность к передаче (CB/CTS).................................................................................24
1.3.7. Готовность DCE (CC/DSR)..........................................................................................25
1.3.8. Готовность DTE (CD/DTR)..........................................................................................25
1.3.9. Индикатор вызова (CE/RI)...........................................................................................25
1.3.10. Обнаружение несущей (CF/DCD)...............................................................................25
1.3.11. Детектор качества сигнала (CG/SQ)...........................................................................26
1.3.12. Переключатель скорости передачи данных от DTE (CH)...........................................26
1.3.13. Переключатель скорости передачи данных от DCE (CI).............................................26
1.3.14. Готовность к приему (CJ)...........................................................................................26
1.3.15. Местный шлейф (LL).................................................................................................27
1.3.16. Удаленный шлейф (RL).............................................................................................27
1.3.17. Индикатор тестирования (ТМ)...................................................................................27
1.3.18. Синхронизация передачи от DTE (DA).......................................................................28
1.3.19. Синхронизация передачи от DCE (DB/TC).................................................................28
1.3.20. Синхронизация приема от DCE (DD/RC)....................................................................28
1.3.21. Передаваемые данные дополнительного канала (SBA/STD).......................................28
1.3.22. Принимаемые данные дополнительного канала (SBB/SRD).......................................28
1.3.23. Запрос передачи по дополнительному каналу (SCA/SRTS)........................................29
1.3.24. Готовность к передаче по дополнительному каналу (SCB/SCTS)...............................29
1.3.25. Обнаружение несущей дополнительного канала (SCF/SDCD)....................................29
1.4. Ресурсы IBM PC для последовательной связи................................................................29
1.4.1. Сервисы BIOS..............................................................................................................29
1.4.2. Коммуникационные порты...........................................................................................30
1.4.3. Использование прерываний.........................................................................................30
1.4.4. Прямое программирование портов в Windows.............................................................30
1.4.5. Функции Windows........................................................................................................31
Глава 2. Протоколы...............................................................................................................32
2.1. Что такое протокол обмена.............................................................................................32
2.2. ASCI [-протокол передачи данных..................................................................................33
2.3. Бинарный протокол передачи данных............................................................................35
2.4. Предотвращение потери данных.....................................................................................35
2.4.1. Прерывания и потоки...................................................................................................35
2.4.2. Буферизация.................................................................................................................37
Синхронизация в DOS...........................................................................................................38
Синхронизация в Windows.....................................................................................................38
2.4.3. Обратная связь.............................................................................................................40
2.5. Методы обнаружения ошибок передачи.........................................................................40
2.5.1. Контроль четности.......................................................................................................41
2.5.2. Контрольная сумма......................................................................................................42
Простая контрольная сумма...................................................................................................42
Контрольная сумма LRC........................................................................................................42
Контрольная сумма CRC16....................................................................................................43
2.5.3. Стартовый байт............................................................................................................44
2.5.4. Другие способы повышения достоверности данных.....................................................45
Глава 3. Последовательные протоколы IBM PC....................................................................46
3.1. Мышь.............................................................................................................................46
3.1.1. Базовый протокол Microsoft Mouse..............................................................................46
3.1.2. Протокол Microsoft Plus...............................................................................................47
3.1.3. Протокол 3D Serial Mouse............................................................................................47
3.1.4. Протокол PC Mouse.....................................................................................................48
3.1.5. Совместимость протоколов..........................................................................................48
3.2. Модем.............................................................................................................................48
3.2.1. Команды управления модемом.....................................................................................49
3.2.2. Регистры модемов........................................................................................................50
3.2.3. Протоколы передачи файлов........................................................................................50
ASCII-протокол.....................................................................................................................50
Протокол XModem................................................................................................................51
Протокол XModem-CRC........................................................................................................52
Протокол XModem-1К...........................................................................................................52
Протокол YModem................................................................................................................53
Протокол YModem-G............................................................................................................54
Протокол ZModem................................................................................................................54
Протокол BiModem...............................................................................................................55
Протокол Kermit....................................................................................................................55
Глава 4. Промышленные последовательные протоколы........................................................56
4.1. Протокол MODBUS........................................................................................................56
4.1.1. Протокол MODBUS-ASCII...........................................................................................57
4.1.2. Протокол MODBUS-RTU............................................................................................58
4.1.3. Поля MODBUS протокола...........................................................................................59
Поле "Адрес абонента"..........................................................................................................59
Поле "Код функции"..............................................................................................................60
Поле "Данные"......................................................................................................................60
Поле "Контрольная сумма"....................................................................................................60
4.2. Протокол CAN................................................................................................................61
4.2.1. Характеристики протокола CAN..................................................................................62
4.2.2. Обмен данными в протоколе CAN...............................................................................63
4.2.3. Обнаружение ошибок в протоколе CAN......................................................................63
4.3. Протокол Profibus...........................................................................................................64
Глава 5. СОМ-порты и Plug and Play.....................................................................................66
5.1. Кратко о Plug and Play....................................................................................................66
5.2. Запуск процедуры РпР...................................................................................................67
5.3. Если устройство не находится автоматически................................................................68
5.4. Где хранится информация о найденных устройствах......................................................69
5.4.1. Структура реестра Windows 98....................................................................................69
5.4.2. Структура реестра Windows 2000.................................................................................71
5.5. Алгоритм Plug and Play для СОМ-портов........................................................................73
5.5.1. Инициализация порта (Port initialization).......................................................................73
5.5.2. Обнаружение устройств (Check for device)...................................................................73
5.5.3. Установка устройства, фаза 1 (COMport Setup-1).........................................................74
5.5.4. Ожидание ответа, фаза 1 (Wait for response-1)..............................................................74
5.5.5. Установка устройства, фаза 2 (COM port Setup-2).......................................................74
5.5.6. Ожидание ответа, фаза 2 (Waitfor response-2)...............................................................75
5.5.7. Получение идентификатора (Collect device ID).............................................................75
5.5.8. Проверка отключения (Verify Disconnect).....................................................................76
5.5.9. Дежурное состояние (Connect Idle)...............................................................................76
5.5.10. Состояние ожидания отключения (Disconnect Idle).....................................................76
5.6. Формат данных для передачи РпР-идентификатора........................................................77
5.7. Передача РпР-идентификатора.......................................................................................77
5.8. Поля РпР-идентификатора..............................................................................................78
5.8.1. Поле Other ID...............................................................................................................80
5.8.2. Поле Begin PnP.............................................................................................................80
5.8.3. Поле PnP Rev...............................................................................................................80
5.8.4. Поле EISA ID...............................................................................................................80
5.8.5. Поле Product ID............................................................................................................81
5.8.6. Поле Extend..................................................................................................................81
5.8.7. Поле Serial Number.......................................................................................................81
5.8.8. Поле Class Name...........................................................................................................81
5.8.9. Поле Device ID.............................................................................................................82
5.8.10. Поле User Name.........................................................................................................82
5.8.11. Поле Checksum..........................................................................................................82
5.8.12. Поле End PnP............................................................................................................82
5.8.13. Пример РпР-идентификатора....................................................................................83
5.9. INF-файл и его структура...............................................................................................84
5.9.1. Секция Version.............................................................................................................84
5.9.2. Секция Manufacturer.....................................................................................................85
5.9.3. Секция DestinationDirs.................................................................................................88
Ключ DefaultDescDir.............................................................................................................88
Ключи file-list-section.............................................................................................................88
Ключ dirid.............................................................................................................................88
Ключ subdir...........................................................................................................................89
5.9.4. Секция описания модели.............................................................................................90
5.9.5. Секции xxx.AddReg и xxx.DelReg.................................................................................91
5.9.6. Секция xxx.LogConfig..................................................................................................92
5.9.7. Секция xxx.CopyFiles...................................................................................................93
5.9.8. Секция Strings..............................................................................................................94
5.9.9. Связи секций...............................................................................................................95
Часть II. Практика программирования..................................................................................97
Глава 6. Использование сервисов BIOS................................................................................99
6.1. Подготовка.....................................................................................................................99
6.2. Первая программа последовательной связи..................................................................100
6.3. Другие функции BIOS..................................................................................................102
Глава 7. Прямое программирование портов........................................................................104
7.1. Коммуникационные порты...........................................................................................104
7.2. Программа определения наличия СОМ-портов.............................................................105
7.3. Обходим ограничения BIOS..........................................................................................106
7.4. Чтение и запись с помощью модуля RS232DOS............................................................111
Глава 8. Использование обработки прерываний..................................................................113
8.1. Прерывания..................................................................................................................113
8.2. Модуль RS232lnt для работы с прерываниями...............................................................115
8.3. Последовательный обмен с помощью прерываний.......................................................124
Глава 9. Переход в Windows.................................................................................................127
9.1. Переходим из DOS в Windows.......................................................................................127
9.2. Первая программа для Windows.....................................................................................131
9.3. Перенос программ из Windows 9х в Windows NT/2000..................................................142
9.3.1. Получение доступа к портам в Windows 2000/XP.......................................................143
9.3.2. Расширение возможностей GivelO..............................................................................148
9.3.3. Работа с драйвером GivelOEx.....................................................................................157
9.3.4. Еще немного о прямом доступе к портам...................................................................165
Глава 10. Использование функций Windows........................................................................166
10.1. Обзор функций Windows для работы с последовательными портами..........................166
10.2. Специальная настройка порта.....................................................................................167
10.3. Получение состояния линий модема...........................................................................168
10.4. Используем функции Windows....................................................................................168
10.5. Несколько замечаний о контроле четности.................................................................183
Глава 11. Использование потоков.......................................................................................185
11.1. Преимущества потоков...............................................................................................185
11.2. Создание потока опроса порта....................................................................................185
Глава 12. Функции асинхронного доступа и события..........................................................194
12.1. Асинхронный доступ..................................................................................................194
12.2. События последовательного порта..............................................................................197
12.3. Использование событий..............................................................................................197
Глава 13. Специальные коммуникационные функции.........................................................201
13.1. Выполнение дополнительных операций......................................................................201
13.2. Прямое управление драйвером....................................................................................203
13.3. Обнаружение всех портов системы.............................................................................222
13.4. Имена портов..............................................................................................................225
13.5. АРС-функции Windows 2000/XP.................................................................................231
Глава 14. Реализация протоколов обмена............................................................................234
14.1. Прием и передача простого пакета..............................................................................234
14.2. Создание компонента..................................................................................................241
14.3. Реализация ASCII-протокола.......................................................................................254
14.4. Реализация бинарного протокола................................................................................262
Глава 15. Вычисление контрольных сумм............................................................................273
15.1. Вычисление простой контрольной суммы...................................................................273
15.2. Вычисление LCR.........................................................................................................274
15.3. Вычисление CRC16.....................................................................................................275
15.4. Вычисление CRC32.....................................................................................................279
Глава 16. Интерфейс RS-485................................................................................................282
16.1. Стандарт RS-485..........................................................................................................282
16.2. Как работает СОМ-порт IBM PC.................................................................................283
16.3. Реализация RS-485......................................................................................................288
Глава 17. Работа Plug and Play.............................................................................................291
17.1. Эмулятор устройства..................................................................................................291
17.2. Установка драйвера устройства..................................................................................300
17.3. Обнаружение изменений.............................................................................................303
Часть III. Справочник..........................................................................................................309
Глава 18. Сервис BIOS INT14H/INT21H..............................................................................311
18.1. Сервис BIOS INT14H..................................................................................................311
18.1.1. Функция 00: инициализация порта...........................................................................312
18.1.2. Функция 01: посылка символа в порт.......................................................................313
18.1.3. Функция 02: получение символа...............................................................................313
18.1.4. Функция 03: получить статус порта..........................................................................313
18.1.5. Функция 04: расширенная инициализация (System/2)...............................................314
18.1.6. Функция 05: расширенное управление портом (System/2)........................................315
18.2. Сервис BIOS 1NT21H.................................................................................................316
18.2.1. Функция ОЗН: вспомогательный ввод......................................................................317
18.2.2. Функция 04Н: вспомогательный вывод....................................................................317
.2.3. Функция 3FH: чтение данных через описатель............................................................317
18.2.4. Функция 40Н: запись данных через описатель.........................................................318
Глава 19. Порты IBM PC.....................................................................................................319
19.1. Порт 3F8H (BasePort+О): данные и делитель..............................................................320
19.2. Порт 3F9H (BasePort+1): разрешение прерываний и делитель....................................320
19.3. Порт 3FAH (BasePort+2): идентификация прерываний...............................................321
19.4. Порт 3FBH (BasePort+З): управление линией.............................................................322
19.5. Порт 3FCH (BasePort+4): управление модемом...........................................................323
19.6. Порт 3FDH (BasePort+5): статус линии.......................................................................324
19.7. Порт 3FEH (BasePort+6): статус модема......................................................................325
19.8. Порт 3FFH (BasePort+7): заглушка..............................................................................325
19.9. Скорость передачи......................................................................................................325
19.10. Порты контроллера прерываний...............................................................................326
Глава 20. Структуры Windows для работы с СОМ-портами.................................................328
20.1. Структура настроек порта COMMCONFIG.................................................................328
20.2. Структура COMMPROP..............................................................................................330
20.3. Структура тайм-аутов COMMTIMEOUTS..................................................................336
20.4. Структура статуса порта COMSTAT...........................................................................339
20.5. Структура DCB...........................................................................................................340
Глава 21. Функции Windows для работы с СОМ-портами....................................................347
21.1. Функции CreateFile и CloseHanclle: открытие и закрытие порта...................................347
21.1.1. Дополнительные сведения........................................................................................349
21.1.2. Возвращаемое значение............................................................................................349
21.1.3. Пример вызова.........................................................................................................349
21.2. Функция ReaclFile: чтение данных из порта.................................................................350
21.2.1. Дополнительные сведения........................................................................................351
21.2.2. Возвращаемое значение............................................................................................351
21.2.3. Пример вызова.........................................................................................................351
21.3. Функция WriteFile. передача данных............................................................................352
21.3.1. Дополнительные сведения........................................................................................353
21.3.2. Возвращаемое значение............................................................................................353
21.3.3. Пример вызова.........................................................................................................353
21.4. Функция ReaclFileEx. АРС-чтение данных..................................................................354
21.4.1. Возвращаемое значение...........................................................................................356
21.4.2. Дополнительные сведения.......................................................................................356
21.4.3. Пример вызова.........................................................................................................356
21.5. Функция WriteFileEx. АРС-передача данных...............................................................357
21.5.1. Возвращаемое значение............................................................................................358
21.5.2. Пример вызова.........................................................................................................358
21.6. Функция BuildCommDCB: создание структуры DCB из строки..................................359
21.6.1. Дополнительные сведения.......................................................................................360
21.6.2. Возвращаемое значение...........................................................................................360
21.6.3. Пример вызова.........................................................................................................360
21.7. Функция BuildCommDCBAndTimeouts: создание структуры DCB
и тайм-аутов из строки........................................................................................................361
21.8. Функции SetCommBreak и ClearCommBreak: управление
выводом данных..................................................................................................................362
21.8.1. Возвращаемое значение...........................................................................................362
21.9. Функция ClearComm Error, получение и сброс ошибок порта.....................................363
21.9.1. Возвращаемое значение............................................................................................364
21.10. Функция Cancello: прерывание асинхронных операций.............................................364
21.10.1. Возвращаемое значение..........................................................................................364
21.11. Функция EscapeCommFunction: управление портом..................................................365
21.11.1. Возвращаемое значение.........................................................................................366
21.12. Функции GetCommMask и SetCommMask: маска вызова событий............................366
21.12.1. Возвращаемое значение.........................................................................................367
21.12.2. Пример вызова.......................................................................................................367
21.13. Функция CreateEvenr. создание объекта ожидания....................................................367
21.13.1. Возвращаемое значение..........................................................................................368
21.13.2. Пример вызова.......................................................................................................368
21.14. Функция WaitCommEvent. ожидание события СОМ-порта........................................368
21.14.1. Возвращаемое значение..........................................................................................369
21.14.2. Дополнительные сведения......................................................................................369
21.14.3. Пример вызова........................................................................................................369
21.15. Функции GetCommConfig и SetCommConfig. конфигурирование параметров порта....................................................................................................................................372
21.15.1. Возвращаемое значение..........................................................................................372
21.15.2. Пример вызова.......................................................................................................373
21.16. Функция CommConfigDialog. диалог конфигурирования порта.................................374
21.16.1. Возвращаемое значение..........................................................................................375
21.16.2. Дополнительные сведения......................................................................................375
21.16.3. Пример вызова.......................................................................................................375
21.17. Функция GetCommProperties: прочитать свойства порта...........................................375
21.17.1. Возвращаемое значение..........................................................................................376
21.17.2. Пример вызова.......................................................................................................376
21.18. Функции GetCommState и SetCommState: состояние порта........................................376
21.18.1. Возвращаемое значение..........................................................................................377
21.18.2. Пример вызова........................................................................................................377
21.19. Функции GetCommTimeouts и SetCommTimeouts: тайм-ауты порта..........................377
21.19.1. Возвращаемое значение.........................................................................................378
21.19.2. Пример вызова.......................................................................................................378
21.20. Функция PurgeComm: сброс буферов порта..............................................................378
21.20.1. Возвращаемое значение.........................................................................................379
21.20.2. Пример вызова.......................................................................................................379
21.21. Функция SetupComm: конфигурирование размеров буферов....................................380
21.21.1. Возвращаемое значение.........................................................................................381
21.22. Функции GetDefaultCommConfig и SetDefnuhCommConfig.
настройки порта по умолчанию..........................................................................................381
21.22.1. Возвращаемое значение.........................................................................................382
21.23. Функция TransmitCommChar. передача специальных символов................................382
21.23.1. Возвращаемое значение.........................................................................................382
21.24. Функция GetCommModemStatus: статус модема........................................................383
21.24.1. Возвращаемое значение.........................................................................................383
21.24.2. Пример вызова.......................................................................................................383
21.25. Функция WaitForSingleObject. ожидание сигнального
состояния объекта...............................................................................................................384
21.25.1. Возвращаемое значение.........................................................................................385
21.26. Функция WaitForMultipleObjects: ожидание сигнального
состояния объектов.............................................................................................................385
21.26.1. Возвращаемое значение.........................................................................................386
21.27. Функция GetOverlappedResult, результат асинхронной операции..............................387
21.27.1. Возвращаемое значение.........................................................................................388
21.28. Функция DeviceloControl: прямое управление драйвером..........................................388
21.28.1. Возвращаемое значение.........................................................................................390
21.29. Функция EnumPorts: перечисление портов...............................................................390
21.29.1. Дополнительные сведения.....................................................................................391
21.29.2. Возвращаемое значение.........................................................................................391
21.29.3. Пример вызова......................................................................................................392
21.30. Функция Query Dos Device: получение имени устройства
по его DOS-имени...............................................................................................................393
21.30.1. Возвращаемое значение.........................................................................................393
21.30.2. Пример вызова.......................................................................................................394
21.31. Функция Define Dos Device: операции с DOS-именем устройства.............................395
21.31.1. Возвращаемое значение.........................................................................................395
21.31.2. Пример вызова.......................................................................................................395
Глава 22. Функции DiviceloControl для последовательных портов.......................................397
22.1 Функции драйвера последовательного порта...............................................................397
22.2. Структуры драйвера последовательного порта...........................................................404
22.3. Соответствие функций Device loControl и Windows API..............................................406
Глава 23. АТ-команды и регистры модемов.........................................................................409
23.1. Основные АТ-команды модемов.................................................................................409
23.2. Основные регистры модемов......................................................................................416
Часть IV. Приложения.........................................................................................................419
Приложение 1. Микросхемы UART.....................................................................................421
Общее описание..................................................................................................................421
Характерные особенности...................................................................................................421
Описание контактов............................................................................................................422
Типы микросхем UART.......................................................................................................426
Приложение 2. Библиотека функций для Pascal..................................................................427
Приложение 3. Формат SINGLE чисел с плавающей точкой...............................................429
Приложение 4. Описание функций Windows для использования
в Visual Basic........................................................................................................................430
Приложение 5. Использование ActiveX-компонента MSComm32........................................433
Приложение 6. Сервис BIOS — обслуживание INT14H......................................................436
Приложение 7. Как работает GivelO....................................................................................442
Приложение 8. Реализация процедуры преобразования SINGLE-чисел
в строку...............................................................................................................................450
Приложение 9. Индикаторы состояния модема....................................................................455
Приложение 10. Инструменты.............................................................................................456
Порт-монитор......................................................................................................................456
Разработка драйверов Driver Wizard....................................................................................457
Разработка драйверов NuMega Driver Studio........................................................................457
Отладчик NuMega SoftlCE....................................................................................................458
Эмулятор компьютера Connectix Virtual PC..........................................................................458
Терминал HyperTerminal......................................................................................................458
Приложение 11. Формат команды Mode..............................................................................460
Приложение 12. Часто задаваемые вопросы (FAQ)..............................................................462
FAQ: Общие вопросы...........................................................................................................462
Приложение 13. Описание компакт-диска...........................................................................469
Литература и интернет-ресурсы...........................................................................................471
Предметный указатель.........................................................................................................472
|