Zdroj: http://prochazka.clanweb.eu/index.php?a=programy/ovladacportu • Vydáno: 12.1.2008 17:11 • Autor: hacesoft
Balík knihoven napsaných ve Visual Basicu 6 a Cecku pro komunikaci mezi Vaším programem a LPT portem pod WinNT systémy (Win2000 a WinXP).
Pokud se stane že program má problémy s přístupem na LPT port počítače, nebo neočekávané ukončil činnost, stáhnete si nejnovější verzi knihovna.dll a adresaportu.dll.
z: www.prochazka.zde.cz
Po stáhnutí knihoven na počítač vyhledejte místo uložení programu a nakopírujte nejnovější verze. Není třeba restartovat počítač
Pomocí této knihovny můžete ve Visual Basicu a Céčku pracovat s LPT porty pod systémy Win2000 a WinXP. V Biosu nastavte LPT port na ECP + EPP. Další nastavení jako DMA a adresa portu, muže bit libovolná.
UPDATE: Verze: 1.9.1202.2006 knihovna.dll ze dne 14.2.2006.
******************************************************************************************
UPDATE: Verze: 5.3.531710 knihovna.dll ze dne 5.3.2005.
******************************************************************************************
UPDATE: Verze: 25.12.2041.4 knihovna.dll ze dne 25.12.2004.
******************************************************************************************
OPRAVY: Verze: 24.7.1855.4
******************************************************************************************
UPDATE: Verze: 1.5.08.11
******************************************************************************************
OPRAVY: Verze: 1.4.21.6
******************************************************************************************
OPRAVY: Verze: 1.3.21.4
******************************************************************************************
OPRAVY: Verze: 1.2.12.4
******************************************************************************************
OPRAVY: Verze: 1.1.60530.0
******************************************************************************************
----------------------------------------------------------------------------------------------------------------
Tento program, knihovna AdresaPortu.dll a knihovna.dll můžete používat neomezeně pro NEKOMERČNÍ účely.
POZOR: Důležitá poznámka: Všechny tři soubory (Knihovna.dll, AdresaPortu.dll a Giveio.sys) MUSÍ být ve stejném adresáři.
Ještě jedna poznámka: Ke knihovně KNIHOVNA.DLL musíte použít pouze knihovnu AdresaPortu.dll tu, která se nachází v tomto archívu. Jiná verze, nebude spolupracovat.
Současná verze KNIHOVNA.DLL je: 5.3.531710
Současná verze AdresaPortu je: 1.2.0.1306
Funkce Error: vrátí podrobnější popis, proč určitá funkce selhala:
Funkce Cekat : Přesná čekací rutinka pro krátké časy. Co je ten krátký čas? - Doba po kterou procesor není vytížen na 100%. Například: 5000 ms je už velmi dlouhá doba, 100 ms = 0.1 s, je asi maximální rozumný čas pro čekání pomoci této funkce. Tuto funkci není dobré používat pro žádoucí zpoždění programu, pokud momentálně nepracujeme s paralelním portem. Vstupní parametr: doba čekání v milisekundách. Návratová hodnota: skutečná doba čekání v milisekundách. Pro přesné zjištění, jak dlouho se čekalo je třeba připočíst čas, který je zapotřebí pro zavolání a návrat z funkce Cekat. Tyto dvě hodnoty funkce není schopna zjistit. Je potřeba je vypočítat pomoci matematického vzorce, kde bude zohledněna rychlost procesoru. Pomocí předem zjištěného koeficientu je potřeba upravovat výsledek podle aktuální rychlosti procesoru. Koeficient je hodnota nebo počet instrukci které slouží pro zavolání funkce Cekat. Počet instrukcí se dá zjistit v assembleru, proto doporučuji si stanovit nějaký obecný koeficient. Ale zase výsledek bude přibližný, bude přesnější než když nebudete nic přičítat...
Funkce GET_DMA_PORT : Zjistí hodnotu DMA portu, na který jste se předtím dotazoval funkcí OpenPort. Není vyžadován žádní vstupní parametr. Pokud návratová hodnota je -1 tak funkce selhala nebo se jedná o port typu SPP nebo EPP pro které není k dispozici DMA.
Funkce GET_IRQ_PORT : Zjistí hodnotu IRQ portu, na který jste se předtím dotazoval funkcí OpenPort. Není vyžadován žádní vstupní parametr. Když funkce vrátí hodnotu -1, tak se nezdařila. Pro jakýkoliv typ portu je vždy k dispozici IRQ.
Funkce GET_TYPE_PORT : Zjistí typ portu. Pokud je návratová hodnota 2, jedna se o port SPP nebo EPP, když funkce vrátí hodnotu 4 potom je port typu ECP a jeho různé modifikace. Návratová hodnota -1 říká, že funkce selhala.
Funkce Chyba : Vrátí název chyby, která je reprezentována číslem chyby API funkce GetLastError(), v jazykové mutaci Windows (když máte MS Windows v češtině, tak chyba je také v češtině). Nevrací žádnou hodnotu. Vstupní parametr je pouze text, který bude zobrazen v titulku chyby. Toho lze využít při chybových hláškách, kde do titulku zadáte název aplikace nebo cokoliv co reprezentuje pravě vzniklý problém. Muže se také jednat o popis kde chyba vznikla, a podobně.
Funkce Dll_Register_Server : Zaregistruje ActiveX knihovnu do operačního systému. Parametr: Název registrované knihovny. Registrovaná knihovna musí bít ve stejném adresáři jako KNIHOVNA.DLL. Návratová hodnota: 0 znamená, že registrace proběhla OK. Hodnota -1, nepodařilo se zaregistrovat.
Funkce Dll_UnRegister_Server : Odhlásí ActiveX knihovnu z operačního systému. Parametr: Název registrované knihovny. Registrovaná knihovna musí bít ve stejném adresáři jako KNIHOVNA.DLL. Návratová hodnota: 0 znamená, že registrace proběhla OK. Hodnota -1, nepodařilo se zaregistrovat.
Funkce UnLock_ : Nainstaluje knihovnu AdresaPortu.dll (jedna se o knihovnu napsanou ActiveX technologii). Nainstaluje ovladač Giveio.sys a spustí ho. Použit před jakoukoliv komunikací paralelním portem. Návratová hodnota je nula, když funkce uspěla. Pokud je návratová hodnota jedna restartujte PC, nebo manuálně odstraňte službu giveio a znovu restartujte počítač. Potom můžete spustit program využívající služeb knihovny knihovna.dll.
Funkce Lock_ : Odinstaluje ze systému knihovnu AdresaPoru.dll. Zastaví ovladač Giveio.sys a odstraní ho ze systému, uklidí po sobě v registrech. Tuto funkci proveďte, když už nebudete potřebovat pracovat s paralelním portem.
Funkce Zapis : Zapíše byte (hodnotu v rozmezí 0 až 255) na určenou adresu. Parametry: Port : Kam zapsat. Data : Co zapsat. Vždy vrátí hodnotu, kam zapsal požadovaná data.
Funkce Cteni : Přečte hodnotu byte z určené adresy. Parametr: Port: Odkud číst. Vždy vrátí hodnotu, kterou přečetl z požadované adresy.
Funkce Zapis_Data : Zapíše byte na Adresu+Base (adresu kterou dodá knihovna AdresaPortu.dll). Base =0. Pokud požadovaný LPT port není otevřen (dotaz na LPT port), funkce vrátí hodnotu -1. Jinak vrátí adresu, na kterou požadovanou hodnotu zapsala. Parametr: Data: jakou hodnotu zapsat.
Funkce Zapis_Status : Zapíše byte na Adresu+Base (adresu kterou dodá knihovna AdresaPortu.dll). Base =1. Pokud požadovaný LPT port není otevřen (dotaz na LPT port), funkce vrátí hodnotu -1. Jinak vrátí adresu, na kterou požadovanou hodnotu zapsala. Parametr: Data: jakou hodnotu zapsat.
Funkce Zapis_Control : Zapíše byte na Adresu+Base (adresu kterou dodá knihovna AdresaPortu.dll). Base =2. Pokud požadovaný LPT port není otevřen (dotaz na LPT port), funkce vrátí hodnotu -1. Jinak vrátí adresu, na kterou požadovanou hodnotu zapsala. Parametr: Data: jakou hodnotu zapsat.
Funkce Ctení_Data : Přečte hodnotu byte z Adresy+Base (adresu kterou dodá knihovna AdresaPortu.dll). Base =0. Pokud požadovaný LPT port není otevřen(dotaz na LPT port), funkce vrátí hodnotu -1. Jinak vrátí hodnotu, kterou přečetla.
Funkce Ctení_Status : Přečte hodnotu byte z Adresy+Base (adresu kterou dodá knihovna AdresaPortu.dll). Base =1. Pokud požadovaný LPT port není otevřen(dotaz na LPT port), funkce vrátí hodnotu -1. Jinak vrátí hodnotu, kterou přečetla.
Funkce Ctení_Control : Přečte hodnotu byte z Adresy+Base (adresu kterou dodá knihovna AdresaPortu.dll). Base =2. Pokud požadovaný LPT port není otevřen(dotaz na LPT port), funkce vrátí hodnotu -1. Jinak vrátí hodnotu, kterou přečetla.
Funkce OpenPort : Otevře LPT port (Dotaz na LPT port). Tato funkce se volá z knihovny KNIHOVNA.DLL a ta pak volá knihovnu AdresaPortu.dll.
Vstupní parametry: | Název Portu: | Je to řetězec obsahující název portu. |
Rozsah: | Uplatňuje se jen při hledání adresy LPT portu. hodnota je 0 nebo 1. Nastavujte vždy hodnotu 0. |
Tuto knihovnu si volá knihovna KNIHOVNA.DLL sama podle potřeby.
V případe že chcete použít služby knihovny AdresaPortu.dll sami, nebo Vás zajímá její funkce, čtete dál.
Tato knihovna zjistí adresu LPT či COM portu (pouze fyzické porty, ne virtuální) a k tomu ještě přidá Typ Portu, DMA a IRQ.
Poslední tři funkce jsou k dispozici jak z knihovny AdresaPortu.dll tak i knihovna.dll. Takže je jedno, které funkce použijete. Ale volat API funkce z knihovna.dll
je podstatně jednoduší než něco vydolovat a ActiveX (AdresaPortu.dll - Knihovna je napsaná ve VB6).
Vstupní parametry: | Název Portu: | Je to řetězec obsahující název portu. Přípustné názvy: | LPT1, LPT2, LPT3 a LPT4 COM1, COM2, COM3 a COM4 Názvy musí být velkýma písmeny. |
Rozsah: | Uplatňuje se jen při hledání adresy LPT portu. hodnota je 0 nebo 1. Nastavujte vždy hodnotu 0. |
Funkce vrátí hodnotu požadovaného portu. Nebo hodnotu -1 pokud port NENALEZEN.
Při dotazu na paralelní port (LPT1, LPT2, LPT3 a LPT4) máte možnost pracovat z funkcemi:
Místo toho, abyste používali například: Zapis($378,100) : Zapíše na LPT port hodnotu 100. Poznámka: Hodnota $378 je základní adresa LPT portu, nastavena v BOISu. Otevřete, dáte dotaz na LPT port, komunikační port pomocí funkce OpenPort z knihovny KNIHOVNA.DLL. Z návratové adresy zjistíte, zda port existuje, pokud vrácená hodnota není -1, tak paralelní port je k dispozici a můžete pracovat s funkcemi:
Např. Zapis_Data (100). Zapíše hodnotu 100 do registru paralelního portu Data LPT. Pokud dáte dotaz na Adresu COM1 portu (předtím jste se dotazoval na LPT1 port), i nadále pracujete s portem LPT1. Pokud ale dáte dotaz na LPT2, tak už pracujete s portem LPT2. To za předpokladu že funkce OpenPort nevrátí hodnotu -1. Pokud se vrátí hodnota -1, tak i nadále pracujete s portem LPT1. Celé kouzlo je že nepotřebujete znát adresu požadovaného LPT, to si dokáže knihovny zjistit samy. Pouze jednou si otevřete paralelní port a posíláte/čtete data z požadovaných registrů LPT.
Dále je třeba k projektu v C nebo C++ přilinkovat tato knihovna.lib soubor.
V archívu: AdresaPortu.zip je Knihovna AdresaPortu.dll s projektem napsaným ve Visual Basic 6 který ukazuje použiti této knihovny.
V archívu: OvladacPortu.zip je Knihovna.dll a AdresaPortu.dll s projektem napsaným ve Visual Basic 6 který ukazuje použiti těchto knihoven.
V době vzniku konstrukcí jsem paralelně pracoval i na AdresaPortu.dll a Knihovna.dll a tak můžete prostudovat jejích použití v různých konstrukcích na tomto webu. Verze knihoven AdresaPortu.dll a Knihovna.dll jsou takové, které jsem měl v té době k dispozici. Pouze na této stránce jsou zmiňované knihovny nejaktuálnější.
V konstrukci Lcd ovladac201.zip ( Komplexní řešení připojení LCD zobrazovače s radičem HD44780 k LPT portu ) můžete prostudovat způsob použití knihovny: Knihovna.DLL, nebo Programátor pamětí EEPROM 93LC56, případně Monitorování paralelního portu pod systémy Win2000 a WinXP. a nebo jakýkoliv jiný program z tohoto webu.
Ujednání:Tento archív můžete neomezeně šířit pouze kompletní!
Tento archív se nesmí za úplatu kopírovat a šířit.
Nesmí být použit v KOMERČNÍCH projektech bez souhlasu autora.
Pokud používáte tyto knihovny ve svém programu, už nemusíte přikládat kompletní archív ani
dokumentaci. Postačí, ze uvedete zdroj a odkaz na server www.prochazka.zde.cz těchto knihoven v dokumentaci o vašem programu nebo aboutu (O Aplikaci ...).
Děkuji, že používáte tyto produkty.
Autor ovladaču Giveio.SYS je:
Dale Roberts, Direct I/O and Windows NT
ftp://ftp.mfi.com/pub/windev/1995/may95.zip.