Получение измерительной информации из аппаратуры “Контроль”

В разрабатываемом программном обеспечении используется второй способ - последовательный опрос. При этом проблема отсутствия при этом возможности выполнения других программ решается элементарно при помощи многозадачной концепции операционной системы Windows. За получение последовательности байт информации из аппаратуры “Контроль” отвечает дополнительная запускаемая нить (процесс), которая работает с не очень высоким приоритетом и осуществляет постоянный последовательный опрос COM-порта. В случае обнаружения события «Готовность байта данных», эта нить записывает принятый байт во внутренний буфер и по окончании приема всей последовательности, состоящей, как было сказано ранее, из 32 байт, осуществляет вызов функции раскодирования принятой последовательности.

Для создания дополнительной нити используется абстрактный класс Tthread, который позволяет создавать отдельные нити выполнения в приложении. В разрабатываемом программном обеспечении создается класс, производный от Tthread - SerialLink:

class SerialLink : public Tthread

{:: fastcall Execute();:

fastcall SerialLink(bool CreateSuspended); fastcall DecodePacket(void);

};

В конструкторе полученного класса производится установление приоритета дополнительной нити:

fastcall SerialLink::SerialLink(bool CreateSuspended)

: Tthread(CreateSuspended)

{= true;= tpIdle;

}

В методе класса SerialLink - унаследованной от Tthread функции Execute() происходит открытие, начальная инициализация и установка таймаутов последовательного порта COM1. Для открытия используется функция CreateFile:

HANDLE hCom; BOOL fSuccess; hCom = CreateFile(«COM1», // порт COM1 GENERIC_READ, // на чтение 0, /* устройства связи должны быть открыты с эксклюзивным доступом */ NULL, /* без атрибутов безопасности */ OPEN_EXISTING, /* устройства связи должны использовать OPEN_EXISTING */ 0, /* без пересеченного ввода-вывода */ NULL /* параметр hTemplate должен быть NULL для устройств связи */);

Начальная инициализация COM-порта происходит в соответствии с параметрами выходных сигналов аппаратуры “Контроль”. Для инициализации используются функции GetCommState и SetCommState:

fSuccess = GetCommState(hCom, &dcb); /* Заполняем структуру DCB:

скорость = 9600,

битов данных,

без контроля четности,

стоп-бита. */ dcb.BaudRate = 9600; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = TWOSTOPBITS; fSuccess = SetCommState(hCom, &dcb);

Установка таймаутов производится при помощи функций GetCommTimeouts и SetCommTimeouts:

GetCommTimeouts(hCom, &TimeOuts);.ReadIntervalTimeout = 100;.ReadTotalTimeoutMultiplier = 1;.ReadTotalTimeoutConstant = 100;(hCom, &TimeOuts);

Параметр ReadIntervalTimeout определяет максимальное время, в миллисекундах, между поступлением двух символов в линии связи. В течение действия ReadFile, период времени начинается тогда, когда получен первый символ. Если интервал между поступлением любых двух символов превышает это количество, действие ReadFile завершается.

Далее, в основном цикле работы функции Execute() происходит чтение последовательности байт через порт COM1:

unsigned long g=1;work1[2], work2[2];(!Terminated)

{= ReadFile(hCom,work1,g,&g,0);((fSuccess)&&(g>0))

{

{= ReadFile(hCom,work2,g,&g,0);((fSuccess)&&(g>0))

{[index] = work1[0]|(work2[0]<<8);++;(index==16)

{();=0;

}

}

} while ((fSuccess)&&(g>0));

}

}

Чтение производится функцией ReadFile. В соответствии с работой аппаратуры “Контроль”, сначала считывается младший байт информационного слова, затем - старший. По пришествии 16 информационных двухбайтовых слов происходит вызов функции-члена класса DecodePacket, осуществляющей раскодирование принятой информации в соответствии с таблицей 2.1.

Перейти на страницу: 1 2 

Читайте также

Параллельное развитие аналоговой и цифровой вычислительной техники
Вычислительная техника сегодня является важнейшим компонентом процесса вычислений и обработки данных. Основой современной научно-технической революции является бурное развитие средств об ...

Проектирование междугородной магистрали между г. Кемерово – г. Лениск-Кузнецкий с использованием симметричного кабеля
Наше время, в особенности последние десять лет, характеризуется бурным развитием телекоммуникационных технологий. Наряду с появлением новых форм передачи информации, совершенствуются тра ...

Основы статистической теории радиолокации
Если о сигнале все известно , то нет необходимости в его приеме, если о нем ничего не известно, то его невозможно отличить от помех, и прием его невозможен. Поэтому, ...

Основные разделы

Все права защищены! (с)2024 - www.generallytech.ru