Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по WinIO. [D5, XP]


John_Korsh ©   (2008-04-14 16:09:00) 

Не даст ли кто конкретный пример работы с портами Lpt через WinIO, а то, там Help для Си, а InitializeWinIO у меня всё время False  возвращает.


John_Korsh   (2008-04-15 15:27:00) [1]

Работает с модулем IOEngine. (Если кому надо). WinIO так и не задышал.


John_Korsh   (2008-04-15 11:27:00) [2]

У меня приспособа со светодиодиками. Не горят. При использовании консольного варианта IOEngine - зажигаются.


MBo   (2008-04-15 09:53:00) [3]

>Чего не так сделал?
Не знаю, проверить не реальном девайсе нет возможности.
Однако у меня под XP инициализация проходит нормально, и после записи байта в 378 порт оттуда читается этот же байт. Не знаю, является ли это доказательством функционирования.


John_Korsh   (2008-04-14 17:10:00) [4]

Спасибо, но чего-то не работает.

В Create вызаваю IOStart.
По кнопке - IOWriteByte ($378, $55) - нет изменений в состоянии порта, хотя
LPT1 сидит на $378 IO.

Чего не так сделал?


MBo   (2008-04-14 16:16:00) [5]


unit WinIO;
interface
uses
 Windows;

function IOStart: BOOL; stdcall;
procedure IOStop; stdcall;

function IOReadByte(Port: Word): Byte;
function IOReadWord(Port: Word): Word;
function IOReadDWord(Port: Word): DWord;

procedure IOWriteByte(Port: Word; Value: Byte);
procedure IOWriteWord(Port: Word; Value: Word);
procedure IOWriteDWord(Port: Word; Value: DWord);

function InstallWinIoDriver(pPath: PChar; DL: Boolean = False): BOOL; stdcall;
function RemoveWinIoDriver: BOOL; stdcall;

implementation

function IOStart; external 'WINIO.DLL' name 'InitializeWinIo';
procedure IOStop; external 'WINIO.DLL' name 'ShutdownWinIo';

function GetPortVal(wPortAddr: Word; var pdwPortVal: DWord; bSize: BYTE):
 BOOL; stdcall; external 'WINIO.DLL';

function SetPortVal(wPortAddr: Word; dwPortVal: DWord; bSize: BYTE):
 BOOL; stdcall; external 'WINIO.DLL';

function InstallWinIoDriver; external 'WINIO.DLL';
function RemoveWinIoDriver; external 'WINIO.DLL';

function IOReadByte(Port: Word): Byte;
var
 d: DWord;
begin
 GetPortVal(Port, d, 1);
 Result := d;
end;

function IOReadWord(Port: Word): Word;
var
 d: DWord;
begin
 GetPortVal(Port, d, 2);
 Result := d;
end;

function IOReadDWord(Port: Word): DWord;
var
 d: DWord;
begin
 GetPortVal(Port, d, 4);
 Result := d;
end;

procedure IOWriteByte(Port: Word; Value: Byte);
begin
 SetPortVal(Port, Value, 1);
end;

procedure IOWriteWord(Port: Word; Value: Word);
begin
 SetPortVal(Port, Value, 2);
end;

procedure IOWriteDWord(Port: Word; Value: DWord);
begin
 SetPortVal(Port, Value, 4);
end;

end.


tesseract   (2008-04-14 16:13:00) [6]


> InitializeWinIO у меня всё время False  возвращает.


А заголовки точно нормально прописал ? Везде StdCall ?

Может и реально что-то не так у тебя - ты драйвер его правильно поставил ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо