Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Использование контроллера




 

Контроллер основан на микропроцессоре Atmel AT89C5131. Для взаимодействия AT89C5131 и компьютера используется модуль DLP-USB245M компании FTDI.

 

Передача данных осуществляется по шине USB. Компанией FTDI предоставляется драйвер, позволяющий программисту работать с контроллером через виртуальный COM порт.

 

Работа с контроллером осуществляется путём записи кода команды (NAF) (и при необходимости – дополнительного параметра) в COM порт с помощью функций Win32 API.

 

Контроллер содержит 7 базовых регистров, посредством которых происходит информационный обмен между модулями в крейте и ПК:

 

 

*****************************************************************

1. (W) -Шина данных (вывод) - двадцать четыре бита (W1 –W24)

реализована тремя восьмибитовыми регистрами: Wl, Wm, Wh (младшим, средним, старшим)

2. (R) –Шина данных (ввод) - двадцать четыре бита (R1 – R24)

реализована тремя восьмибитовыми регистрами: Rl, Rm, Rh (младшим, средним, старшим)

******************************************************************

3. (A) – Регистр субадреса - - четыре бита (А1-А4)

4. (F) – Регистр функции - пять битов (F1-F5)

5. (N) – Регистр номера станции - пять битов (N1-N5)

******************************************************************

6 (Z) – Регистр управления - пять битов I, C, Z, X, Q,L

7 (L) – Регистр состояния - двадцать четыре бита (L1 –L24)

*******************************************************************

 

 

Для упрощения работы с контроллером была создана библиотека libcamac.dll.

 

 

Библиотека libcamac.dll

 

Для упрощения написания программ управления контроллером предоставляется библиотека libcamac.dll. Эта библиотека предоставляет набор функций для взаимодействия с контроллером. Она реализует использование буфера команд для ускорения работы через виртуальный COM порт, что позволяет увеличить скорость обмена данными между компьютером и контроллером.

 

Типичная последовательность действий при работе с библиотекой:

******************************************************************

 

1. Поиск доступных COM портов с помощью функции searchCOMPorts()

2. Открытие порта с помощью функции openCOMPort()

3. Назначение открытого порта как порта для общения с контроллером с помощью функции setCamacPort()

4. Работа с контроллером; при работе с контроллером с помощью функций N(), A(), F(), Wl(), и.т.д. осуществляется заполнение буфера команд. Использование буфера и последующей пересылки буфера целиком позволяет увеличить скорость работы. После формирования буфера необходимо переслать его на контроллер с помощью команды Act(). Для считывания данных используется функция recData(). После выполнения команд надо очистить буфер с помощью функции clearBuffer().

5. Закрытие порта с помощью функции closeCOMPort().

*******************************************************************

Для работы с библиотекой из программ на Delphi создан модуль Camac.pas. Для работы программ, использующих библиотеку, необходимо чтобы файл libcamac.dll находился в каталоге с программой.

* В случае ошибки функции возвращают ненулевой код завершения. Текстовое

* описание ошибки может быть получено с помощью функции errorCodeString().

*

unit Camac;

 

// =========================================================

 

 

function openCOMPort(const Name: PChar; var ComPort: THandle): integer; stdcall; external 'libcamac.dll' name 'openCOMPort';

function closeCOMPort(ComPort: THandle): integer; stdcall; external 'libcamac.dll' name 'closeCOMPort';

 

function setCOMReadTimeOut(ComPort: THandle; const ReadTotalTimeout, ReadTotalTimeoutMultiplier, ReadTotalTimeoutConstant: integer): integer; stdcall; external 'libcamac.dll' name 'setCOMReadTimeOut';

function setCOMWriteTimeOut(ComPort: THandle; const WriteTotalTimeoutMultiplier, WriteTotalTimeoutConstant: integer): integer; stdcall; external 'libcamac.dll' name 'setCOMWriteTimeOut';

 

function setCOMSpeed(ComPort: THandle; const Speed: integer): integer; stdcall; external 'libcamac.dll' name 'setCOMSpeed';

 

function searchCOMPorts(Numbers: pointer; const Size: integer): integer; stdcall; external 'libcamac.dll' name 'searchCOMPorts';

function errorCodeString(const ErrorCode: integer): PChar; stdcall; external 'libcamac.dll' name 'errorCodeString';

 

function sendCOMData(ComPort: THandle; const Data: pointer; const DataSize: integer): integer; stdcall; external 'libcamac.dll' name 'sendCOMData';

function receiveCOMData(ComPort: THandle; const Data: pointer; const DataSize: integer): integer; stdcall; external 'libcamac.dll' name 'receiveCOMData';

function receiveAllCOMData(ComPort: THandle; const Data: pointer; DataSize: pointer): integer; stdcall; external 'libcamac.dll' name 'receiveAllCOMData';

 

// ---------------------------------------------------------

 

procedure setCamacPort(Port: THandle); stdcall; external 'libcamac.dll' name 'setCamacPort';

procedure clearBuffer(); stdcall; external 'libcamac.dll' name 'clearBuffer';

procedure addToBuffer(Byte: byte); stdcall; external 'libcamac.dll' name 'addToBuffer';

procedure sendBuffer(); stdcall; external 'libcamac.dll' name 'sendBuffer';

procedure recData(Data: pointer; const Size: integer); stdcall; external 'libcamac.dll' name 'recData';

function getLastError(): integer; stdcall; external 'libcamac.dll' name 'getLastError';

 

// ---------------------------------------------------------

 

procedure Act(); stdcall; external 'libcamac.dll' name 'Act';

procedure Cam(); stdcall; external 'libcamac.dll' name 'Cam';

