Lazarus 3.2 (2024.02.28.)
Letöltés

  • Oldal:
  • 1

TÉMA:

inpout32.dll win10 alatt nem megy... van-e alternatíva 2023 dec. 23 21:44 #2666

  • laza_andras
  • laza_andras profilkép
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 27
  • Köszönetek: 0
Végigolvastam ezt a bejegyzést ,engem is érdekelne  robotech  megoldása ,ha estleg lehetne látni a működő programkódot  nagyon hálás lennék 

inpout32.dll win10 alatt nem megy... van-e alternatíva 2016 aug. 01 18:10 #2070

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
A "Projekt / Projekt beállításai" menüpontra kattintva, a megjelenő ablakban a "Projekt beállításai / Alkalmazás" ágat kiválasztva beállíthatod a működéshez szükséges "Futási szint"-et.
Ha "Adminisztrátor"-t adsz meg akkor a windows automatikusan kéri majd a "adminisztrátor" jelszavát az alkalmazás indításakor... (legalábbis elvileg)
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

inpout32.dll win10 alatt nem megy... van-e alternatíva 2016 aug. 01 17:54 #2069

  • robotech
  • robotech profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 28
  • Köszönetek: 0
Szerintem az emberek többsége azért tesz így ahogy én is mert ugyan lenne érdeklődése elmélyülten foglalkozni a programozással, és megismerni a lehetőségeket, de ideje híján átvált teljesítmény orientált üzemmódba, és gyors megoldást keres... nincs ideje elmélyülni (tudom hogy gyenge kifogás, de pl. szombat-vasárnap amikor otthon vagyok én sem akarok a kisfiamnak és a feleségemnek háttal ülni egész délután a monitort bámulva... a munkahelyen meg dolgozni kell (nem főállású programozó vagyok, egyéb műszaki feladataim vannak).

Köszönöm segítséged a DLL-ekkel kapcsolatban, szerencsére jelen esetben a felvázolt problémára lett megoldás, így nem kell kipróbálnom az IO.DLL-t:

Ilyenkor újra és újra bele tudok szerelmesedni a Lazarusba: Kifogástalanúl működik a port írás olvasás win10 alatt is!
Csak: a lefordított exe-t úgy kell futtatni , hogy jobb gomb => run as administrator... még akkor is, ha az ember egyébként a saját gépén adminsztrátor! :-D

Ígérem, hogy ha lessz szabadidőm az általad írtak alapján megpróbálom IO.DLL- el is , a továbbfejlődésem érdekében is!

Üdv!

inpout32.dll win10 alatt nem megy... van-e alternatíva 2016 aug. 01 08:11 #2068

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
A DLL hívásoknak két alapvető módja van: az egyik amikor közvetlenül használod az eljáráslistát (ezt a módszert írtam meg, de ha nem található a DLL a programot nem engedi elindulni az operációs rendszer), a másik amikor dinamikusan töltöd be a DLL eljárásainak címeit (ez esetben ha nem található a DLL vagy az egyik eljárás nincs benne akkor hiba/kivétel keletkezik, amit kezelhet az alkalmazásod).
Ez utóbbi az, amit úgy láthatsz, hogy "még egyéb deklarációkat (vagy miket is ) tesznek"...

Ha mindenképpen OOP-vel akarod megoldani a portkezelést akkor jó szolgálatot tehet a Ararat Synapse csomag SynaSer unit-ja. Ezzel a módszerrel az eseménykezelést is meg lehet oldani. A használatáról egy példa már régebb óta megtalálható a letöltőközpontban ...

Csak gondolkodom:
Vajon miért akar mindenki (nem csak Te) "vizuális komponenst" mindenhez, miközben az adott műveleteknek közvetlenül semmi megjelenítenivalója nincs és az így létrehozott kód is csak az alkalmazás méretét növeli?
Tudom, hogy látszólag egyszerűbb a programozás vele, de az biztos, hogy a műveletek tényleges működését nem fogja megérteni aki az ilyen megoldásokat erőlteti...
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64
Megköszönték: robotech

inpout32.dll win10 alatt nem megy... van-e alternatíva 2016 júl. 31 20:08 #2067

  • robotech
  • robotech profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 28
  • Köszönetek: 0
tényleg csak onnan veszem, amit a freepascal oldalon írtak az inpout32.dll használatához, látható, hogy még egyéb deklarációkat (vagy miket is ) tesznek meg a dll-el kapcsolatban, hogy működjön...
Még sosem használtam külső DLL-t, komponens telepíteni tudok , komponenseket szoktam csak eddig használni...

Vagy esetleg tudnál ajánlani egy jó vizuális komponenst, ami felmegy Lazarus alá (van LPK fileja)?

inpout32.dll win10 alatt nem megy... van-e alternatíva 2016 júl. 31 17:31 #2066

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Honnan veszed hogy a Lazarus-ban nem használhatsz egyszerű függvényhívásokat?
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

inpout32.dll win10 alatt nem megy... van-e alternatíva 2016 júl. 31 15:29 #2065

  • robotech
  • robotech profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 28
  • Köszönetek: 0
Üdv !

Egy annyi érdekesség van, hogy egyik kollégám mondta, hogy ő C++ - t használva hibátlanúl működteti az inpout32.dll -t használó programját....
Lehet akkor a Lazarusnak van nehézsége nem is a librarynak? 1.2.0 Lazarust használok, mert 1.6-ra nem ment fel egy fontos komponensem (Cport) , vajon érdemes lehet megpróbálni 1.6.0.-val is? vagy nem sok esély van rá hogy műkd,üdik?



Egyébként nem próbáltam az IO.dll-t, de az a félelmem, hogy nem ennyire egyszerű, erre csakis az inpout32.dll használata közötti különbségek miatt következtetek:

Lazaarusban pl: form.create-nél is vannak teendők, így:

"
uses
....dynlibs...

type
TMyForm = class(TForm)
TInp32 = function(Address: SmallInt): SmallInt; stdcall;
TOut32 = procedure(Address: SmallInt; Data: SmallInt); stdcall;
.........
private
{ private declarations }
Inpout32: THandle;
Inp32: TInp32;
Out32: TOut32;
.........
implementation
.........
procedure TMyForm.FormCreate(Sender: TObject);
begin
{$IFDEF WIN32}
Inpout32 := LoadLibrary('inpout32.dll');
if (Inpout32 <> 0) then
begin
// needs overtyping, plain Delphi's @Inp32 = GetProc... leads to compile errors
Inp32 := TInp32(GetProcAddress(Inpout32, 'Inp32'));
if (@Inp32 = nil) then Caption := 'Error';
Out32 := TOut32(GetProcAddress(Inpout32, 'Out32'));
if (@Out32 = nil) then Caption := 'Error';
end
else Caption := 'Error';
{$ENDIF}
end.
"

amíg Delphi esetén valóban lényegesen egyszerűbb az inicializálás, csak a függvényt kell megadni:

"
function Inp32(wAddr:word):byte; stdcall; external 'inpout32.dll';
"

Ezért félek, hogy nem fogom tudni megcsinálni.... vagy talán a {$MODE DELPHI} direktíva valóban megoldja minden gondomat? :-)

