Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

8 БИТ И ВСЕ, ВСЕ, ВСЕ…   Найти похожие ветки 

 
Арсений   (2005-08-15 10:41) [0]

Уважаемые Мастера! Обращаюсь ко всем за помощью потому, что незнаю уже что и делать. Суть проблемы состоит в том, что нужно всего лишь считать 8 бит из регистра данных у параллельного  Centronic (LPT) порта. В Паскале это не представляется сложной задачей, если не брать в расчет то, что я совсем не имею опыта работы с железяками. Но, оказывается, в WinXP присутствует какая-то защита от такого рода самодеятельности. Нашел какой-то драйвер WINIO- просмотрел его хелп, немного порылся в examples,правда они только для VB и C++,но вроде все понял. Прописал все фукции…но почему-то работают только инициализация, закрытие, инсталляция и деинсталляция- остальные возвращают результат FALSE. А как раз эти то мне и нужны. Вот отрывок кода:

var
 Form1: TForm1;

implementation

function InitializeWinIo():boolean; external "WinIo.dll";
function ShutdownWinIo():boolean; external "WinIo.dll";
function InstallWinIoDriver(pszWiIoDriverPath:string;IsDemandLoaded:boolean):boolean; external "WinIo.dll";
function RemoveWinIoDriver():boolean; external "WinIo.dll";
function GetPortVal(wPortAddr:word;var pdwPortVal:dword;bSize:byte):boolean; external "WinIo.dll";
function SetPortVal(wPortAddr:word;dwPortVal:dword;bSize:byte):boolean; external "WinIo.dll";
function GetPhysLong(pbPhysAddr:integer;var pdwPhysVal:dword):boolean; external "WinIo.dll";
function SetPhysLong(pbPhysAddr:integer;dwPhysVal:dword):boolean; external "WinIo.dll";
function MapPhysToLin(pbPhysAddr:integer;dwPhysSize:dword;var pPhysicalMemoryHandle:THandle):longint; external "WinIo.dll";
function UnmapPhysicalMemory(PhysicalMemoryHandle:THandle;pbLinAddr:integer):boolean; external "WinIo.dll";
{$R *.dfm}

procedure TForm1.Button7Click(Sender: TObject);
var a:byte;
z,addr:integer;
buf:dword;
s,m:string;
begin
s:=ad.text;
if s="" then exit;
z:=strtointdef(s,0);
if Getportval(z,buf,1)=false then
showmessage("ERROR") {после этого сообщения вылазит дебаггер, пишет «Access violation at 0x00000000:Read of address 0x00000000, process stopped…»}
else
edit1.Text:=inttostr(buf);
end;
И это не все: GetPhysLong просто возвращает FALSE итд. Самое обидное то, что примеры работают, на Delphi примера нет.
Итак, подведу итоги вопроса:
Как считать 8 бит через LPT порт?
Или как правильно использовать драйвер WINIO?
Или где взять другой драйвер, который будет работать?(Если можно, то описать, как.)
Уверен, что среди вас найдутся мастера, которые смогут мне помочь.
Премного благодарен заранее.


 
tesseract ©   (2005-08-15 10:50) [1]

с WinIo пример использования поставляется.


 
Арсений   (2005-08-15 10:53) [2]

Да, но только для Си и Виз.Бейсика. По крайней мере у меня в архиве нет для Дельфи. Если у кого есть, пришлите на мыло piratesoft@ok.kz


 
arseny   (2005-08-15 11:11) [3]

И все-таки...


 
tesseract ©   (2005-08-15 13:27) [4]

Послал smport - там пример для delphi


 
NikNet ©   (2005-08-15 18:41) [5]

Удалено модератором


 
Арсений   (2005-08-17 19:14) [6]

Нашел таки рабочий драйвер TVicLPT классная вещь, но она шароварная. Поэтому просьба такая: если кто знает ссылку на крык или патч, скиньте мне на piratesoft@ok.kz пожалуйста. Только не оставляйте в форуме, иначе, боюсь, многоуважамый модератор ее сотрет. А может и нет, я не знаю. А вдруг г-н Модератор сам напишет ссылку?



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

Форум: "WinAPI";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.053 c
14-1127299293
leonidus
2005-09-21 14:41
2005.10.16
Генератор отчетов


6-1119994627
wp2
2005-06-29 01:37
2005.10.16
Реципиент (RCPT) не тот?


2-1126957033
AlexLines
2005-09-17 15:37
2005.10.16
Относительные пути и win98


14-1127297458
Danilka
2005-09-21 14:10
2005.10.16
Про муниципальные предприятия.


1-1127427995
sashok
2005-09-23 02:26
2005.10.16
Val(ReadOut.Text, op1, Code);





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский