Отправляет email-рассылки с помощью сервиса Sendsay

Dragon Team

  Все выпуски  

Dragon Team


Информационный Канал Subscribe.Ru


Dragon Team

Menu Bar:

Site Menu:

[ Home ]
[ Services ]
[ DT Soft ]
[ DT Programming ]
[ DT Art ]
[ Creative ]
[ Reviews ]
[ Humor ]
[ Links ]
[ FAQ ]
[ Рассылка ]

Team:

[ B. ]
[ VIRUS ]
[ Code Poet ]
[ noname ]
[ Tria(AAA) ]
[ Merfi ]
[ jocker ]

Greets & Respect:

[ DLC Team ]
[ Shanaka Dias ]
[ Snap//3dg ]
[ Horrific//VR-Team ]
[ X-Crew ]
[ DecroS ]

 

Intro:

У нас опять новости.
Новая рассылка и дискусионный лист!
Подписывайтесь. Форма - слева.

Информация о выпуске:

Вышел: 2004-06-19 16:04:36
Выпуск № 10
Размер: 23k
Возраст: 84 дней
Подписчиков: 10

Site News:

Новости сайта http://www.DragonTeam.nm.ru/

--
19.06.2004:

Site: сегодня прибил раздел FAQ. Всё равно в него никте не заходит и не пишет.
Site: уссердно привожу в порядок, фиксю глюки и меняю дизайн. Надеюсь, скоро я вылижу этот сайт и он будет приносить эстетическое удовольствие.
Site: сократил количество дат в news до трёх. Добваил ссылку all site news.
Reviews: новые разделы Music и Soft. И первая ссылка. Новое в разделах: games (1) books (1)
Subscribe: новая рассылка (Reviews. В ней будет появляться новое из соответсвующего раздела) и дискусионный лист (можем поговорить). Подписывайтесь. Форма слева.

Услуги:

Нам (как и всем) нужны деньги, и поэтому мы предлагаем свои услуги:

-изготовление программ на заказ: практически что угодно:сетевой кодинг, простые системные утилитки, базы данных и проги для их управления. Единственное, что никто из нас не может - программирование 3d графики. Но я уже учусь.

-веб-дизайн: статические и динамические сайты, посредничество с более опытными фирмами (у нас много друзей). Да и этот сайт - не всё, на что мы способны.

-промоушн сайтов: регистрация во всех возможных поисковиках, повышение ИЦ, оптимизация под поисковики и другое.

Если вас что-то заинтересовало, пишите по адресу DragonTeam@nm.ru.

Programming

Программирование LPT порта, теория, примеры программ и устройств, для работы с LPT портом.

Code Poet (Code-Poet@yandex.ru)

Программа для записи данных в порт (в data register).

Сейчас мы попробуем написать прогу, которая будет зажигать диоды в нашем устройстве. Прошу тебя заметить, что речь сейчас идёт только о контактах регистра данных (data register D0 – D7), чуть позже мы поговорим о записи и чтении из/в других/е регистров. Проги будем писать на Delphi 7 и Visual Basic 6. Код программ я попытался сделать предельно простым.

Для начала скачай себе библиотеку inpout32.dll. Хочу тебе сказать, что первая версия этой библиотеки распространялась с исходником (Листинг 1) но она не могла работать в Win NT, 2000, XP. Вторая версия (выпущенная автором специально для использования во всех версиях Windows) распространяется без исходника, о её создании ты можешь прочитать тут: http://www.logix4u.net/inpout32.htm . Мы будем использовать в своих программах вторую версию библиотеки, т.к. она может работать во всех версиях Windows (95, 98, Me, 2000. XP) (что-то я уже, как для детей всё объясняю :)). Но, для ознакомления с принципом работы библиотеки, ниже, я приведу исходник первой версии. Исходник, был написан на Delphi, точнее на built - in Delphi ассемблере.

Листинг 1.


{Source code for inpout32.dll.
Enables 32-bit Visual Basic programs to do direct port I/O
(Inp and Out) under Windows 95.
To be compiled with Borland's Delphi 2.0.}
library inpout32;
uses SysUtils;
procedure Out32(PortAddress:smallint;Value:smallint);stdcall;export;
var
   ByteValue:Byte;
begin
     ByteValue:=Byte(Value);
     asm
        push dx
        mov dx,PortAddress
        mov al, ByteValue
        out dx,al
        pop dx
     end;
end;

function Inp32(PortAddress:smallint):smallint;stdcall;export;
var
   ByteValue:byte;
begin
   asm
        push dx
        mov dx, PortAddress
        in al,dx
        mov ByteValue,al
        pop dx
    end;
    Inp32:=smallint(ByteValue) and $00FF;
end;
Exports
       Inp32,
       Out32;
begin
end.

Теперь давай напишем простенькие порограмки на Delphi и VB, которые будут использовать библиотеку inpout32.dll. Задача программ: 1) при запуске программы дать команду - всем диодам погаснуть (т.е. передать число 0); 2) при нажатии кнопки, вывести в порт число, записанное в поле (число записываем в поле в десятичной форме, надеюсь, ты это понял).

Для начала прога на VB6:


Option Explicit
'объявление библиотеки для работы с портом
Private Declare Sub Out Lib "inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Dim I As Integer

Private Sub Form_Load()
 'обнулить разряды D0 - D7
 Out &H378, 0
End Sub

Private Sub Command1_Click()
 'Записать в переменную число из поля
 I = Text1.Text
 'Записать это число в порт
 Out &H378, I
End Sub

 

Я думаю, программа предельно проста и в объяснении не нуждается. Хочу только сказать что "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer) – это процедура, взятая из inpout32.dll. ByVal PortAddress – это адрес порта (у нас это &H378), ByVal Value – это число, которое будет записано в порт.

Теперь, тоже самое на Delphi:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   procedure Out32(PortAddress:smallint;Value:smallint);stdcall;
   external 'inpout32.dll';


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // обнулить разряды D0 - D7
  Out32($378, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 // Записать в порт число из поля
 Out32($378, strToint(Edit1.text));
end;

end.

Здесь, как ты видишь, та же процедура Out32 и те же переменные PortAddress - адрес порта, и Value – число, которое будет записано в порт.

Для танкистов Out 32 (адрес порта, число ( Dec ) которое записываем в порт). Заметь что в VB адрес порта записывается как & H 378 а в Delphi как $378.

Не забудь поместить inpout32.dll в папку с исходником или в папку Винды, а то он работать не будет.

Итак, вот мы и научились посылать в ("в", а не "на") порт информацию. Пока что всё, это похоже только на лабораторную работаю по физике, типа "Мы научились определять то-то и делать то-то, только, как этим воспользоваться ещё не поняли." (с) непомнюкто.

Смотрите следующие статьи по этой теме.

Download

inpout32.dll + исходник (11.3Kb)
source - исходники к данной статье (2.63Kb)

Outro

Ну вот и всё на сегодня, спасибо всем, кто дочитал до конца.
Жду ваших пожеланий и предложений. DragonTeam@nm.ru
Рассылка выходит ~раз в неделю (по мере накопления необходимой для рассылки информации)

Ведущий рассылки: Русинов Владимир aka B. (mailto:vovanrusinov@rambler.ru)
Все права защищены. Копирование любой информации - только с разрешения автора или ведущего рассылки.
http://DragonTeam.nm.ru/


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное