§ 31. Постановка задачи. План реализации. Используемые технологии.
|
Дмитрий Иванов, Январь 2007
|
Статья впервые опубликованна 14 Мая 2012
|
|
Данный раздел статей посвящен рассмотрению практической реализации системы удаленного управления портами компьютера (на примере LPT порта) через сеть Internet. Звучит невероятно? Но это более чем реально сделать совоими собственными руками!
|
Система функционирует следующим образом: в сети размещается специальная Web-страница с помощью которой любой посетитель, зашедший на нее из любой точки мира сможет ввести в форму ввода число, характерезующее состояние линий регистра DATA LPT порта. По нажатии на кнопку формы, на серевер отсылается и сохраняется в базе данных введенное пользователем число с помощью серверного Web-приложения. Далее, на компьютере, подключенного к Internet, портами которого предполагается управлять, запускается приложение, которое переодически устанавливает связь с сервером, считывает текущие задачи на управление портом и выполняет их.

Очевидно, что на основе данного простого примера можно построить довольно сложные системы, например, двунаправленную систему управления датчиками через Internet, получение каких-либо измерений и отображение их на Web-ресурсах в реальном маштабе времени и т.д.
Как видно, программный комплкс состоит из трех частей:
- Web страница с формой ввода
- серверное Web приложение для сохранения данных, введенных пользователем
- программа для чтения данных с сервера и управления устройствами через порты
Давайте поподробнее поговорим о том как и на чем нужно писать каждую из составялющих этого комплекса.
Начнем с Web страницы. Здесь практически единственным выриантом является т.н. язык гипертекстовой разметрки - HTML. Это то, на чем построен любой сайт. Языком программирования его назвать трудно даже с натяжкой, поскольку он представляет из себя просто набор специальных "команд" (тэгов) которые не нужно ни компилировать ни транслировать. С помощью этих тэгов описывается внешний вид и содержание страницы, после чего этот файл сохраниется в формате *.html (*.htm). Писать можно хоть в блокноте. Потом этот файл обрабатыавается браузером (Internet Explorer, Opera) и в окне появляется сформированная страничка. Выполнение "операторв этого языка" возможно только на стороне клиента (пользователя).
Поясню поподробнее: когда Вы, например, набираете в браузере адрес www.mysite.ru/1.html будет происходить следующее: браузер посылает запрос на сервер (на котором находится этот сайт) что-то типа "здорово сервер, дай-ка мне страницу 1.html". Серевр проверяет что у него на жестком диске действительно есть такая страница. Обнаружив ее, он говорит браузеру "Ok, сейчас будет" и начинает пересылать к нам содержимое этого файла (набор тэгов). Браузер получив все это содержимое, начинает их (тэги) интерпритировать и строить в своем окне страницу. Как видно, на языке HTML можно написать то что будет происходить на компьютере пользователя (что он будет видеть) но нельзя, например, провести какие-либо дейсвия на сервере (например, создать файл). Для этого существуют другие технологии, а для решения задачи построения первой части комплекса HTML - как раз то что нужно.
Теперь поговорим о серверной части. Нам нужна программа, которая могла бы выполнять какие-либо действия не на стороне клиента а на стороне сервера (ведь введенные пользователем данные нам нужно сохранять именно там). Для решения таких задач существует большое число разнообразных языков и технологий. Например языки PHP, Perl, линейка решений от Microsoft: ASP и ASP.NET, технология CGI программирования на языке Си/C++ и даже такие экзотические вариатны как JSP (Java Server Pages) и язык Pyhton. Из всего этого разнообразия я настоятельно рекомендую язык PHP. Он очень прост в освоении, поддерживается самым распространенным сервером Apache, не требует каких-либо дополнительных инструментов при написании программ - можно хоть в блокноте писать и PHP программа готова. Еще одним интересным свойством PHP является то, что можно писать блоки кода прямо внутри обычной HTML страницы. При этом она приобретает спецефичные свойства, а именно тереят возможность быть запущенной на компьютере клиента без предварительной обработки сервером. (обязательно нужно сменить расширение файла с *.html на *.php). Поясню, как это будет работать. Например, Вы запрашиваете страницу www.mysite.ru/1.php, т.е. в файле 1.php могут содержатся записи как на языке HTML так и PHP. Серевер смотрит наличие этого файла, но сразу его клиенту не отсылает. Он замечает что расширения файла - *.php. Он берет этот файл и начинает исакать в нем команды PHP. Кагда находит, выполняет ее и двигается дальше, пока не пройдет весь файл. Результатом работы PHP кода могут быть новые строки на HTML, тогда они добавляются в содержимое формируемого файла для отправки клиенту. В результате, в составе файла не остается записей на PHP а только HTML код. Вот теперь он отсылается на машину к клиенту и его браузер показывает страницу, содержимое которой было сформировано сервером при выполнении PHP команд.
Что же касается программы для чтения данных с сервера и управления устройствами через порты - тут уж проблем особенных при решении нет. Это будет обычное Windows приложение, которое должно уметь считывать с сервера сохраненные там данные, например в виде обычного файла. Это мы сможем легко реализовать с помощью MFC в Microsoft Visual C++ 6.0. Относительно управления портами, тут особенно усложнять не будем и в качестве примера возьмем обычный LPT порт, ведь тут главное сам принцип получения данных с сервера а что с ними делать - это уже зависит от Ваших фантазии и возможностей. Программирование LPT порта, помоему, подробно расписано ранееi, поэтому останавливаться на этом моменте не будем.
Еще один важный момент, который я хотел бы упомянуть во введении, так это работа на этом самом PHP. Я думаю, у кого-нибудь сразу возник вопрос: что делать если
"тереят возможность быть запущенной на компьютере клиента без предварительной обработки сервером"
ведь у меня на компьютере нет сервера! Как я протестирую работоспособность данной системы? Вы будуте абсолютно правы, задав такой вопрос. В конце концов, после разработки данной системы, если Вы действительно захотите запутить ее в Internet - Вам придется воспользоваться услугами хостинга и разместить страницы на платном сервере. Тогда можно будет оттестировать работоспособность комплекса в "последней инстанции". Но во время разработки все же хочется видеть результат по ходу работы а не в самом конце. Поэтому любой Web-разработчик обязательно устанавливает у себя на компьютере локальный Web-сервер, который может обрабатывать PHP станицы. Мы тоже обязательно сделаем также и поставим этот загадочный "сервер" себе на машину. Это позволит нам без использования реального сервера в сети полноценно протестировать работу комплекса. Не переживайте, установка и работа с серевром очень проста и не требует каких-либо спецефических знаний.
© Дмитрий Иванов
Январь 2007
http://www.kernelchip.ru