Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.11;
Скачать: CL | DM;

Вниз

Доступ к портам под XP.   Найти похожие ветки 

 
John_Korsh ©   (2008-04-15 09:38) [0]

Не поможете ли разобраться с кодом - пытаюсь использовать IOEngine для вывода на Lpt порт.
Как грамотно вызвать функцию GetPortIoApi (с какими параметрами) из модуля IOEngine:

//-------------------------------------------------------------------

unit IoEngine;

interface

uses windows;

type
 MsrReg = record
   regEax, regEdx: LongWord;
 end;

 MsrPass = record
   regEsi, regEdi: LongWord;
 end;

 
 lpPortByteIn = function(port: Word; var val: Byte): Boolean; cdecl;
 lpPortWordIn = function(port: Word; var val: Word): Boolean; cdecl;
 lpPortDWordIn = function(port: Word; var val: LongWord): Boolean; cdecl;
 lpPortByteOut = function(port: Word; val: Byte): Boolean; cdecl;
 lpPortWordOut = function(port: Word; val: Word): Boolean; cdecl;
 lpPortDWordOut = function(port: Word; val: LongWord): Boolean; cdecl;

 ePortIo = record
   PortByteIn: lpPortByteIn;
   PortWordIn: lpPortWordIn;
   PortDWordIn: lpPortDWordIn;
   PortByteOut: lpPortByteOut;
   PortWordOut: lpPortWordOut;
   PortDWordOut: lpPortDWordOut;
 end;

 p_ePortIo = ^ePortIo;

 lpGetPortIoPointers = procedure(portIo: p_ePortIo); cdecl;

 function GetPortIoApi(var portIo: ePortIo): Boolean;

implementation

var
 ioEngineDll: LongWord;
 GetPortIoPointers: lpGetPortIoPointers;

function GetPortIoApi(var portIo: ePortIo): Boolean;
begin
 result := false;
 if (@GetPortIoPointers <> nil) then
 begin
   GetPortIoPointers(@portIo);
   result := true;
 end;

end;

//-------------------------------------------------------------------

Что мне подставлять в качестве параметра - код не совсем мне понятен, если мне надо только вывести байт на $378 порт или только считать оттуда?

GetPortIoAPI (?);


 
tesseract ©   (2008-04-15 10:06) [1]


>  ePortIo = record


По моему она всё таки packed.


 
John_Korsh ©   (2008-04-15 11:25) [2]

В скачанном из Инет исходнике - record.
Простите, а что насчёт параметров, как вызывать - то функцию?


 
tesseract ©   (2008-04-15 11:51) [3]


> , как вызывать - то функцию?


Гм. Прочитай-ка про указатели. А то действительно вопросы посыпяться как из ведра, чего не те данные приходят. А ты даже переменную, тут не определил.


 
John_Korsh ©   (2008-04-15 15:31) [4]

Отвечаю сам себе - может кому понадобится.
Организовать переменную
var
 portIo                                        : ePortIo;
(модуль IOEngine должен быть виден из этого модуля)

Для вывода в порт:

    if (GetPortIoApi(portIo)) then
     begin
      portIo.PortByteOut($378, $55);
     end;

ну и остальные функции, соответственно.



Страницы: 1 вся ветка

Текущий архив: 2008.05.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
2-1208242787
Zloy_Funtik
2008-04-15 10:59
2008.05.11
Сохр. данных нескольких мемо полей относительно одного параметра


6-1185968146
Тестер2
2007-08-01 15:35
2008.05.11
Sockets, MaxDataLen=8192


2-1207832097
Polar
2008-04-10 16:54
2008.05.11
Направление текста в QRLabel


6-1186349365
SWolf88
2007-08-06 01:29
2008.05.11
TTcpServer


15-1206945625
TUser
2008-03-31 10:40
2008.05.11
Чтение файлов