|
Программируем порты - это очень просто !
____________________________________
О проекте
Занимаясь сопряжением внешних устройств и ПК, мною была разработана программа 'PortControl V3+' как удобный инструмент визуальной отладки вновь создаваемых программ без вмешательства в схемотехнику управляемого компьютером прибора. В настоящее время ПК стали очень доступны и гораздо универсальней, надёжней и функциональней использовать в своих конструкциях виртуальную панель управления, задействовав всю мощность графической оболочки ОС Windows, нежели пилять напильником, клепать и сверлить железные корпуса, устанавливая различные кнопки, переключатели, индикаторы и лампочки, не говоря уже о неограниченных возможностях современного компьютера.
Однако для многих отличных электронщиков детальное освоение ПК является далеко не самым быстрым и лёгким процессом. Еще более сложным делом становиться изучение языков программирования, даже на самом начальном уровне. И уж совсем трудновыполнимой задачей является разработка собственного програмного обеспечения для доступа в порты ввода-вывода персонального компьютера. Всё это осложняется тем, что в популярных средах визуального проектирования напрочь отсутствуют специализированые, например в виде компонент, средства работы с портами. Информация имеющаяся в русскоязычном интернете по данному вопросу очень скудна и зачастую не подходит начинающим разработчикам. В свою очередь, эта информация разделяется на две категории: или предлагается использовать ассемблеровские вставки ввода-вывода, или установить тот или иной компонент, в основном для Делфи и С++. Но русскоязычных компонентов, с русским хэлпом очень мало, и они как правило не бесплатные. Начинающим разработчикам установить компоненты и, особенно, разобраться в описании функций и процедур очень трудно, так как эти пакеты предназначены, в основном, для изготовления профессиональных приложений.
Ассемблеровские вставки хорошо подходят для Win9x, но тут возникает вопрос куда их вставлять, как обращаться к ихним процедурам и функциям и как вывести полученый результат для дальнейшего использования в стандартной палитре компонент - кнопки, панели, редакторы, комбобоксы и другие элементы пользовательского интерфейса. Примеров очень мало и все они "задуренные" для начинающих. Ну, а теперь ближе к делу.
Чтобы облегчить процесс отладки программ и протоколов, для многих занимающихся программированием портов, я и разместил программу "PortControl V3+"- freeware в иртернете. Однако для большинства интересующихся или занимающихся портами этого оказалось не достаточно и мне, естественно, стали приходить письма с просьбой помочь разобраться в этом вопросе - на каком языке программирования лучше писать, как это сложно, где найти примеры и очень много вопросов КАК ЭТО СДЕЛАТЬ самостоятельно. Для того, чтобы решить все вышеперечисленные трудности, мною, специально для начинающих и был разработан этот проект, с помощью которого Вы, если немного знаете Делфи, конечно, сможете написать программу, например включения-выключения бытовых приборов всего за две-три минуты !
Принцип действия прост - Вам ничего не надо устанавливать, инсталировать (компоненты), подключать какие-либо модули, встраивать ввода-вывода процедуры и функции. Специально для этого я приготовил шаблон с уже подключенным модулем ввода- вывода общеизвестного ассемблеровского кода, который функционирует в теле программы и ничем себя не выдаёт - Вы скачиваете шаблон - это обычный Делфи-проект, запускаете двойным щелчком
файл проэкта (Project1.dpr) и видите пустую форму, готовую для установки кнопок и прочего как обычно. В редакторе открывается абсолютно стандартный модуль (Unit1.pas) - Unit. Всё, больше Вам ничего не надо делать, всё готово для написания Вашей Windows программы, Вам требуються только начальные, самые простейшие знания Дельфи, для работы со стандартной палитрой инструментов - кнопки, Edit, RadioButton и др.
И так, если Вы умеете бросить на форму кнопку, вставить в нее код, нажать F9 для компиляции программы, тогда приступим.
Так как Вы электронщик (радиолюбитель) со стажем и решили окончательно и бесповоротно приобщится к современным технологиям изготовления своих конструкций, тогда оставляйте себе паяльник, отвёртки и др. радиомонтажные инструменты, а напильник, зубило, молоток и дрель можете подарить теперь уже технически отсталому, своему товарищу, или, открыв форточку, выбросить их в палисадник - Вы будете работать на клавиатуре, на радость домочадцам и соседей, измученных противным скрежетом напильника по ночам, когда Вы пропиливаете в стальном корпусе своего прибора дырки, чтобы поставить туда пару десятков тумблеров (:- .
----------------------------------- Необходимые инструменты: ------------------------------------------------
1. Скачайте документацию к LPT порту и изучите ёё - где входные биты - порт 889 (тоже что и $379) Pin 10-11-12-13-15, где выходы данных- 888 (тоже что и $378) Pin 2-9, 890 (тоже что и $37A) Pin 1-14-16-17.
2. Скачайте отладчик - программу " PortControl V3+ ", чтобы потом наглядно видеть что Вы там напрограммировали (:- без необходимости подключения светодиодов и др. к LPT порту.
3. Скачайте готовый шаблон- заготовку для Вашей будущей программы - Shablon.zip
4. Скачайте готовый пример (исходник + exe файл) - Primer1.zip , созданный на основе данного шаблона.
<
|
Внимание: всё только для Windows 95/98/ME !!!
Скачать исходник и шаблон Вы можете прямо сейчас, а детальное описание как это всё работает будет готово на днях. А пока проделайте пару-тройку несложных операций.
- Запустите файл
Project1.dpr из каталога шаблона.
Бросте на форму кнопку, щёлкните по ней двойным щелчком и вставте следующий код:
procedure TForm1.Button1Click(Sender: TObject);
begin
PortWriteByte (888,1); //---- В порт 888 записуем число 1 – не правда ли очень просто!
end;
Разместите ещё несколько кнопок и попробуйте, а результат смотрите в программе “PortControl V3+”
procedure TForm1.Button2Click(Sender: TObject);
begin
PortWriteByte ($378,$4); //---- В порт 888 записуем число 4
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
PortWriteByte (890,10); //---- В порт 888 записуем число 10
end;
Читать с порта будет посложнее, тем не менее, не пугайтесь, добавте на форму Edit, для того чтобы вывести прочитанный результат и, конечно, кнопку :
procedure TForm1.Button4Click(Sender: TObject);
Var
b : byte; //-- объявляем переменную которая хранит прочитанный результат, тип - byte
begin
b :=( PortReadByte(888) ) ; //----читаем с 888 порта, результат присваиваем b
Edit1.text := IntToStr(b); //--- преобразуем прочитанное число в строковый тип
end; //---и выводим в Edit1
-------------------------------------------- 15.04.04------------------------------------
|