|
||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Программирование операций управления аппаратурой при использовании интерфейса RS232C
Основной режим передачи данных при работе с аппаратурой измерения и управления - асинхронный. По линиям интерфейса передаются команды управления аппаратурой или данные. В библиотеке базовых функций для этого достаточно иметь 3 функции: а) инициализации; б)записи; в)чтения.
Функция инициализации Описание: функция обеспечивает задание выбор СОМ порта и задание режима работы: количество битов (от 5 до 8) в передаваемом слове данных, количество стоповых битов (1,5 или 2), наличие или отсутствие бита паритета (контроля на четность/нечетность), тактовая частота передачи битов. Тело функции: outportb(Base+3,0x80);/*запись кода установки режима загрузки делителя частоты тактового генератора в управляющий регистр*/ outportb(Base,0xff);/*запись младшего байта кода делителя частоты*/ outportb(Base+1,0xff00>>8);/* запись старшего байта кода делителя частоты */ outportb(Base+3,<слово режима>);/*запись кода формата данных*/ outportb(Base+1,0);/*запрет прерываний*/
Функция записи (вывода одного слова данных)
while((inportb(Base+5) & 0x20) = = 0) /*ожидание готовности*/ { t++; /*параметр t нужен, если предусматривать выход из функции "по таймауту" при зацикливании*/ if (t>lTimeout) return; /*Это пример выхода из функции при зацикливании*/ } outportb(Base,data); /*передача*/
Функция чтения (ввода одного слова данных)
while((inportb(Base+5) & 0x01) = = 0) /*ожидание готовности*/ { t++ } data = outportb(Base); /*прием*/ В библиотеке базовых функций для работы с аппаратурой при использовании интерфейса RS232 желательно иметь также функции передачи строки символов:
Функция записи строки символов i=0;t=0; while cCmd[i]! = NULL { while ((inportb(Base+5) & 0x20) = = 0) { t++ /*Цикл предусмотрен для организации выхода по тайм-ауту (при зацикливании)*/ } outportb(Base,cCmd[i]);/*Вывод строки символов, составляющих команду*/
Функция чтения i=0; t=0; for (;;) { while ((inportb(Base+5) & 0x01)! = 0x01) { t++ /*Цикл предусмотрен для организации выхода по тайм-ауту (при зацикливании)*/ } c=inportb(Base) & 0xff; if (c = = 0x0D) break; /*Прекращение чтения при появлении символа CR - конец строки*/ else cCmd[i] = c; i++; }
Программирование операций управления аппаратурой, подключенной к компьютеру с помощью интерфейса RS-232, с использованием стандартных библиотечных функций в программной среде LabWindows/CVI 8.0 Для работы с аппаратурой, подключенной к компьютеру с помощью интерфейса RS-232, в LabWindows/CVI 8.0 предусмотрены 29 функций, в том числе: OpenComConfig(N, DeviceName, Baudrate, Parity, DataBits, StopBits, InputQueueSize, OutputQueueSize); -открытие и конфигурирование COM-порта. ComRd(N, Temp, Count) – прием строки символов; ComWrt(N, Temp, Count) –передача строки символов; CloseCom (N) – закрытие СОМ – порта. Параметры: N – номер СОМ-порта (1…32); DeviceName – имя СОМ-порта (обычно СОМ1, СОМ2 и т.д.) Baudrate – скорость передачи, бод; Parity – наличие (1) или отсутствие (0) контроля на четность; DataBits – количество бит (5…8) в передаваемом слове; StopBits – количество стоповых бит; InputQueueSize – размер очереди приема, бит. Обычно – 512. OutputQueueSize – размер очереди передачи, бит. Обычно - 512. Temp – имя буфера для одной посылки; Count – размер буфера для одной посылки, байт;
Ниже приведен фрагмент программы чтения данных (значений температуры) с инфракрасного термометра АТТ-2508 (см. табл. 28), подключенного к компьютеру с помощью интерфейса RS-232. Значения температуры кодируются в 12, 13 и 14 символах в строке символов, принимаемой с инфракрасного термометра.
OpenComConfig (1, "COM1", 9600, 0, 7, 1, 512, 512); //открытие СОМ1 ComRd(1, temp, 16); Temperature = (float)((((int)temp[12] - 48) * 100 + ((int)temp[13] - 48) * 10 + ((int)temp[14] - 48)) / 10.0); //Преобразование кодов ASCII строки символов в трехразрядное десятичное число. CloseCom (1); //закрытие СОМ1
Табл. 28
Контрольные вопросы и задачи
1. Напишите фрагмент программы передачи команды @0106 в виде строки символов. При инициализации СОМ-порта задать: количество битов в передаваемом слове данных - 8, количество стоповых битов -1, наличие отсутствие бита паритета (контроля на четность/нечетность), тактовая частота передачи битов – 19200 бод. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |