Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_I-7188.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
294 Кб
Скачать
☆

4. Система команд контроллера I-7188 ead

1. Команды чтения и записи на порта

Контроллер I-7188 EAD имеет 8 дискретных входов и 7 дискретных выходов. Для чтения состояния дискретных входов и изменения состояния дискретных выходов можно использовать следующих команд:

Inp(порт) - считывание состояния дискретных входов. Для нашего контроллера номер порта равен 0. Эта функция возвращает один байт (8 бит).

Outp(порт, значение) – записывает значение в указанный порт. Используется для изменения дискретного вывода.

Пример. Считывать состояние дискретного ввода и на выходе дублировать состояние входов. Код этой программы следующий.

#include "..\lib\7188e.h"

#include <conio.h>

int in, data, quit=0;

main()

{

Print("\r Example №1 \n");

// Ц И К Л К О Н Т Р О Л Л Е Р А

while(!quit)

{

in= inp(0); // чтение порта

outp(0, in); // вывод на порт

//проверка на выход из цикла контроллера

if (Kbhit())

{

data=Getch();

if ((data=='q') || (data=='Q')) quit=1;

}

}

В этой программе для вывода служебной информации и ввода данных с клавиатуры использованы функции чтения/записи данных в порт СОМ1. Ниже приведем описание этих функций и функций, аналогичных по применению:

int Print(char* fmt, …) – эта функция используется вместо функции printf. Выводимое сообщение посылается на порт СОМ1. Возвращает номер посылаемого символа.

int Kbhit (void) – проверяет, имеется ли символ в буфере клавиатуры. Если данных нет, то возвращает 0. Если данные имеются, то возвращает символ.

int Getch(void) - считывает один символ из порта СОМ1 и возвращает его (число от 0 до 255). Если в буфере порта не имеется символа, то функция будет ожидать до тех пор, пока не появится символ.

void Putch (int data) – посылает один символ на порт СОМ1 (только младший байт будет послан)

void Puts (char* str) - посылает строку на порт СОМ1. Эта функция будет вызывать функцию Putch, чтобы посимвольно отправлять строку.

2. Инсталлирование драйвера сом-порта и снятие драйвера

Перед использованием СОМ-порта, пользователь должен вызывать функцию InstallCom (или InstallCom1/2/3/4) для инсталляции драйвера СОМ-порта. Перед выходом из программы, пользователь должен вызывать функцию RestoreCom (или RestoreCom1/2/3/4) для снятия драйвера COM-порта.

Заметим, для организации обмена по СОМ-портам, библиотека имеет одинаковые функции для портов СОМ1, СОМ2, СОМ3 и СОМ4. Далее, для краткости описания этих функций, рассмотрим описание функций только для порта СОМ1. Другие функции аналогичны, но отличаются только с названием функции, где последняя цифра – номер СОМ-порта.

Формат вызова функции InstallCom1:

int InstallCom1 (unsigned long скорость,

int длина слова, int четность);

3. Функции для работы с сом-портами

Функция проверки на наличие данных во входном буфере СОМ-порта:

int IsCom1(void);

Если буфер СОМ-порта пустой, то возвращает 0, если в буфере имеются данные, то возвращает 1. Если буфер СОМ-порта переполнен, то возвращает -7. Для снятия статуса переполнения следует считывать данных из СОМ порта с помощью функции ReadCom( ).

Функция чтения одного байта из входного буфера СОМ-порта

int ReadCom1(void);

Если чтение успешно, то возвращает ASCII-код символа (0 – 255), если ошибка чтения порта, то возвращает -1 (ошибка порта) или -6 (буфер пустой).

Функция посылки одного байта в СОМ-порт

int ToCom1(int data);

Функции передается ASCII-код передаваемого символа. В случае передачи байта возвращает 0, в противном случае -5.

Функция посылки n-байт данных в СОМ-порт

int ToCom1Bufn(char *buf, int no);

Функции передается адрес строки (buf) содержащего строку и количество передаваемых байтов. Если строка передана успешно, то возвращает 0 в противном случае -5.

Функция посылки строки в СОМ-порт

int ToCom1Str(char *str);

Функции передается адрес строки заканчивающиеся ASCII-нулем. Эта функция возвращает такие же значения, что и предыдущая функция.

Функция очистки всех данных из входного буфера СОМ-порта

int ClearCom1(void);

Возвращаемое значение 0.

Функция получения размера данных во входном буфере СОМ-порта

int DataSizeInCom1(void);

Возвращает количество символов во входном буфере. 0 означает пустой буфер.

Пример. Печатающая машина

Данные, введенные с клавиатуры компьютера, считываются через порт СОМ1 контроллера, а затем обратно через порт СОМ1 посылаются на компьютер. В результате на дисплее компьютера отображаются введенные данные.

#include "..\lib\7188e.h"

#include <conio.h>

int in, quit=0, data;

//Инсталлирование порта СОМ1.

//Считается, что 7188Е.ехе работает на скорости 115200

InstallCom1(115200L, 8, 0);

// Ц И К Л К О Н Т Р О Л Л Е Р А

while (!quit)

{

if (IsCom1( ))

{

data = ReadCom1( );

ToCom1 (data);

if (data ==’q’) quit = 1;

}

in= inp(0); // чтение порта

outp(0, in); // вывод на порт

} // Конец цикла контроллера

RestoreCom1( );

} //Конец программы

9

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]