Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

bioscom

 
 Функция            Выполняет ввод/вывод из последовательного порта.
 
 
 
 Синтаксис          #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 - возвращает текущее состояние коммуникационного
 
                        порта.
 
 
 
                    abyte является  комбинацией  следующих  битов   (из
 
                    каждой группы выбирается одно значение):
 
 
 
                    0x02 - 7 битов данных            0x00    110 бод
 
                    0x03 - 8 битов данных            0x20    150 бод
 
 
 
                    0x00 - 1 стоп-бит                0x40    300 бод
 
                    0x04 - 2 стоп-бита               0x60    600 бод
 
                    0x00 - нет проверки на четность  0x80    1200 бод
 
                    0x08 - проверка на нечетность    0xA0    2400 бод
 
                    0x18 - проверка на четность      0xC0    4800 бод
 
                                                     0xE0    9600 бод
 
 
 
                    Например, если  abyte имеет следующее значение 0xEB
 
                    (0xE0|0x08|0x00|0x03),  то  это  устанавливает  для
 
                    коммуникационного порта скорость передачи 9600 бод,
 
                    контроль на  нечетность,  1  стоп-бит,  и  8  битов
 
                    данных. bioscom использует прерывание BIOS 0x14.
 
 
 
 Возвращаемое       Для всех значений 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;
 
 }

<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS