Domov / Online služba / Ovládač pre lpt v systéme Windows 7. Porty (COM a LPT). Inštalácia ovládača pre prácu s portom LPT

Ovládač pre lpt v systéme Windows 7. Porty (COM a LPT). Inštalácia ovládača pre prácu s portom LPT

Každý, kto sa pokúša pripojiť akékoľvek zariadenia k portu LPT, čelí tomuto problému. Hneď ako poviete programu „použite LPT“, zobrazí sa vám chyba – je zobrazená na snímke obrazovky vpravo. Skúsme to teda zistiť a opraviť.

Narazil som na to pri pridávaní riadiacej dosky s 1-LPT a 2-COM portami. Jednoznačne bol potrebný tento - prepojovací Band -dekodér RU -005A. O tom bude reč v nasledujúcom článku. Medzitým by som chcel získať korektne fungujúci LPT -port vo Win -Test pod Windows -7 (64 bit).

Moderné počítače už nejaký čas nemajú paralelný port. Prípadne do nej môžete vložiť dodatočný ovládač. Nebojte sa tohto slova, nie je v ňom nič strašné. Dôvod, prečo sa vyskytuje vyššie uvedená chyba, je jednoduchý – ovládač a knižnica DriverLINX (DLPortIO.sys + DLPortIO.dll) neexistujú pre verzie Windows pod architektúrou x86-64 (AMD64, Intel64). Vývojár Scientific Software Tools Inc prestal podporovať ovládač, preniesol ho na inú spoločnosť a zastavili sa až pri 32-bitovej verzii. Microsoft pokrčí plecami a pošle ho výrobcovi. Napriek tomu existuje dobrý balík - je to InpOut32 (hwinterface.sys+inpout32.dll) a dokonca aj 64-bitová verzia InpOutx64 s ovládačom hwinterfacex64.sys.

Prejdime od teórie k praktickej realizácii. Skladom:

  • Win-Test verzia 4.10 aktualizovaná na vydanie Revision: 524 z 13. júla 2013.
  • Windows 7 Ultimate (64 bit) so všetkými aktualizáciami.
  • Intel Core i7-3770 (3,4 GHz) + PC3-10700 (667 MHz) 8x2=16 Gb + Asus P8Z77-V LX
  • Radič * PCI COM/LPT (2+1) port WCH353 hromadne

Inštalácia ovládača

Samotný radič v podstate nie je ničím zaujímavý a jeho názov dáva takmer úplný obraz - dva COM a jeden LPT port, je inštalovaný v PCI. Samotné zariadenie je lacné a stojí 360 rubľov (asi 12 dolárov), vyrobené v Číne.

Balenie bolo OEM. Súčasťou sú dva káble s COM portami na držiaku a disk s údajne ovládačmi. Neinštaloval som ich, pretože som už vopred vedel - nesedia. Všetky cesty viedli do sídla výrobcu. Pre každý prípad dávam odkaz a zavesím ten istý ovládač do archívu.


Postup inštalácie ovládača nespôsobil problémy - všetko je celkom jednoduché. Vypneme počítač, nainštalujeme ho do voľného PCI slotu, zapneme, nainštalujeme ovládač. Balenie obsahuje inštalačný program. Jeho rozhranie nie je zložité a zrozumiteľné. Na automatickej detekcii typu karty mi išlo všetko dobre a stačilo kliknúť len na Inštalovať ovládač . Proces inštalácie je sprevádzaný pohyblivým pásikom na rozhraní, všetko je veľmi jasné.

Program umožňuje v prípade potreby zmeniť priradenie portov. Napríklad, ak existujú virtuálne COM porty. Ak to chcete urobiť, po inštalácii kliknite na položku O aplikácii a na tlačidlo Upraviť názov portu.

Dané screenshoty nepotrebujú špeciálne komentáre, kliknite a obrázky sa zväčšia. Všetko je vo vašich rukách - nakonfigurujte nové porty, ktoré sa objavili, podľa vlastného uváženia a pre vaše potreby.

Konečným výsledkom, že inštalácia bola úspešná, by mala byť prítomnosť týchto zariadení v Správcovi zariadení v počítači. Choďte tam a skontrolujte. V mojom prípade už základná doska mala integrovaný COM -port (no .. potrebujem ho). Zoznam portov teda dopadol takto:

Je možné, že budete musieť poznať adresu tohto portu a správne ju špecifikovať v nastaveniach programu, kde sa bude tento port používať. Predvolené adresy portov by mali byť:

LPT -1 - 378

LPT-2 - 278

LPT -3 - 3BC

V našom prípade sa budú líšiť od bežných hodnôt, pretože tieto porty nie sú integrované na základnej doske a spôsob komunikácie s nimi je cez zbernicu PCI. V mojej verzii to fungovalo D010(použijeme prvú hodnotu). Preto pred inštaláciou (kúpou) takéhoto ovládača skontrolujte, či má váš program možnosť nastaviť iné rozsahy I/O.

Napriek tomu ovládače obsahujú malú utilitku, ktorá umožňuje preraďovanie takýchto adries (nerozumel som tomu, netreba).

Asi pred 10-15 rokmi bol paralelný port pomerne populárnym rozhraním na komunikáciu medzi zariadeniami. Výrobcovia rôznych zariadení dnes uprednostňujú sériové rozhrania. Aj dnes sa však port LPT dá nájsť. A niektorí vývojári pre to stále píšu programy (alebo podporujú tie, ktoré boli napísané počas rozkvetu paralelných rozhraní). Ale v počítačoch je teraz port LPT pomerne vzácnosťou. Existujú samozrejme rozširujúce dosky počítača, ktoré implementujú rozhranie LPT. Sú to v podstate dosky na zbernici PCI. Bohužiaľ, nie všetok softvér, ktorý bol napísaný pre porty LPT integrované do základnej dosky, bude fungovať s doskami LPT-PCI.

Navrhuje sa riešenie tohto problému: programová trieda napísaná pod .NET a dynamická knižnica, ktorá pracuje s LPT. Táto implementácia bola testovaná na 32-bitových a 64-bitových systémoch Windows XP, Windows 7, 8 a 10 so zabudovanými portami LPT a implementovaná ako rozširujúce karty na zbernici PCI alebo PCI-Express. Ovládač pre port LPT si môžete stiahnuť z odkazu nižšie po článku.

1 Inštalácia ovládača pracovať s portom LPT

Priložený archív obsahuje dva priečinky – pre 32-bitové a pre 64-bitové verzie systému Windows. Jeden z priečinkov obsahuje súbor InstallDriver.exe. Najprv spustite tento súbor, nainštaluje dynamické knižnice do systému. Potom by sa mal počítač reštartovať.

Ak chcete použiť navrhovaný ovládač, súbory inpout32.dll a inpoutx64.dll musí byť umiestnený v rovnakom adresári ako spustiteľný súbor vášho programu.

2 Programová trieda pomocou knižníc pracovať s LPT portom

Napísal som triedu pre .NET, ktorá používa dynamické knižnice inpout32.dll a inpoutx64.dll a umožňuje čítať dáta z paralelného portu a zapisovať dáta do jeho registrov.

Spomínané knižnice nie sú napísané mnou. Navrhujem pohodlnú obalovú triedu, ktorá zjednodušuje prácu s týmito knižnicami. Okrem toho autor knižníc v spise readme.txt hlási, že jeho ovládač nepodporuje PCI zariadenia. Podarilo sa mi ho spustiť, aby fungoval s integrovaným paralelným portom aj portom LPT implementovaným ako rozširujúca karta na zbernici PCI-Express. Port navyše funguje dobre na moderných Windows 10 x64 aj na starších systémoch.

Tu je kód triedy LPT vo VB.NET:

Kód triedy LPT vo VB.NET(rozbalí) Importuje System.Runtime.InteropServices """ """ Práca s portom LPT. Pri vytváraní zistí prítomnosť ovládača a vyberie príslušnú knižnicu. """ Verejná nedediteľná trieda LPT #Region "CONST" Verejná konšt. DLL32 ako reťazec = "c:\temp\inpout32.dll" verejná konšt. DLL64 ako reťazec = "c:\temp\inpoutx64.dll" Verejná konšt. DLL32DRV ako reťazec = "c: \temp\inpoutx32drv.dll" """ """ Registre paralelného portu. """ Public Enum Register as Integer """ """ Dátový register SPP/EPP. """ÚDAJE = 0 """ """ Register stavu SPP/EPP. """ STAV = ÚDAJE + 1 """ """ Riadiaci register SPP/EPP. """ OVLÁDANIE = ÚDAJE + 2 """ """ Register adries EPP. Čítanie alebo zápis do neho generuje priradený cyklus čítania alebo zápisu adresy EPP. """ EPP_ADDRESS = DATA + 3 """ """ Dátový register EPP. Čítanie (zápis) generuje pridružený cyklus čítania (zápisu) údajov EPP. """ EPP_DATA = DATA + 4 """ """ Register aktivácie režimu EPP. """ """ """ Ak len zmiešané "ECP + EPP" alebo "Extended" - pravdepodobne budete musieť zapísať aj bajt 0x80 """ do portu ECR (ECR je register režimu ECP, ECR=BASE_ADDR+0x402, BASE_ADDR je základná adresa portu LPT """ ECR = DATA + &H402 "TEST End Enum #End Region "/CONST #Region "DllImport" Súkromná zdieľaná funkcia IsInpOutDriverOpen() ako funkcia konca bajtu Súkromná zdieľaná funkcia IsInpOutDriverOpen_x64() ako koncová funkcia UInt64 Private Shared Function Inp32 (PortAddress As UInt32) Ako Byte End Function Private Shared Sub Out32(portAddress As UInt32, data As UInt32) End Sub Private Shared Function Inp64 (PortAddress As UInt64) Ako Byte End Function Private Shared Sub Out64(PortAddress As UInt64, Data As UInt64) End Sub #End Region "/DllImport #Region "CTOR" """ """ Skontroluje, či je možné použiť ovládač x86 alebo x64. Ak nie, vyvolá výnimku "ovládač nie je nainštalovaný". """ Shared Sub New() Dim x86 As Boolean = CheckIsDriverX86() Dim x64 As Boolean = CheckIsDriverX64() If x64 Then _IsX64DriverUsed = True ElseIf x86 Then _IsX64DriverUsed = False Else Vyhoďte nový systém LPT("Driver nie je nainštalovaný." End Sub """ """ Inicializácia portu - nastavenie XXXX0100"b v riadiacom registri. """ Private Shared Sub InitLpt(port As ULong) Write(port, Register.ECR, &H80) Write(port, Register.CONTROL, &H4) End Sub #End Region "/CTOR #Region "PROPS" """ """ Či je ovládač 64-bitový. """ Vráti hodnotu NULL, ak ovládač nie je nainštalovaný. """ Verejné zdieľané vlastníctvo iba na čítanie IsX64Driver Používa sa ako boolovská hodnota? Získať vrátenie _IsX64DriverUsed Koniec Získať koncovú vlastnosť Súkromné ​​zdieľané Iba na čítanie _IsX64DriverUsed ako boolovská hodnota? = Nič #End Region "/PROPS #Region "METHODY" """ """ Určuje, či je ovládač 32-bitový. """ Súkromná zdieľaná funkcia CheckIsDriverX86() As Boolean Try Dim res As Byte = IsInpOutDriverOpen() Return True Catch ex as Exception Return False End Try End Function """ """ Určuje, či je ovládač 64-bitový. """ Súkromná zdieľaná funkcia CheckIsDriverX64() As Boolean Skúste Dim nResult As ULong = IsInpOutDriverOpen_x64() Return (nResult<>0) Catch ex as Exception Return False End Try End Function #End Region "/METHODS #Region "Čítanie/zápis LPT portu" """ """ Číta 1 bajt údajov zo špecifikovaného registra LPT portu. """ """ Číslo portu. """ prístavný register. Verejná zdieľaná funkcia Čítať (port As ULong, Voliteľné reg As Register = Register.DATA) As Byte Dim data As Byte = 0 If IsX64DriverUsed Then data = Inp64(CULng(port + reg)) Else data = Inp32(CUInt(port + reg) )) End If Return data End Function """ """ Zapíše číslo do určeného registra LPT portu. """ """ Adresa prístavu. """ prístavný register. """ Public Shared Sub Write (port As ULong, reg As Register, data As ULong) If IsX64DriverUsed Then Out64(port + CULng(reg), data) Else If (data<= UInteger.MaxValue) Then Out32(CUInt(port + reg), CUInt(data)) Else Throw New ArgumentException("В 32-разрядных системах аргумент должен быть 32-разрядным (тип UInt32).", "data") End If End If End Sub #End Region "/Read / Write LPT Port """ """ Testuje prítomnosť portu LPT na zadanej adrese. """ """ Adresa paralelného portu. Verejná zdieľaná funkcia CheckPortPresent(lptAddress As ULong) As Boolean Dim portPresent As Boolean = False Skúste InitLpt(lptAddress) Dim data As ULong = Read(lptAddress, Register.DATA) ? Write(lptAddress, Register.DATA, &H0) portPresent = portPresent And (&H0 = Read(lptAddress, Register.DATA)) Write(lptAddress, Register.DATA, &H55) portPresent = portPresent And (&H55 = Read(lptAddress, Register.DATA ) )) Zápis(lptAddress, Register.DATA, &HAA) portPresent = portPresent And (&HAA = Read(lptAddress, Register.DATA)) Write(lptAddress, Register.DATA, data) data, ak sa port nenájde (v prípade jednosmerný port) If (Not portPresent) Then data = Read(lptAddress, Register.CONTROL) portPresent = ((data<>0) A tiež (údaje<>&HFF)) "Nie je null? => Prítomný port. If (Not portPresent) Then data = Read(lptAddress, Register.STATUS) portPresent = ((údaje<>0) A tiež (údaje<>&HFF)) End If End If Catch ex as Exception Return False End Skúste Return portPresent End Function End Class "/LPT

Kód triedy LPT v C#:

Kód triedy LPT v C#(rozbalí) pomocou System; pomocou System.Diagnostics; pomocou System.Runtime.InteropServices; menný priestor LPTIO ( /// Trieda pre prácu s portom LPT. Po vytvorení určuje prítomnosť ovládača a jeho bitovú hĺbku. verejná zapečatená trieda LPT( private const string DLL32 = "inpout32.dll"; private const string DLL64 = "inpoutx64.dll"; private static bool _IsX64DriverUsed; /// Či je ovládač 64-bitový. public static bool IsX64DriverUsed ( get ( return LPT._IsX64Driver ;)) statický LPT()( if (LPT.getIsDriverX86()) ( LPT._IsX64DriverUsed = false; ) else ( if (!LPT.getIsDriverX64()) vyvolá novú SystemException("Ovládač pre port LPT nie je nainštalovaný."); LPT._IsX64DriverUsed = true; ) ) public LPT() ( ) súkromný statický externý bajt IsInpOutDriverOpen(); private static extern ulong IsInpOutDriverOpen_x64(); súkromný statický externý bajt Inp32(uint PortAddress); private static extern void Out32(uint portAddress, uint data); súkromný statický externý bajt Inp64(ulong PortAddress); private static extern void Out64(ulong PortAddress, ulong Data); /// Určuje, či je ovládač pre 32-bitový Windows. súkromný statický bool getIsDriverX86()( bool flag; try ( LPT.IsInpOutDriverOpen(); flag = true; ) catch (Exception ex) ( ProjectData.SetProjectError(ex); flag = false; ProjectData.ClearProjectError(); ) return flag; ) /// Určuje, či ovládač je pre 64-bitový Windows. súkromný statický bool getIsDriverX64()( bool flag; try ( flag = Decimal.Compare(new Decimal(LPT.IsInpOutDriverOpen_x64()), Decimal.Zero) != 0; ) catch (Exception ex) ( ProjectData.SetProjectError(ex); flag = false; ProjectData. ClearProjectError(); ) návratový príznak; ) /// Číta 1 bajt dát z portu LPT. /// Číslo portu. /// prístavný register. verejný statický bajt Čítanie (ulong port, LPT.Register reg = LPT.Register.DATA)( return !LPT.IsX64DriverUsed ? LPT.Inp32(Convert.ToUInt32(Decimal.Add(new Decimal(port), new Decimal((int) reg)))) : LPT.Inp64(Convert.ToUInt64(Decimal.Add(new) Decimal(port), new Decimal((int) reg)))); ) /// Zapíše číslo do portu LPT. /// Adresa prístavu. /// prístavný register. /// Číslo, ktoré sa má napísať. Na 32-bitových systémoch nesmie byť argument väčší ako maximálna hodnota pre typ UInt32. public static void Write (ulong port, LPT.Register reg, ulong data)( if (LPT.IsX64DriverUsed) ( LPT.Out64(checked (port + (ulong) (uint) reg), data); ) else ( if (data > (ulong) uint.MaxValue) throw new ArgumentException("In 32- na bitových systémoch musí byť argument 32-bitový (typ UInt32).", "data"); LPT.Out32(Convert.ToUInt32(Decimal.Add(new Decimal(port), new Decimal((int) reg))) ), skontrolované ((uint) údaje)); ) ) /// registre LPT portov. verejný zoznam Register(ÚDAJE, STAV, KONTROLA, ) ) )

3 Použitie triedy .NET pracovať s portom LPT

Ak sa pozrieme na zoznam exportovaných funkcií knižnice inpout32.dll s úžasným nástrojom DLL Export Viewer od spoločnosti NirSoft, uvidíme nasledujúci obrázok:

Toto je zoznam funkcií, ktoré môžeme použiť. V skutočnosti sa v triede používajú všetky LPT, ale implementácia je skrytá a z verejných metód má používateľ k dispozícii iba dve metódy a jednu vlastnosť (o nich sa hovorí trochu ďalej).

Pri vytváraní inštancií trieda sama určí, ktorá bitová knižnica sa má použiť - inpout32.dll alebo inpoutx64.dll. Preto sa od používateľa nevyžaduje, aby vykonal akúkoľvek akciu na inicializáciu alebo určenie bitovej hĺbky použitého súboru dll. Okamžite môžete zapisovať alebo čítať z portu LPT. Jedno „Ale“: ak ovládač nie je nainštalovaný, prístup k niektorej z metód dynamickej knižnice vyvolá výnimku, takže odporúčam použiť bloky Skús chytiť zachytiť a zvládnuť výnimky.

Niekoľko príkladov použitia triedy LPT.

