- •1. Характеристики контроллера 7188еаd
- •2. Установление связи с программирующим компьютером
- •Загрузка программы в память
- •3. Разработка программного обеспечения
- •4. Система команд контроллера I-7188 ead
- •1. Команды чтения и записи на порта
- •2. Инсталлирование драйвера сом-порта и снятие драйвера
- •3. Функции для работы с сом-портами
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( );
} //Конец программы