inpout32.dll win10 alatt nem megy... van-e alternatíva 2016 júl. 31 14:49 #2064

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Nagyjából így kell kinéznie az IO.DLL hívásaihoz készítendő pascal unit-nak:
{$MODE DELPHI}
 
unit IODLL;
 
interface
 
procedure PortOut(Port : Word; Data : Byte);
procedure PortWordOut(Port : Word; Data : Word);
procedure PortDWordOut(Port : Word; Data : DWord);
function PortIn(Port : Word) : Byte;
function PortWordIn(Port : Word) : Word;
function PortDWordIn(Port : Word) : DWord;
procedure SetPortBit(Port : Word; Bit : Byte);
procedure ClrPortBit(Port : Word; Bit : Byte);
procedure NotPortBit(Port : Word; Bit : Byte);
function GetPortBit(Port : Word; Bit : Byte) : WordBool;
function RightPortShift(Port : Word; Val : WordBool) : WordBool;
function LeftPortShift(Port : Word; Val : WordBool) : WordBool; 
function IsDriverInstalled : Boolean;
 
implementation
 
procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';
procedure PortWordOut(Port : Word; Data : Word); stdcall; external 'io.dll';
procedure PortDWordOut(Port : Word; Data : DWord); stdcall; external 'io.dll';
function PortIn(Port : Word) : Byte; stdcall; external 'io.dll';
function PortWordIn(Port : Word) : Word; stdcall; external 'io.dll';
function PortDWordIn(Port : Word) : DWord; stdcall; external 'io.dll';
procedure SetPortBit(Port : Word; Bit : Byte); stdcall; external 'io.dll';
procedure ClrPortBit(Port : Word; Bit : Byte); stdcall; external 'io.dll';
procedure NotPortBit(Port : Word; Bit : Byte); stdcall; external 'io.dll';
function GetPortBit(Port : Word; Bit : Byte) : WordBool; stdcall; external 'io.dll';
function RightPortShift(Port : Word; Val : WordBool) : WordBool; stdcall; external 'io.dll';
function LeftPortShift(Port : Word; Val : WordBool) : WordBool;  stdcall; external 'io.dll';
function IsDriverInstalled : Boolean; stdcall; external 'io.dll';
 
end.
Nem teszteltem, mert nincs io.dll a gépemen ;)
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

inpout32.dll win10 alatt nem megy... van-e alternatíva 2016 júl. 30 18:17 #2063

  • robotech
  • robotech profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 28
  • Köszönetek: 0
Üdv!

A Lazarus honlapján található szösszenet tutorial alapján ([url=http://http://wiki.freepascal.org/Hardware_Access]wiki.freepascal.org/Hardware_Access[/url]) készítettem egy szösszenet programot PORT-ba iráshoz, és olvasáshoz...

Letöltöttem továbbá (mert lusta vagyok multiméterrel a gép mogott méregetni (parallel port)) egy parallel port monitor programot is, amivel látható a bekövetkezett változás a porton.
A teszt kedvéért 378 parallel portot vettem szemügyre, és nagy bánatomra a win10-es oprendszeremen nem is müködött a program. újrabootoltam winxp -re , ahol kifogástalanúl megy a dolog... azonban sajnos a programot majd win10 alatt kellene használni.

Lenne valami ötlet win10 alá mivel lenne érdemes próbálkozni, ami legalább úgy van dokumentálva mint a inpout32.dll?
(mondom ezt azért, mert találtam a neten pl: io.dll-t, van dokumentálva, de lazarusról nem ejtenek szót, és a delphi példát meg csak nem lehet olyan egyszerűen betenni lazarusba (dll file használat), kicsit jobban kéne értenem a lazarushoz, hogy ezt meg tudjam tenni www.geekhideout.com/iodll.shtml ).

köszönöm előre is a segítséget!

  • Oldal:
  • 1