Na určenie, či sa používa 64-bitová verzia ovládača (inpoutx64.dll, ak je True) alebo 32-bitová (inpout32.dll, ak je False) (v skutočnosti to nemusíte vedieť, trieda používa presne knižnicu ktoré potrebujete, ale zrazu vy pre niečo, čo potrebujete zistiť z vášho programu):

bool is64bitDriver = LPT.IsX64DriverUsed;

Ak chcete zapísať číslo „123“ do riadiaceho registra LPT portu, zavolajte zo svojej triedy:

LPT.Write(currentPort, LPT.Register.CONTROL, 123);

Ak chcete prečítať jeden bajt z dátového registra LPT portu a prečítať stavový register:

Bajt b = LPT.Read(aktualnyPort, LPT.Registr.DATA); byte s = LPT.Read(aktualnyPort, LPT.Registr.STAV);

Tu currentPort - Adresa portu LPT. Navyše, ak máte integrovaný port LPT, jeho adresa bude s najväčšou pravdepodobnosťou 378 h. A ak máš na rozširujúcej doske LPT port, tak adresa bude iná, napr. D100h alebo C100h.

Ak chcete zistiť adresu portu LPT, prejdite do Správcu zariadení Windows, nájdite sekciu COM a LPT porty, vyberte použitý paralelný port a v okne vlastností (kliknutím pravým tlačidlom myši naň) sa pozrite na to, aké zdroje využíva vybraný port (musíte vziať prvú hodnotu z rozsahu).


Napríklad v tomto prípade musíte použiť číslo portu C100.

Stiahnite si prílohy:

  • Stiahnuť ovládač pre port LPT (3281 stiahnutí)

Pripojenie ovládača pomocou adaptéra USB-LPT

1 Nastavenie pre Mach3 na prácu s USB-LPT adaptérom

1.1 Keď používate adaptér USB-LPT, musíte skopírovať súbor mach3usb.dll do priečinka c:\mach3\plugins.

1.2 Aby zariadenie fungovalo, budete musieť nainštalovať aj ovládač.

Ak to chcete urobiť, pripojte adaptér k USB počítačový port.

Čakáme, kým operačný systém zistí pripojené zariadenie.

Otvorenie "Ovládací panel"→"Správca zariadení", nájdeme v sekcii "Ostatné zariadenia" - CNC ovládač, obrázok 1.

Obrázok 1.

Kliknutím pravým tlačidlom myši naň a výberom položky " OD vlastnosti“, kliknite na tlačidlo „Aktualizovať ovládač s".

V okne, ktoré sa otvorí, vyberte položku „Vyhľadať ovládače v tomto počítači (Vyhľadať a nainštalovať ovládače manuálne)“.

Zadajte cestu k priečinku s ovládačmi, obrázok 2.


Obrázok 2

1.3 Pri spustení programu ovládania stroja MACH3 si budete musieť vybrať zo zoznamu zariadení, Obrázok 3

Obrázok 3

1.4 Konfigurácia zásuvného modulu mach3usb pre adaptér USB-LPT.

Stlačte tlačidlo „Reset“, Mach3 spája s adaptér. P Poďme nakonfigurovať plugin. Ak to chcete urobiť, vyberte v menu „Config“ položku „Config plugins“, obrázok 4.


Obrázok 4

Stlačte tlačidlo „Config“ oproti „mach3usb“, otvorí sa okno konfigurácie pluginu, obrázok 5.

Obrázok 5

1.5 Nastavenie panelu „Software microstep“ (interpolácia softvérových krokov).

softvér kroková interpolácia motora umožňuje presnejšie riadenie časovania, hlavne keď pracovať pri nízkych otáčkach. D pohyb bude plynulejší a s nižšou hladinou hluku. Pri použití softvérovej karikatúry a motorický krokový plicátor v "Motion plugin", M ach3 bude fungovať ako keby parameter " StepPer"v nastaveniach krokového motoravyššia ako fyzicky, bez zníženia maximálnej rýchlosti. Pre N = 1 parametre prevádzky krokových motorov stroja s tvuyut nainštalovaný v p v menu „Motor Tuning“.

Zadajte multiplikačný faktor N > 1 a vynásobte faktorom N parameter " StepPer"v nastaveniach motora Ladenie motora) Mach3, obrázok 6.

Obrázok 6

Po dokončení nastavenia parametrovzatvorte okno nastavení pluginu. Ďalej stlačte "EStop" (Reset) prejdite na Režim „Stop“ a znovu vstúpte do režimu „Štart“, aby ste znova načítali parametre adaptéra.

2 Ďalšie nastavenia doplnku USB na LPT adaptér

2.1 Automatická deaktivácia signálu "Povoliť".

Automatické vypnutie signálu "Povoliť" po uplynutí nastaveného času, počas ktorého nedošlo k žiadnym pohybom. Ak je pole nastavené na 0, použije sa predvolený parameter - 500 ms. Keď je táto funkcia zakázaná, signál "Povoliť" sa vypne stlačením tlačidla "E-Stop" (Reset).

2.2 Návrat zo základného koncového spínača (Domov).

Obrázok 7

Nastavuje návrat portálu od momentu spustenia koncového spínača pri automatickom vyhľadávaní báz vo všetkých osiach. (Ak chcete vylúčiť nepravdu

chyby vyhľadávania základne, ak sa jeden vstupný signál používa pre niekoľko koncových spínačov).

2.3 Používanie tlačidiel "Cycle Start", "Feed Hold", "Stop". .

Obrázok 8

Keď je plugin spustený:

Stlačením tlačidla "Stop" dôjde k rýchlemu zastaveniu programu so stratou všetkých G- kód obsiahnutý vo vyrovnávacej pamäti údajov

Stlačením tlačidla "Feed Hold" bude vykonávanie programu pokračovať, kým sa nevyčerpá obsah vyrovnávacej pamäte programu.

Po stlačení tlačidla „Zastavenie podávania ", pre správne pokračovanie v práci stlačte tlačidlo " Potom obnovte dráhu nástroja“. " Bežať ", uh Tým sa zabezpečí, že program bude pokračovať správne.

Obrázok 9

2.4 Časovač.

Obrázok 10.

Aktivita: čas pred vyrovnávaním pamäte na začiatku

Nečinnosť : čas detekcie stavustop/pauza,ako aj resynchronizácia indexových impulzov

