Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Bioscom

CuBook05

Функция

Выполняет ввод/вывод из последовательного порта.
 
Синтаксис

#include<bios.h>
int bioscom(int cmd, char abyte, int port);
 
Прототип

bios.h
 
Описание

Функция bioscom выполняет разнообразную связь через RS232 при помощи порта ввода/вывода, указываемого в аргументе port. Значение 0 аргумента port соответствует COM1, значение 1 соответствует COM2 и т.д. Значение аргумента cmd может быть одним из следующих:
0 - устанавливает параметры связи в abyte;
1 - пересылает символ в abyte по линии связи;
2 - получает символ по линии связи;
3 - возвращает текущее состояние коммуникационного порта.
 
Возвращаемое значение

Для всех значений cmd bioscom возвращает шестнадцатибитовое целое число, где 8 старших бит - это биты состояния, а 8 младших битов варьируются в зависимости от значения cmd. Старшие биты в возвращаемом значении имеют следующие значения:
бит 15 - таймаут;
бит 14 - передающий сдвиговый регистр пуст:
бит 13 - передающий регистр хранения пуст;
бит 12 - обнаружено прерывание;
бит 11 - ошибка формирования кадра синхронизации;
бит 10 - ошибка четности;
бит 9 - ошибка переполнения;
бит 8 - готовность данных.
 
Если значение в abyte невозможно передать, то устанавливается бит 15. В других случаях старшие и младшие биты устанавливаются соответствующим образом. К примеру, если возникла ошибка кадра синхронизации, то устанавливается бит 11. Если cmd имеет значение 2, то считываемый байт находится в младших битах, если не было ошибки. Если же произошла ошибка, устанавливается, по крайней мере, один из старших бит. Если ни один из старших бит не установлен, значит байт был получен без ошибки.
 
Если cmd имеет значение 0 или 3, то возвращаемое значение содержит старшие биты, как они были определены выше, а младшие биты определяются следующим образом:
бит 7 - прием обнаруженного линейного сигнала;
бит 6 - кольцевой индикатор;
бит 5 - набор данных готов;
бит 4 - готовность к передаче;
бит 3 - изменение в приеме детектора линейного сигнала;
бит 2 - завершающий кольцевой детектор;
бит 1 - изменение в готовности набора данных;
бит 0 - изменение в готовности к передаче.
 
Переносимость

bioscom поддерживается только на компьютерах IBM PC или совместимых с ними.
 
Пример

#include <bois.h>
#include <conio.h>

#define COM1 0
#define DATA_READY 0x100
#define TRUE 1
#define FALSE 0
#define SETTINGS (0x80|0x02|0x00|0x00)

int main(void)
{
int in, out, status,DONE=FALSE;
bioscom(0, SETTINGS, COM1);
cprintf("... BIOSCOM [ESC] to exit ...\n");
while (!DONE)
{
status = bioscom(3, 0, COM1);
if (status & DATA_READY)
if ((out=bioscom(2, 0, COM1) & 0x7F) != 0)
putch(out);
if (kbhit())
{
if ( (in = getch()) == '\x1B')
DONE = TRUE;
bioscom(1, in, COM1);
}
}
return 0;
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий