[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