Интернет-магазин

Просмотр корзины
В корзине:

товаров - 0 шт.



§ 2.6. Программирование модуля Ke-USB24A на языке Delphi (Часть 1)

Дмитрий Иванов, 5 апреля 2008

Файлы к статье скачать
Имя: KA002_6.zip (ZIP архив)
Размер: 217 КБ

Продемонстрирую работу с модулем Ke-USB24A и на других языках программирования. В этой статье мы поговорим о Delphi. Напишем программу, которая будет тушить/зажигать светодиоды, подключенные к выводам модуля (они должны быть настроены на выход).


Проект можно скачать готовым в файлах к статье. Внешний вид диалогового окна программы показан на рисунке ниже.

Программирование на Delphi Ke-USB24A

Рассмотрим обработчик нажатия кнопки "Open". В этой процедуре мы должны открыть COM порт и настроить его. Процедура нам уже знакомая, только здесь она выполняется средствами Delphi.

procedure TForm1.Button1Click(Sender: TObject);
begin
PortString := '\\.\COM' + Edit1.Text;   
CommHandle := CreateFile(PChar(PortString), GENERIC_READ or 
			GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);

if (CommHandle = INVALID_HANDLE_VALUE) then
begin
  MessageDlg('Error. Can`t Open port', mtError, [mbOK], 0);
end
else
begin
  GetCommState(CommHandle, DCB);
  DCB.BaudRate  := CBR_9600; // FORMALLY, CONNECT BAUD DOESN`T MATTER (Virtual Com Port)
  DCB.Parity    := NOPARITY;
  DCB.ByteSize  := 8;
  DCB.StopBits  := OneStopBit;


  CommTimeOuts.ReadIntervalTimeout          := 0;
  CommTimeOuts.ReadTotalTimeoutMultiplier   := 0;
  CommTimeOuts.ReadTotalTimeoutConstant     := 1000;
  CommTimeOuts.WriteTotalTimeoutMultiplier  := 0;
  CommTimeOuts.WriteTotalTimeoutConstant    := 1000;
  SetCommTimeouts(CommHandle, CommTimeOuts);
  SetCommState(CommHandle, DCB);

  MessageDlg('Port Open Ok', mtInformation, [mbOK], 0);
end 
end;

А вот обработчик нажатия кнопки "Write". Здесь мы считываем из окошек ввода номер линии ввода/вывода и значение для записи. Проверяем их на элементарную адекватность. Если все нормально, формируем команду записи $KE,WR и отправляем ее в порт.

procedure TForm1.Button2Click(Sender: TObject);
var
  line:  Shortint;
  value: Shortint;
  valid: Boolean;
  buffer: string;
  CRbyte: Shortint;
  LFbyte: Shortint;
  NumberWritten : DWORD; 
begin
  line  := StrToInt(Edit2.Text);
  value := StrToInt(Edit3.Text);
  valid := TRUE;

if ((line > 24) or (line < 1)) then
begin
  MessageDlg('Invalid Line Number', mtError, [mbOK], 0);
  valid := FALSE;
end;

if ((value > 1) or (value < 0)) then
begin
  MessageDlg('Invalid Value', mtError, [mbOK], 0);
  valid := FALSE;
end;

if (valid = TRUE) then
begin
  CRbyte := 13; // HEX 0x0D
  LFbyte := 10; // HEX 0x0A
  buffer := '$KE,WR,' + Edit2.Text + ',' + Edit3.Text + Char(CRbyte) +
            Char(LFbyte);
  WriteFile(CommHandle, PChar(buffer)^, Length(buffer), NumberWritten, nil);  
end;    
end;

Вот такой простенький пример, который позволит Вам работать с модулем Ke-USB24A на языке Delphi. В следующих статьях мы посмотрим как читать информацию передаваемую модулем.



© Дмитрий Иванов
5 апреля 2008 года
http://www.kernelchip.ru



© KERNELCHIP 2006 - 2023