procedure Z(); stdcall; external 'libcamac.dll' name 'Z';

procedure Wh(Byte: byte); stdcall; external 'libcamac.dll' name 'Wh';

procedure Wm(Byte: byte); stdcall; external 'libcamac.dll' name 'Wm';

procedure Wl(Byte: byte); stdcall; external 'libcamac.dll' name 'Wl';

procedure Whml(Word: longword); stdcall; external 'libcamac.dll' name 'Whml';

procedure W(Word: longword); stdcall; external 'libcamac.dll' name 'W';

procedure A(Byte: byte); stdcall; external 'libcamac.dll' name 'A';

procedure F(Byte: byte); stdcall; external 'libcamac.dll' name 'F';

procedure N(Byte: byte); stdcall; external 'libcamac.dll' name 'N';

procedure NAF(N: byte; A: byte; F: byte); stdcall; external 'libcamac.dll' name 'NAF';

procedure Rh(); stdcall; external 'libcamac.dll' name 'Rh';

procedure Rm(); stdcall; external 'libcamac.dll' name 'Rm';

procedure Rl(); stdcall; external 'libcamac.dll' name 'Rl';

procedure R(); stdcall; external 'libcamac.dll' name 'R';

procedure L(); stdcall; external 'libcamac.dll' name 'L';

procedure Q(); stdcall; external 'libcamac.dll' name 'Q';

procedure X(); stdcall; external 'libcamac.dll' name 'X';

procedure CamWh(Byte: byte); stdcall; external 'libcamac.dll' name 'CamWh';

procedure CamWm(Byte: byte); stdcall; external 'libcamac.dll' name 'CamWm';

 

procedure CamWl(Byte: byte); stdcall; external 'libcamac.dll' name 'CamWl';

procedure CamWhml(Word: longword); stdcall; external 'libcamac.dll' name 'CamWhml';

procedure CamW(Word: longword); stdcall; external 'libcamac.dll' name 'CamW';

procedure CamA(Byte: byte); stdcall; external 'libcamac.dll' name 'CamA';

procedure CamF(Byte: byte); stdcall; external 'libcamac.dll' name 'CamF';

procedure CamN(Byte: byte); stdcall; external 'libcamac.dll' name 'CamN';

procedure CamNAF(N: byte; A: byte; F: byte); stdcall; external 'libcamac.dll' name 'CamNAF';

procedure CamRh(); stdcall; external 'libcamac.dll' name 'CamRh';

procedure CamRm(); stdcall; external 'libcamac.dll' name 'CamRm';

procedure CamRl(); stdcall; external 'libcamac.dll' name 'CamRl';

procedure CamR(); stdcall; external 'libcamac.dll' name 'CamR';

procedure CamL(); stdcall; external 'libcamac.dll' name 'CamL';

procedure CamQ(); stdcall; external 'libcamac.dll' name 'CamQ';

procedure CamX(); stdcall; external 'libcamac.dll' name 'CamX';

procedure ActZ(); stdcall; external 'libcamac.dll' name 'ActZ';

procedure ActCam(); stdcall; external 'libcamac.dll' name 'ActCam';

procedure ActWh(Byte: byte); stdcall; external 'libcamac.dll' name 'ActWh';

procedure ActWm(Byte: byte); stdcall; external 'libcamac.dll' name 'ActWm';

procedure ActWl(Byte: byte); stdcall; external 'libcamac.dll' name 'ActWl';

procedure ActWhml(Word: longword); stdcall; external 'libcamac.dll' name 'ActWhml';

procedure ActW(Word: longword); stdcall; external 'libcamac.dll' name 'ActW';

procedure ActA(Byte: byte); stdcall; external 'libcamac.dll' name 'ActA';

procedure ActF(Byte: byte); stdcall; external 'libcamac.dll' name 'ActF';

procedure ActN(Byte: byte); stdcall; external 'libcamac.dll' name 'ActN';

procedure ActNAF(N: byte; A: byte; F: byte); stdcall; external 'libcamac.dll' name 'ActNAF';

function ActRh(): byte; stdcall; external 'libcamac.dll' name 'ActRh';

function ActRm(): byte; stdcall; external 'libcamac.dll' name 'ActRm';

function ActRl(): byte; stdcall; external 'libcamac.dll' name 'ActRl';

function ActR(): longword; stdcall; external 'libcamac.dll' name 'ActR';

function ActL(): byte; stdcall; external 'libcamac.dll' name 'ActL';

function ActQ(): byte; stdcall; external 'libcamac.dll' name 'ActQ';

function ActX(): byte; stdcall; external 'libcamac.dll' name 'ActX';

 

// =========================================================

 

 

Поделиться:





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

II. Использование галереи фильтров
VIII. ТЕХНИКА ИЗМЕНЕНИЯ ЛИЧНОЙ ИСТОРИИ С ИСПОЛЬЗОВАНИЕМ ВИЗУАЛЬ НОЙ СИСТЕМЫ.
А) С использованием кривых Безье
А. Проверка подлинности процессов при распределении ключей с использованием ЦРК
Билет № 27 Макроэкономические показатели, их взаимосвязь и использование в хоз.практике.
В рыночной экономике роль денег значительно повышается, чему способствуют создание и использование предпосылок, характерных для новых условий хозяйственной деятельности.
Вакуумные фотоэлементы и фотоэлектронные умножители, их использование в звуковом кино. Передающие телевизионные трубки. Изобретение электронно-лучевой трубки.
Ввод данных в базу. Использование формы данных
Ввод табличной формулы с использованием имен диапазонов.
Виды фондов рабочего времени и их использование при расчете необходимой численности работников.






Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...