[PortCoding] Шаг1. Поля ввода номера порта и данных.

Автор: | 20.01.2014

Шаг 1. Поля ввода номера порта и данных.

И так, в разделе О проекте Вы научились записывать данные в порт с помощью кнопки. Однако, если с 888 регистра порта можно числа от 0 до 255, тогда, очевидно, на каждое значение кнопок не настачишся. Для этого отлично подходят два стандартных элемента управления : Edit — для ввода данных 0…255 и ComboBox — для переключения номера порта. Что они делают Вы видели в демонстрационном примере, теперь же разберёмся как всё это работает.

Расположите на форме Edit, ComboBox и кнопку Button. Цель — при щелчке по кнопке происходит запись в тот порт, значение которого установлено в ComboBox, и запись числа введеного в поле Edit.
Щёлкаем по кнопке и вставляем следующий код:

[pas]procedure TForm1.Button1Click(Sender: TObject);
Var
b : byte; //—переменная, для данных
pa : integer; //—переменная будет хранить номер порта
begin
if (Edit1.Text <> ») and //—если в поле ввода данных не нет ничего
(ComboBox1.Text <> ») then //— и не не выставлен номер порта, тогда начать
begin
pa := StrToInt(ComboBox1.Text); //— текст (номер порта) преобраз. в числа и присв.- pa
b := StrToInt(Edit1.Text); //—тоже делаем с данными, присваиваем — b
PortWriteByte((pa),(b)); //— пишем в порт
end else
ShowMessage (‘Введите данные’); //— иначе сообщение
end;[/pas]

Экспериментируем с чтением данных.
Устанавливаем на форму Timer и CheckBox. Свойство Enabled устанавливаем в false и вставляем следующие коды:

[pas]procedure TForm1.Timer1Timer(Sender: TObject);
Var
pa : integer;
b : byte;
begin
pa := StrToInt(ComboBox1.Text);
b :=( PortReadByte(pa) ) ; //— читаем
Form1.Caption := ‘в порту — ‘ + IntToStr(b); //— выводим прочитанное в заголовок
if b = 64 then //— если в порту число = 64 тогда
begin
Timer1.Enabled := false; //— отключаем таймер
CheckBox1.Checked := false; //— убираем галочку
ShowMessage (‘Обнаружено число 64’); //— сообщаем
end;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked = true then //— включаем – отключаем таймер
Timer1.Enabled := true else
Timer1.Enabled := false;
end;[/pas]

Скачайте этот пример (исходник 11 kb) — Primer2.zip
Шаг2. Взаимодействие органов управления — пример PortDemoControl