odpoveď : čas prenosu stavových príkazov.Používa sa na správnu implementáciustavy stop, pohyb, synchronizácia.

Pri použití predvolených hodnôt sa údaje zadané do polí hodnôt nepoužijú. Použité hodnoty sú 100/300/300.

Časovač sa nevzťahuje na príkazy na presun. Príkazy na presun sa vždy vykonajú okamžite.

2.5 Panel nastavení indexového vstupu, Obrázok 23.

Obrázok 11.

Adaptér má konfigurovateľný indexový vstup-výstup 12.
indexový vstup podporuje nasledujúce funkcie:
- Meranie otáčok vretena a indikácia v Mach3 - „Meranie otáčok za minútu“.

Synchronizačná pauza/spustenie v G-kóde, keď sa objaví synchronizačný impulz
pulz“ (aj stlačením tlačidiel Pause / Start na hlavnej obrazovke Mach3.)
- Synchronizácia rýchlosti posuvu nástroja s rýchlosťou vretena - „Synchronizačný adaptér
rýchlosť s otáčkami“.
Synchronizácia rýchlosti posuvu s počtom otáčok vretena sa vykonáva pomocou prostriedkov
adaptéra a zodpovedá vzorcu:
A = (A1*B)/B1.
Kde: A - dodávka v danom čase;
A1 - normálny posuv uvedený v G-kóde;
B - nameraná hodnota počtu otáčok za minútu vretena;
B1 - počet otáčok vretena pri normálnom posuve;
Pole RPM je počet otáčok pri normálnom podávaní, pole % je množstvo prekročenia
RPM nad nastavenou hodnotou, ktorú možno sledovať. Ak je pole % nula, potom informačný kanál
je vždy menší alebo rovný normálnemu posuvu uvedenému v G-kóde.

2.6 Vyrovnávacia pamäť.

Obrázok 12.

Niekedy môže dôjsť k dočasnému nesúladu medzi riadkom G-kódu zobrazeným ako vykonávaný v Mach3 a skutočne vykonaným riadkom, ako aj oneskorením pri vykonávaní príkazov Stop, Feed Hold. Je to spôsobené vlastnou vyrovnávacou pamäťou príkazov adaptéra.
Buffer stabilizuje prevádzku v prípade krátkodobých výpadkov komunikácie medzi adaptérom a počítačom a pri spomalení výpočtu Mach3. Na jednej strane platí, že čím väčšia vyrovnávacia pamäť, tým je práca stabilnejšia, no vzhľadom na to, že veľkosť vyrovnávacej pamäte môže dosahovať desiatky kilobajtov, môže dochádzať k oneskoreniu vykonávania príkazov FeedHold, Stop až niekoľko sekúnd. Rýchlosť odozvy môžete zvýšiť znížením hodnoty vyrovnávacej pamäte na 0, ale zvýši sa pravdepodobnosť zlyhania.

Vrelo odporúčame sa s ním zoznámiť. Nájdete tam veľa nových priateľov. Je to tiež najrýchlejší a najefektívnejší spôsob, ako kontaktovať správcov projektu. Sekcia Aktualizácie antivírusov naďalej funguje - vždy aktuálne bezplatné aktualizácie pre Dr Web a NOD. Nestihli ste si niečo prečítať? Celý obsah tickeru nájdete na tomto odkaze.

Práca s LPT portom vo Win NT/2000/XP

LPT port (L ine P rin T er) je port paralelného rozhrania, ktorý bol pôvodne vytvorený na pripojenie tlačiarne. BIOS poskytuje podporu portu LPT potrebnú pre výstup Centronics. Priestor adries portu zaberá rozsah &H378-&H37F

Port LPT má 12 výstupných a 5 vstupných liniek. Takýto pomerne veľký počet liniek umožňuje pripojiť k portu jednoduché zariadenia, možno aj bez vlastného mikrokontroléra. Preto sa tento port aj napriek vymiznutiu tlačiarní s rozhraním LPT aktívne využíva na pripojenie jednoduchých programátorov pamäťových čipov, rozhraní JTAG pre flashovanie (nahrádza softvér) satelitných prijímačov, DVD prehrávačov a iných elektronických zariadení. Port LPT je tiež obľúbený u modderov, pretože vám umožňuje pripojiť LCD displeje k počítaču bez vytvárania zložitých dosiek rozhrania.

Windows 2000/XP neumožňuje aplikáciám priamy prístup k I/O portom. Ak to chcete urobiť, musíte použiť ovládač, ktorý pracuje v režime KERNEL (v režime jadra operačného systému).

Obmedzenie prístupu k I/O portom pre bežné aplikačné programy (bežiace v užívateľskom režime) robí operačný systém stabilnejším. Aj keď na druhej strane nikto nebráni programátorovi napísať ovládač, ktorý pristupuje k portom.

Zaujímavé je, že pre procesor Intel x86 môžete napísať ovládač, ktorý používa jeden z dvoch zásadne odlišných prístupov. Prvou možnosťou je, že samotný ovládač pristupuje k portom a aplikačný program mu iba hovorí, čo má robiť. Táto možnosť je vo všeobecnosti štandardná a preferovaná.

Na vyriešenie problému existujú štyri obľúbené možnosti ovládačov, ktoré umožňujú aplikačnému programu prístup k I/O portom: DLPortIO, vodič UserPort, vodič GiveIO.sis, vodič Port95nt.

Všetky štyri možnosti sú takmer rovnocenné.

Ovládač DLPortIO

