Szeretné tudni, hogyan lehet ellenőrizni az LPT portot vindoutse x

Most úgy vélik, hogyan lehet használni ezt a vezető a gyakorlatban. A kezdéshez töltse le az archívum a vezető és a függvények könyvtára, dolgozni vele.

Ott találja magát ténylegesen xDRV.sys driver, megosztott könyvtár xDRV.dll, statikus könyvtár xDRV.lib, amely szükséges lehet összeállításakor a kérelmet egy statikus kapcsolat dll és a fejléc fájlt a leírás a funkciók segítségével lehet szabályozni a vezető. Nézzük ezeket ugyanazokat a funkciókat:

C ++: BOOL xDRV_OpenDriver ();
Delphi: funkció xDRV_OpenDriver (): logikai;
Pilóta xDRV.sys dinamikusan betölthető. Kiszámításának és inicializálni, és arra szolgál, ezt a funkciót. Ha a meghajtó betöltése sikeresen, akkor igazat ad vissza, egyébként hamis. Meg kell hívni, ha az elején a kérelmet. Amikor visszatért a hamis, próbálja újraindítani a számítógépet. Talán xDRV.sys már be van töltve a memóriába, és xDRV_StopDriver () függvényt, hogy biztonságosan megállítani. A vezető és a könyvtár kell ugyanabban a könyvtárban, mint a végrehajtható program.

C ++: void xDRV_StopDriver ();
Delphi: eljárás xDRV_StopDriver ();
Furcsának tűnhet, ez nagyon fontos. Meg kell mindig hívják végén a kérelmet. Ha ez nem teszi a sofőr a memóriában marad, és elfogják a megszakítás. Még rosszabb, a hiba akkor fordulhat elő, amikor megpróbálja újra letölteni.

C ++: void xDRV_Write (előjel nélküli rövid PortAdr, unsigned char PortValue);
Delphi: eljárás xDRV_Write (PortAdr: LongInt; PortValue: Byte);
Ez a funkció lehetővé teszi, hogy rögzítse az adatokat byte (PortValue), a kikötő (PortAdr). Például, hogy az összes adat LPT port nyilvántartásban meghatározott irányvonalak egy egységet szeretne nevezni a következő paraméterekkel: xDRV_Write (0x378, 255)

C ++: unsigned char xDRV_Read (előjel nélküli rövid PortAdr);
Delphi: függvény xDRV_Read (PortAdr: LongInt): byte;
E funkció, azt hiszem, a teljes világos. Olvas, és visszaadja az értéket a port (PortAdr).

FunctionName void (void * imya_peremnnoy);

Hogy végre magyarázni, hogyan kell dolgozni xDRV.sys felhívni a figyelmet három kész projekt teszt alkalmazás forráskódját az összes funkcióját ez a meghajtó. Ketten vannak írva a C \ C ++ Microsoft Visual C ++ 6.0 környezetben. Az első változat a WinAPI, a második - MFC. Végül hozzáadjuk a teszt projekt a Delphi (IDE: Borland Delphi 7). Kívánatos, hogy az alkalmazás nem fut, amíg nem olvassa el ezt a cikket végéig.

A hardver rész (vas)

Most a „vas”. Íme néhány spetseficheskie funkciókat, amelyek nélkül a megszakítás regestrirovat udastsya.Zaydete Start -> Beállítások -> Vezérlőpult -> Rendszer -> Hardver -> Eszközkezelő -> Portok (COM és LPT) -> Printer Port (LPT1) -> tulajdonságokat. A „Port Settings” Mindig a gomb „használatával minden megszakítást rendelt portot.”

Ezután a tesztet LPT port csatlakozó és egy must! állítsa be a 15-edik érintkező (bit 3 regiszter STATUS - ERROR) nullára, hogy áthidalja azt naprmer bármely föld csapok a port (18-25). Az ok egy ilyen tanfolyam alábbiakban ismertetjük.

Most az ígért magyarázata az ERROR sor. Ha kellett ezt a vonalat nulla nem lett volna ültetni, a program képes lesz kezelni csak egy megszakítás. Többszöri próbálkozás húzni ACK vonal jött semmi előnyét. A DATA és vezérlő kezdődik kaotikus pomigivaniya hogy tart körülbelül egy percig. Ennek az az oka egész evlyaetsya natív port meghajtó, amely része az operációs rendszer. Azt valamint xDRV.sys jelet kap megszakítás nélkül fizet a figyelmet, hogy a második arcátlan fojtogatja bátyja - xDRV.sys (a megszakítás feldolgozás területén). Pomigivaniya a kikötőben - OS illesztőprogram próbálják elérni, hogy a „nyomtató”, amely azt hiszi, van kötve, a kikötő és küldött jelet megszakítani. mert nincs nyomtató nem, akkor haszontalan, és körülbelül egy perc múlva a natív vezető úgy dönt, hogy a nyomtató „halott”, és nem több az ő nem figyel. Tehát most, ha bezárja az alkalmazást (biztos, hogy alkalmazni függvényében xDRV_StopDriver ()), és kezdje újra, nincs probléma nem lesz lehetséges, hogy rögzítse az összes megszakítást - Microsoft # 96ovsky sofőr nem zavarja.

De ahhoz, hogy ne várjon egy percig, és ne indítsa újra az alkalmazást, akkor azonnal létrehoz egy sor hiba nulla - ez azt jelentené, hogy a „pszeudo-nyomtató” hibás, és nem kell figyelni, hogy a megszakítások. Natív meghajtó és kapott (szemben a xDRV.sys), és több a munka xDRV.sys mászik.

Persze, elveszítjük az egyik sor ellenőrzési és adatátvitel, de azt hiszem, ezt a veszteséget kompenzálja képes kezelni megszakítások.

Kapcsolódó cikkek