Site: сегодня прибил раздел FAQ. Всё равно в него никте не заходит и не пишет. Site: уссердно привожу в порядок, фиксю глюки и меняю дизайн. Надеюсь, скоро я вылижу этот сайт и он будет приносить эстетическое удовольствие. Site: сократил количество дат в news до трёх. Добваил ссылку all site news. Reviews: новые разделы Music и Soft. И первая ссылка. Новое в разделах: games (1) books (1) Subscribe: новая рассылка (Reviews. В ней будет появляться новое из соответсвующего раздела) и дискусионный лист (можем поговорить). Подписывайтесь. Форма слева.
Услуги:
Нам (как и всем) нужны деньги, и поэтому мы предлагаем свои услуги:
-изготовление программ на заказ: практически что угодно:сетевой кодинг, простые системные утилитки, базы данных и проги для их управления. Единственное, что никто из нас не может - программирование 3d графики. Но я уже учусь.
-веб-дизайн: статические и динамические сайты, посредничество с более опытными фирмами (у нас много друзей). Да и этот сайт - не всё, на что мы способны.
-промоушн сайтов: регистрация во всех возможных поисковиках, повышение ИЦ, оптимизация под поисковики и другое.
Если вас что-то заинтересовало, пишите по адресу DragonTeam@nm.ru.
Programming
Программирование LPT порта, теория, примеры программ и устройств, для работы с LPT портом.
Программа для записи данных в порт (в 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 в папку с исходником или в папку Винды, а то он работать не будет.
Итак, вот мы и научились посылать в ("в", а не "на") порт информацию. Пока что всё, это похоже только на лабораторную работаю по физике, типа "Мы научились определять то-то и делать то-то, только, как этим воспользоваться ещё не поняли." (с) непомнюкто.
Ну вот и всё на сегодня, спасибо всем, кто дочитал до конца.
Жду ваших пожеланий и предложений. DragonTeam@nm.ru
Рассылка выходит ~раз в неделю (по мере накопления необходимой для рассылки информации)
Ведущий рассылки: Русинов Владимир aka B. (mailto:vovanrusinov@rambler.ru)
Все права защищены. Копирование любой информации - только с разрешения автора или ведущего рассылки.
http://DragonTeam.nm.ru/