DLportIO - ovládač prístupu k portu z balíka DriverLINX od spoločnosti Scientific Software Tools, Inc. (http://www.sstnet.com) v skrátenej forme (bez popisu a zbytočnej dokumentácie). Pre normálnu prevádzku programov údržby LCD sa odporúča túto verziu ovládača.

Samotný ovládač pozostáva z dvoch komponentov:
. DLPortIO.dll - Win32 DLL, ktorá poskytuje hardvérové ​​I/O a
. DLPortIO.sys - ovládač pre WinNT pracujúci v režime jadra OS (nevyžaduje sa pre Win95/98)

V inštalačnom balíku ovládačov sa okrem týchto dvoch komponentov nachádza aj súbor Install.exe, ktorý dva vyššie uvedené presunie do priečinka ovládačov Windows a zaregistruje ich v systéme.

Viac k tomuto ovládaču nie je čo napísať. Nevyžaduje sa žiadne nastavenie. Stiahnite si, nainštalujte, použite. Nezabudnite sa pozrieť na koniec článku a prečítať si o výkone portu LPT.

Inštalácia je základná - spustite súbor Install.exe, nainštalujte. Na konci inštalácie sa pozrite do priečinka C:\Windows\System32\drivers a skontrolujte prítomnosť dvoch súborov ovládačov (DLPortIO.sys a DLPortIO.dll). Ak vidíme, že tieto súbory neboli skopírované, vezmeme ich z inštalačného balíka a skopírujeme ich ručne. Nebojte sa, vášmu počítaču sa nič zlé nestane. Reštartujeme počítač a pracujeme s portom LPT.

Ak náhle v dôsledku manipulácie so zariadením dostanete od ovládača správu, ako je táto: "ovládač zariadenia dlportio.sys nie je načítaný. Port I/O nebude mať žiadny účinok", neprepadajte panike. Tento problém je vyriešený takto:
. Spustíme regedit.
. Ideme do registra na pobočku HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.
. V priečinku dlportio zmeňte hodnotu parametra začať na 1 .
. Reštartujeme počítač.

Ovládač používateľského portu

Vodič UserPort otvára prístup k portom vo Win NT/2000/XP pre programy. Túto verziu ovládača LPT portu najčastejšie používajú „technológovia“, ktorí pracujú s programátormi a JTAGmi, keďže ovládač má aspoň nejaké konfiguračné nastavenia, dá sa použiť aj na spúšťanie programov údržby LCD indikátorov.

V archíve ovládačov sú tri súbory:
. UserPort.sys - ovládač pre WinNT, pracujúci v režime jadra OS,
. UserPort.exe - program na nastavenie ovládača a
. UserPort.pdf - súbor s popisom.

Nastavenie UserPort:
. 1. Rozbaľte archív do samostatného priečinka.
. 2. Skopírujte súbor UserPort.sys do C:\Windows\System32\drivers

Nastavenie užívateľského portu:
. Spustite UserPort.exe.
. Pred nami sa objaví panel s 2 oknami.

Ľavé okno odkazuje na činnosť programu v okne DOS, pravé je na celú obrazovku. Štandardne obsahujú čísla portov LPT – všetky je možné odstrániť pomocou tlačidla „Odstrániť“. V oboch oknách musíte zadať požadované čísla portov, ktoré plánujete použiť.

Na použitie z ovládača s väčšinou programátorov, JTAGov a servisných programov displeja pridajte do ľavého stĺpca nasledujúce možnosti:
378 , 379 a 37A pre LPT1
278 , 279 a 27A pre LPT2(Ak je adresa portu LPT v systéme BIOS znova priradená).

Dovoľte mi vysvetliť, čo znamenajú čísla. 0x378 je adresa portu.
. Adresa 0x378 volal základné a používa sa na písanie a čítanie údajov do az portu cez dátovú zbernicu D0-D7.
. Adresa 0x379 (základ+1) vytvorené pre bitové čítanie stav zo zariadenia pripojeného k portu LPT.
. Adresa 0x37A (základ + 2) slúži pre bitové záznamy ovládanie zariadenia pripojeného k portu LPT.

Pridajte takto:
0x378-0x378
0x37A-0x37A



Adresy portov musíte pridať do zoznamu cez vstupné okno a pomocou tlačidla "Pridať". Adresa 0x379 najčastejšie nie je potrebný a možno ho vynechať, keďže je určený bitové čítanie stavy zo zariadenia pripojeného na LPT port a väčšina zariadení (programátory, JTAG "a LCD indikátory, o to viac) negeneruje stavové signály. Ak chcete, môžete naopak zadať celý rozsah pridelených adries systémom pre port LPT 0x378-0x37F.

Ideme Ovládací panel, Systém, vyberte kartu Hardvér, Správca zariadení, prejdite na Porty (COM a LPT) a pozrite sa na vlastnosti portu LPT, na ktorom chcete nadviazať spojenie. Vo vlastnostiach otvorte kartu Zdroje a pozrite sa na hodnotu parametra Rozsah vstupu/výstupu (I/O). (V systéme Windows XP je to zvyčajne 378-37F)

Po vygenerovaní zoznamu adries musíte stlačiť tlačidlo "Štart", spustí sa ovládač a zobrazí sa správa:



Potom kliknite na tlačidlo "Aktualizovať", ovládač sa zaregistruje v systéme a potom na tlačidlo "Ukončiť". Počas používania ovládača samozrejme nie je potrebné stláčať tlačidlo „Stop“.

Ak sa systém po kliknutí na tlačidlo „Aktualizovať“ reštartuje, mali by ste sa pokúsiť spustiť registráciu ovládača v systéme s právami správcu alebo sa pokúsiť dočasne vypnúť bránu firewall alebo antivírus, ktoré môžu blokovať rušenie systémových procesov. Ak niečo nefunguje, prečítajte si UserPort.pdf

Ak chcete skontrolovať, či sa objavil prístup k portom, môžete spustiť program "lpt test.exe".

Po spustení programu sa zobrazí okno s nasledujúcim obsahom:



Neprítomnosť hlásenia „Port LPT sa testuje (adresa XXXh)“ a riadkov za ním znamená, že ovládač nefunguje.

Tento program jednoducho odošle rôzne čísla do dátového registra Dx a riadiaceho registra Ux portu LPT a potom ich načíta. Stavový register Sx portu LPT je len na čítanie. Na obrazovke sa zobrazí číslo a adresa testovaného portu LPT. Ak je port v poriadku, nemali by sa vydávať žiadne správy pre registre Dx a Ux.



LPT-TEST v1.03 1995-2003 Copyright (C) S. B. Alemanov. Moskva "BINAR".
Počas testovania by nemali byť k portom pripojené žiadne periférne zariadenia.
Dx - reg. údaje (out), Ux - reg. kontrola (von), Sx - reg. stav (inp).

Port LPT1 sa testuje (adresa 378h)
2. kontakt (D0) - nie "1"
3. kolík (D1) - nie "1"
4. kolík (D2) - nie "1"
5. kolík (D3) - nie "1"
6. kolík (D4) - nie "1"
7. kolík (D5) - nie "1"
8. kolík (D6) - nie "1"
9. kolík (D7) - nie "1"
1. kontakt (U0) - nie "1"
14. kolík (U1) - nie "1"
17. kolík (U3) - nie "1"
1. kontakt (U0) - nie "0"
14. kontakt (U1) - nie "0"
17. kontakt (U3) - nie "0"
15. kontakt (S3) - nie "0"


Ak sú registre Dx alebo Ux chybné, zobrazí sa hlásenie „no 0“ alebo „no 1“ a zobrazí sa číslo pinu na konektore LPT (signály na tomto pine je možné zobraziť osciloskopom). Vstup stavového registra Sx môže byť buď "0" alebo "1", ale zvyčajne, keď nie je nič pripojené k portu LPT, všetky vstupy stavového registra majú "1". Výskyt stavového registra "0" na vstupe môže byť znakom toho, že vstup bol prerušený, ak tam predtým vždy bola "1".
Na niektorých strojoch, ak je dátový register alebo riadiaci register chybný, prístup k portu LPT sa vôbec nezobrazí. Zdá sa, že keď je počítač zapnutý, BIOS testuje port LPT a ak je chybný, potom ho deaktivuje.

Ak sa vyskytnú problémy, je možné, že niektoré ovládače zasahujú do práce a pravidelne vysielajú impulzy do portu LPT (toto je možné vidieť pomocou osciloskopu). Môžete sa napríklad odpojiť od portu LPT v nastaveniach tlačiarne:
zakázať LPT1: Port tlačiarne
povoliť FILE: Tlač do súboru

Po odstránení všetkých problémov a úspešnom teste by sa mal objaviť prístup k portom a môžete spustiť program pomocou portu LPT. V opačnom prípade nebude zariadenie pripojené k portu na takomto stroji fungovať.

Ovládač GiveIO.sys

V roku 1996 vykonal americký programátor Dale Roberts sériu experimentov, ktorých výsledkom bol ovládač GiveIO.sys. Až doteraz zostáva tento ovládač jedným z populárnych nástrojov, ktoré umožňujú aplikačnému programu prístup k I/O portom.

Samotný autor ovládača dôrazne odporúča, aby sa tento ovládač používal len na účely ladenia. Konečná verzia aplikačného programu by mala namiesto nezávislého prístupu k I/O portom zveriť túto činnosť ovládaču napísanému špeciálne na tento účel. Ovládač by sa mal správať „správne“ tak, že skontroluje, či už zariadenie nepoužíva nejaká iná aplikácia.

Ak ste si však úplne istí, že nikto iný nepoužíva požadované I/O porty (napríklad nemáte k LPT pripojenú tlačiareň), môžete pokojne použiť ovládač GiveIO.sys.

Inštalácia ovládača:

1. Stiahnite si archív, rozbaľte a skopírujte súbor GiveIO.sys do adresára C:\Windows\System32\Drivers (predpokladá sa, že váš Windows je nainštalovaný v adresári C:\Windows).
. 2. Spustite súbor install.reg. Na obrazovke sa zobrazí nasledujúca správa:


. 3. Odpovedáme kladne. Zobrazí sa správa, že informácie boli úspešne zadané do registra. Ak chcete, môžete si to overiť. Spustíme editor registrov regedit.exe a vo vetve HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveio skontrolujte nasledujúce položky:


. 4. Reštartujeme počítač a skontrolujeme fungovanie programov, ktoré používajú ovládač.

vodič GiveIO.sysľudia aktívne používajú a časom sa objavili a ďalšie možnosti inštalácie.

Napríklad vodič GiveIO.sys ak existuje súbor s „informáciami o hardvéri“ GiveIO.inf je možné nainštalovať pomocou apletu „Inštalovať hardvér“.




Operačnému systému ukážeme ovládač GiveIO.sys tak, aby veril v existenciu hardvéru „GiveIO“.

Stiahnite si sadu súborov pre túto možnosť inštalácie ovládača GiveIO.sys(giveio_sys_v2.rar – 78 kb). Archív obsahuje súbory GiveIO.sys a GiveIO.inf, ako aj podrobné pokyny na inštaláciu s ilustráciami.

Okrem možností "manuálnej" inštalácie ovládača bolo napísaných niekoľko možností inštalátora, ktoré vykonávajú inštaláciu v automatickom režime.

Stiahnite si sadu súborov na automatickú inštaláciu ovládača GiveIO.sys(giveio_sys_install.rar - 28 kb). Archív obsahuje súbory GiveIO.sys a instdrv.exe, ako aj súbor remove-giveio.cmd, pomocou ktorého ovládač GiveIO.sys možno odstrániť zo systému.

ovládač port95nt

Termín " vodič Port95nt" tu nebude celkom správne. V skutočnosti ide o ten istý ovládač DLPortIO z balíka DriverLINX od Scientific Software Tools, Inc., len v plnej verzii, s niekoľkými nástrojmi na správu portov, s popisom a mnohými príkladmi pre programátorov. Pre bežného používateľa neprinesú žiadne výhody z doplnkových komponentov a komponenty ovládača DLPortIO.sys a DLPortIO.dll sú úplne rovnaké ako v zmenšenej verzii.

Port95nt som uviedol ako ovládač z dvoch dôvodov. Prvým je úplnosť zoznamu odkazov na ovládače portov LPT, ktoré sa nachádzajú na internete.

Druhým dôvodom je, že v niektorých prípadoch môžu nastať problémy s inštaláciou zmenšenej verzie DLPortIO pod WinXP. Obyčajne, ale zriedkavo, sa to stáva v oklieštených „autorských“ zostavách WinXP. V tomto prípade si môžete vziať plnú verziu inštalátora (1,5 MB). Aj keď podľa mňa bude rýchlejšie manuálne vložiť DLPortIO.sys a DLPortIO.dll do správneho priečinka, ako sa trápiť s výberom inštalátora, ktorý to dokáže za vás.

Dodatočné opatrenia

Okrem inštalácie jedného z vyššie uvedených ovládačov musíte pre normálnu prevádzku portu LPT pod WinXP upraviť register pomocou súboru REG xp_stop_polling.reg(xp_stop_polling.rar – 0,48 kb)

Pod WinXP zariadenia používajúce port LPT niekedy fungujú nestabilne. Príčinou takýchto zlyhaní môže byť práca podsystému Plug-and-Play (PnP) v systéme Windows, ktorý pravidelne vyzýva LPT, aby zistil pripojené zariadenia. Takýto prieskum sa vykonáva pri zavádzaní systému, ale môže sa vyskytnúť aj počas prevádzky. Žiaľ, ovládač DLportIO.sys a ďalšie možnosti ovládača neblokujú prístup k LPT z iných programov pri práci s klientskym portom tohto ovládača a subsystém PnP má istotu, že port nie je zaneprázdnený, pristupuje k nemu a narúša činnosť externých zariadení. Ak chcete problém vyriešiť, použite súbor .reg xp_stop_polling.reg. Tento súbor nastavuje kľúč v registri Windows, ktorý zakazuje takéto hlasovanie (hlasovanie) počas behu systému.

Okrem inštalácie ovládača a obmedzenia súčasného prístupu programov k portu je potrebné na zabezpečenie hardvérovej kompatibility a normálnej prevádzky zariadenia s portom LPT nastaviť systém BIOS na správnu adresu a prevádzkový režim portu("Normálny", SPP alebo EPP, ale nie ECP).

Nasledujúce parametre podliehajú konfigurácii cez BIOS Setup:

Základná adresa, ktorá môže byť 378h, 278h a 3BCh. Pri inicializácii BIOS kontroluje prítomnosť portov na adresách v tomto poradí a podľa toho priraďuje zisteným portom logické názvy LPT1, LPT2, LPT3. Adresa 3BCh má portový adaptér umiestnený na doske MDA alebo HGC (predchodcovia moderných grafických kariet). Väčšina portov je štandardne nakonfigurovaná na adresu 378h a možno ich prepnúť na 278h.

Použitá linka žiadosti o prerušenie, IRQ7 sa zvyčajne používa pre LPT1, IRQ5 pre LPT2. Mnohé „desktopové“ aplikácie nepoužívajú prerušenia tlačiarne a tento vzácny PC zdroj môže byť ušetrený. Pri použití rýchlostných režimov ECP (Fast Centronics) však môže prerušovaná prevádzka výrazne zvýšiť výkon a znížiť zaťaženie procesora.

Súčasne režim ECP nemožno použiť so zariadeniami, ktoré vyžadujú prísne časovanie (programátory a rozhrania JTAG).

Na záver trochu o terminológii:

. SPP(Štandardný paralelný port - štandardný paralelný port). Pre uľahčenie pochopenia je v BIOSe „e“ často označené výrazom „ Normálne".
. EPP(Enhanced Parallel Port - rozšírený paralelný port) - možnosť vysokorýchlostného obojsmerného rozhrania. Zmenil sa účel niektorých signálov, zaviedla sa možnosť adresovania viacerých logických zariadení a 8-bitový vstup dát, zaviedol sa 16-bajtový hardvérový FIFO buffer. Maximálny výmenný kurz je do 2 Mb/s.
. ECP(Enhanced Capability Port) je inteligentná verzia EPP. Zavedená je možnosť rozdelenia prenášaných informácií na príkazy a dáta, podpora DMA a kompresia prenášaných dát metódou RLE (Run-Length Encoding - kódovanie opakovaných sérií).


Pozrime sa teda na nasledujúcu možnosť práce s I/O portami vo Windows NT. Touto „možnosťou“ bude špeciálny ovládač GiveIO.sys, čo umožňuje aplikácii, ktorá ho spustila, voľne pracovať s akýmikoľvek portami. Napísal tento vodič Dale Roberts Boh vie kedy, ale dodnes to nestratilo na aktuálnosti.



Stručne povedané, poviem vám, ako to funguje: na začiatku nášho programu na komunikáciu s portami musíte kontaktovať vodiča GiveIO.sys. Pritom nastaví bitmapu systému I/O Permission Map pre našu aplikáciu na takú hodnotu, že jej bude umožnený priamy prístup k ľubovoľným portom. Mapa povolení I/O je neoddeliteľnou súčasťou systému ochrany I/O Windows NT. Je to bitmapa, ktorej každý bit zodpovedá I/O portu. Ak je bit = 1, potom je prístup k portu uzavretý, ak je 0, potom je prístup otvorený. Pre akúkoľvek užívateľskú aplikáciu sú všetky bity nastavené na 1, a preto nemôžeme priamo zasahovať do činnosti portu. GiveIO.sys sa drzo "nabúra" do tohto poľa a všade nastaví 0 - t.j. získame možnosť prístupu k akémukoľvek portu z aplikácie.



Najprv si stiahnite archív s ovládačom a inštalačným súborom:


Teraz sa musíme zaregistrovať a nainštalovať ovládač do systému. Aby ste to dosiahli, musíte vykonať niekoľko operácií. Najprv skopírujte súbor ovládača GIVEIO.sys do priečinka C:\Windows\system32\drivers\, ak je samozrejme váš systém nainštalovaný na disku OD:\ a nezmenili ste cesty inštalácie systému Windows.

Kliknite Áno. V takom prípade dostanete správu o úspešnom zadaní informácií do registra. Môžete si to overiť. V programe na úpravu registrov regedit.exe v pobočke HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveio môžete vidieť nasledovné:

Aby sa zmeny, ktoré sme vykonali, prejavili, je nevyhnutné, aby ste REŠTARTOVALI POČÍTAČ.


Je čas začať programovať. V našom programovom kóde port.exe(pozri ) urobíme nejaké zmeny, ktoré mu umožnia pristupovať k portom nielen vo Windows 9x ako to bolo predtým, ale aj vo Windows NT. Konečný kód bude vyzerať takto:

#include "iostream.h" #include "conio.h" #include "stdlib.h" #include "windows.h" int main() ( int Adresa = 888; cout<<"Test LPT port with GiveIO.sys"<

Všetky. Kompilovať, spustiť. Klikneme 1-0: všetko by malo fungovať. Ak vyskočila správa chyba! Ovládač sa nedá otvoriť! Stlačením ľubovoľného klávesu opustíte..., potom bola inštalácia ovládača neúspešná a musíte ho znova nainštalovať.

Vďaka giveio.sys nasledujúce skripty assembleru budú tiež úspešne fungovať:

Asm ( mov dx, 378h mov al, 1 out dx, al )

© Dmitrij Ivanov
2005-2006