տուն Բազմամյա ծաղիկներ Վարորդ lpt պորտով աշխատելու համար: Նավահանգիստներ (COM և LPT): Վարորդի տեղադրում LPT պորտի հետ աշխատելու համար

Վարորդ lpt պորտով աշխատելու համար: Նավահանգիստներ (COM և LPT): Վարորդի տեղադրում LPT պորտի հետ աշխատելու համար

Cooltek-ը շուկա է ներկայացրել ևս մեկ նորույթ՝ միջին աշտարակի պատյան, որը կոչվում է GT-04: Մոդելը համատեղում է բացառիկ առանձնահատկություններ, ինչպիսիք են ֆունկցիոնալությունը, էրգոնոմիկան, ոճային դիզայնը և գրավիչ գինը (59,99 եվրո): Շասսին ավարտված է ամբողջ սև գույնով, առջևի մասում վառ նարնջագույն/կանաչ շեշտադրումներով: Այստեղ բերված են նաև զույգ զամբյուղներ 5.25 «օպտիկական կրիչների համար» և 3.5» սկավառակի պահոց։

Cooltek GT-04 պատյանը (նարնջագույն/կանաչ) հագեցած է կողային պատուհանով, որը բացում է համակարգի բաղադրիչների տեսարանը: ...

Kingston Technology-ը՝ ԱՀ-ի հիշողության առաջատար արտադրողը, որը շուկայական հաջողության երկար պատմություն ունի, ներկայացրել է նոր հիշողության մոդուլներ՝ նվիրված HyperX արտադրանքի գծի տասնամյակին: Նոր արտադրանքի ուշագրավ առանձնահատկությունը HyperX և HyperX Beast ընտանիքներում օգտագործվող սև PCB-ն է, ինչպես նաև եզակի ջերմատարի առկայությունը, որը զգալիորեն բարելավում է ջերմության արտանետումը:

Predator տեսականու մաս՝ սև PCB-ով HyperX Beast սերիան ունի հսկայական պահեստային հզորություն և առավելագույն աշխատանքային հաճախականություններ: Մանրածախ, մոդուլներ ...

Բացառապես մաքուր սպիտակ բաղադրիչներից համակարգ մոնտաժելու սիրահարների համար, CORSAIR-ն այս գունային սխեմայի մեխանիզմներ է ավելացրել հայտնի CORSAIR RMx էլեկտրամատակարարման շարքին: Բացի բուն աղբյուրի պատյանից, ամբողջությամբ մոդուլային մալուխներին տրվել է սպիտակ գույն, իսկ փոքր քանակությամբ սև բաղադրիչների առկայությունը նոր մեխանիզմներին մոդայիկ տեսք է հաղորդում՝ ընդգծելով կոնտրաստը։

CORSAIR RMx White գծի բոլոր տարբերակները ունեն բարձրորակ տարրերի հիմք (ներառյալ զուտ ճապոնական բարձր ջերմաստիճանի կոնդենսատորներ ...

Այս խնդրին բախվում են բոլորը, ովքեր փորձում են ցանկացած սարք միացնել LPT պորտին: Հենց որ ծրագրին ասեք «օգտագործեք LPT», դուք սխալ կստանաք՝ այն արտացոլված է աջ կողմում գտնվող սքրինշոթում: Այսպիսով, եկեք փորձենք պարզել և ուղղել այն:

Ես հանդիպեցի դրան, երբ ավելացնում էի վերահսկիչի տախտակ 1-LPT և 2-COM պորտերով: Դրա անհրաժեշտությունը միանշանակ կար՝ միացնելով Band-decoder RU -005A: Սա կքննարկվի հաջորդ հոդվածում։ Միևնույն ժամանակ, ես կցանկանայի Windows-7-ի տակ (64 բիթ) Win-Test-ում ստանալ ճիշտ աշխատող LPT -պորտ:

Ժամանակակից համակարգիչները երկար ժամանակ չեն ներառում զուգահեռ պորտ: Որպես այլընտրանք, դուք կարող եք տեղադրել լրացուցիչ վերահսկիչ դրա մեջ: Մի վախեցեք այս բառից, դրա մեջ ոչ մի սարսափելի բան չկա։ Վերոնշյալ սխալի առաջացման պատճառը պարզ է. DriverLINX դրայվերները և գրադարանները (DLPortIO.sys + DLPortIO.dll) գոյություն չունեն x86-64 ճարտարապետության Windows տարբերակների համար (AMD64, Intel64): Մշակողը Scientific Software Tools Inc-ը դադարեցրեց վարորդին աջակցել՝ այն փոխանցելով այլ ընկերության, և նրանք դադարեցին միայն 32-բիթանոց տարբերակով։ Macrosoft-ը թոթվում է ուսերը և ուղարկում արտադրողին: Այնուամենայնիվ, կա լավ հավաքածու՝ սա InpOut32 (hwinterface.sys + inpout32.dll) և նույնիսկ InpOutx64-ի 64-բիթանոց տարբերակը hwinterfacex64.sys վարորդով:

Տեսությունից անցնենք գործնական իրականացման։ Պահեստում:

  • Win-Test տարբերակը 4.10, թարմացվել է վերանայման՝ 524-ի 13-հուլիս-2013-ից:
  • Windows 7 Ultimate (64 բիթ) բոլոր թարմացումներով:
  • Intel Core i7-3770 (3.4 ԳՀց) + PC3-10700 (667 ՄՀց) 8x2 = 16 Գբ + Asus P8Z77-V LX
  • Կարգավորիչ * PCI COM / LPT (2 + 1) պորտ WCH353 զանգված

Կարգավորիչի տեղադրում

Կարգավորիչն ինքնին, ըստ էության, ոչ մի հետաքրքիր բան չէ, և նրա անունը տալիս է գրեթե ամբողջական պատկերացում՝ երկու COM և մեկ LPT պորտ, այն տեղադրված է PCI-ում: Սարքն ինքնին էժան է և արժե 360 ռուբլի (մոտ 12 դոլար), արտադրված է Չինաստանում:

Փաթեթավորումը OEM էր: Հավաքածուն ներառում է երկու օղակ՝ COM պորտերով փակագծի վրա և սկավառակ՝ ենթադրաբար դրայվերներով: Ես դրանք չեմ տեղադրել, քանի որ ես նախապես գիտեի, նրանք չեն տեղավորվում: Բոլոր ճանապարհները տանում էին դեպի արտադրողի կայք։ Համենայն դեպս հղում եմ տալիս, նույն դրայվերը տեղադրում եմ արխիվում։


Կարգավորիչը տեղադրելու կարգը խնդիրներ չի առաջացրել. ամեն ինչ բավականին պարզ է: Անջատեք համակարգիչը, տեղադրեք այն անվճար PCI բնիկում, միացրեք այն, տեղադրեք դրայվերը: Հավաքածուն ներառում է տեղադրող: Դրա ինտերֆեյսը բարդ և պարզ չէ: Ինձ համար ամեն ինչ շարունակվեց քարտի տեսակի ավտոմատ հայտնաբերման վրա, և բավական էր սեղմել միայն Տեղադրել դրայվերը: Տեղադրման գործընթացը ուղեկցվում է ինտերֆեյսի վրա շարժվող բարով, ամեն ինչ շատ պարզ է:

Ծրագիրը թույլ է տալիս անհրաժեշտության դեպքում վերանշանակել նավահանգիստները: Օրինակ, եթե կան վիրտուալ COM պորտեր: Դա անելու համար տեղադրվելուց հետո սեղմեք «Մոտ» և «Փոփոխել պորտի անունը» կոճակը:

Վերոնշյալ սքրինշոթները հատուկ մեկնաբանությունների կարիք չունեն, սեղմեք և նկարներն ավելի մեծ կլինեն։ Ամեն ինչ ձեր ձեռքերում է. կարգավորեք նոր նավահանգիստները ձեր հայեցողությամբ և ըստ ձեր կարիքների:

Այն փաստի ավարտը, որ տեղադրումը հաջող էր, պետք է լինի այս սարքերի առկայությունը համակարգչի Device Manager-ում: Գնացեք այնտեղ և ստուգեք: Իմ դեպքում մայր տախտակն արդեն ուներ ինտեգրված COM-port (լավ, ինձ դա պետք է): Ըստ այդմ, նավահանգիստների ցանկը հետևյալն է.

Հնարավոր է, որ դուք պետք է իմանաք այս պորտի հասցեն և ճիշտ նշեք այն ծրագրի կարգավորումներում, որտեղ կօգտագործվի այս նավահանգիստը: Լռելյայնորեն, նավահանգիստների հասցեները պետք է լինեն հետևյալը.

LPT -1 - 378

LPT -2 - 278

LPT -3 - 3BC

Մեր դեպքում դրանք կտարբերվեն սովորական արժեքներից, քանի որ այս նավահանգիստները ինտեգրված չեն մայր տախտակի վրա, և դրանց հետ հաղորդակցվելու միջոցը PCI ավտոբուսի միջոցով է: Իմ տարբերակում ստացվեց Դ 010(մենք օգտագործում ենք առաջին արժեքը): Հետևաբար, նախքան նման կարգավորիչ տեղադրելը (գնելը), տեսեք, թե արդյոք ձեր ծրագիրը հնարավորություն ունի սահմանելու այլ I/O միջակայքերը:

Այնուամենայնիվ, դրայվերները ներառում են մի փոքրիկ կոմունալ, որը թույլ է տալիս վերանշանակել նման հասցեներ (ես դրա հետ չհասկացա, կարիք չկա):

Մոտ 10-15 տարի առաջ զուգահեռ պորտը բավականին տարածված ինտերֆեյս էր սարքերի միջև հաղորդակցության համար: Այսօր տարբեր սարքեր արտադրողները նախապատվությունը տալիս են սերիական ինտերֆեյսներին։ Այնուամենայնիվ, նույնիսկ այսօր LPT նավահանգիստը դեռ կարելի է գտնել: Եվ որոշ մշակողներ դեռ գրում են դրա համար ծրագրեր (կամ աջակցում են զուգահեռ ինտերֆեյսների ծաղկման ժամանակաշրջանում գրվածներին): Բայց համակարգիչներում այժմ LPT պորտը բավականին հազվադեպ է: Իհարկե, կան համակարգչի համար ընդլայնման քարտեր, որոնք իրականացնում են LPT ինտերֆեյսը: Դրանք հիմնականում PCI քարտեր են: Ցավոք, ոչ բոլոր ծրագրերը, որոնք գրվել են մայր տախտակի մեջ ինտեգրված LPT պորտերի համար, չեն աշխատում LPT-PCI քարտերով:

Առաջարկվում է այս խնդրի լուծումը՝ ծրագրավորման դաս՝ գրված .NET-ի համար և դինամիկ գրադարան, որն աշխատում է LPT-ով։ Այս ներդրումը փորձարկվել է 32 և 64 բիթ Windows XP, Windows 7, 8 և 10 երկու ներկառուցված LPT նավահանգիստներով և ներդրվել է որպես ընդլայնման քարտեր PCI կամ PCI-Express ավտոբուսում: Դուք կարող եք ներբեռնել վարորդը LPT պորտի համար հոդվածից հետո ստորև նշված հղումով:

1 Վարորդի տեղադրում LPT պորտի հետ աշխատելու համար

Կցված արխիվը պարունակում է երկու թղթապանակ՝ Windows-ի 32-բիթանոց և 64-բիթանոց տարբերակների համար: Թղթապանակներից մեկը պարունակում է ֆայլ InstallDriver.exe... Նախ գործարկեք այս ֆայլը, այն համակարգում կտեղադրի դինամիկ գրադարաններ: Դրանից հետո համակարգիչը պետք է վերագործարկվի:

Առաջարկվող դրայվերն օգտագործելու համար ֆայլերը inpout32.dllև inpoutx64.dllպետք է գտնվի նույն գրացուցակում, ինչ ձեր ծրագրի գործարկվող ֆայլը:

2 Գրադարանների օգտագործման ծրագրային դասաշխատել LPT պորտի հետ

Ես գրել եմ դաս .NET-ի համար, որն օգտագործում է դինամիկ գրադարաններ inpout32.dllև inpoutx64.dllև թույլ է տալիս կարդալ զուգահեռ պորտից և գրել տվյալներ դրա ռեգիստրներում:

Նշված գրադարանները իմ կողմից չեն գրվել։ Ես առաջարկում եմ հարմար փաթաթման դաս՝ այս գրադարանների հետ աշխատելը հեշտացնելու համար: Նաև ֆայլի գրադարանների հեղինակը readme.txtհաղորդում է, որ դրա վարորդը չի աջակցում PCI սարքերին: Ինձ հաջողվեց գործարկել այն, որպեսզի աշխատի ինչպես ինտեգրված զուգահեռ պորտի, այնպես էլ LPT պորտի հետ, որն իրականացվել է որպես ընդլայնման քարտ PCI-Express ավտոբուսում: Ավելին, նավահանգիստը լավ է աշխատում ժամանակակից Windows10 x64-ում և ավելի հին համակարգերում:

Ահա VB.NET-ում LPT դասի կոդը.

VB.NET LPT դասի կոդը(բացվում է) Imports System.Runtime.InteropServices "" " "" "Աշխատում է LPT պորտով: Ստեղծելիս այն որոշում է վարորդի առկայությունը և ընտրում է համապատասխան գրադարանը։" "" Public NotInheritable Class LPT #Region "CONST" Public Const DLL32 As String = "c: \ temp \ inpout32.dll" Public Const DLL64 As String = "c: \ temp \ inpoutx64.dll" Public Const DLL32DRV As String = "c: \ temp \ inpoutx32drv.dll "" "" "" "Զուգահեռ նավահանգիստ գրանցողներ." ""Հանրային թվի գրանցում որպես ամբողջ թիվ "" " "" "SPP / EPP տվյալների ռեգիստր." ""ՏՎՅԱԼՆԵՐ = 0 "" " "" "SPP / EPP կարգավիճակի ռեգիստր." ""ՍՏԱՏՈՒՍ = ՏՎՅԱԼՆԵՐ + 1 "" " "" "SPP / EPP վերահսկողության ռեգիստր." "" CONTROL = ՏՎՅԱԼՆԵՐ + 2 "" " "" "EPP հասցեների գրանցամատյան: Նրանից կարդալը կամ գրելը առաջացնում է EPP հասցեի կարդալու կամ գրելու համապատասխան ցիկլ։" "" EPP_ADDRESS = DATA + 3 "" " "" "EPP տվյալների գրանցամատյան. Read (Write) առաջացնում է EPP տվյալների կցված կարդալու (գրելու) ցիկլ։" "" EPP_DATA = DATA + 4 "" " "" "EPP ռեժիմի ակտիվացման ռեգիստր." "" """ "" "Եթե միայն խառը" ECP + EPP "կամ" Extended "-, ամենայն հավանականությամբ, ձեզ դեռ պետք կլինի գրել ECR պորտի բայթ 0x80" "" (ECR-ը ECP ռեժիմի ռեգիստրն է, ECR = BASE_ADDR + 0x402, BASE_ADDR է LPT -port-ի բազային հասցեն "" " ECR = DATA + & H402 «TEST End Enum #End Region» / CONST #Region «DllImport» Մասնավոր համօգտագործվող գործառույթը IsInpOutDriverOpen () Որպես բայթ վերջի ֆունկցիա Մասնավոր համօգտագործվող ֆունկցիա IsInpOutDriverOpen_x64 () Որպես UInt64 ավարտի ֆունկցիա Մասնավոր ընդհանուր գործառույթ Inp32 (PortAddress As UInt32) Որպես բայթ վերջի ֆունկցիա Մասնավոր Համօգտագործվող Sub Out32 (պորտՀասցե որպես UInt32, տվյալներ որպես UInt32) Վերջ ենթակետ Մասնավոր ընդհանուր գործառույթ Inp64 (PortAddress As UInt64) Որպես բայթ վերջի ֆունկցիա Մասնավոր Համօգտագործվող Sub Out64 (PortAddress As UInt64, Data As UInt64) End Sub #End Region "/ DllImport #Region" CTOR "" "" "" "Ստուգում է, արդյոք x86 կամ x64 դրայվերը կարող է օգտագործվել: Եթե ոչ, ապա նետում է" "չտեղադրված դրայվերը" "բացառություն։"Համօգտագործվող ենթաօրենսդրական նոր () Dim x86 As Boolean = CheckIsDriverX86 () Dim x64 As Boolean = CheckIsDriverX64 () If x64 then _IsX64DriverUsed = True ElseIf x86 then _IsX64DriverUsed = False Else Else «New պորտի տեղադրումը»Dri. Ենթակետ """ "" "Պորտի սկզբնավորում - կարգավորում XXXX0100" b կառավարման ռեգիստրում: """ Private Shared Sub InitLpt (port As ULong) Write (port, Register.ECR, & H80) Write (port, Register.CONTROL, & H4) End Sub #End Region "/ CTOR #Region" PROPS "" "" "" "Արդյոք օգտագործվում է վարորդի 64-բիթանոց տարբերակը:" "" Եթե դրայվերը տեղադրված չէ, NULL-ը վերադարձվում է: """Հանրային համօգտագործվող միայն կարդալու հատկությունը X64Driver-ն օգտագործվում է որպես բուլյան: Ստանալ վերադարձ _IsX64DriverUsed Վերջ Ստանալ վերջ սեփականություն Անձնական Համօգտագործվող Միայն կարդալու _IsX64DriverUsed As Boolean: = Nothing #End Region "/ PROPS #Region" METHODS "" "" "" "Որոշում է, արդյոք դրայվերը 32-բիթանոց է։" ""Մասնավոր Համօգտագործվող ֆունկցիա CheckIsDriverX86 () Որպես բուլյան Փորձեք Dim res As Byte = IsInpOutDriverOpen () Վերադարձեք True Catch ex Որպես բացառություն Վերադարձեք Կեղծ Ավարտ Փորձեք Ավարտել ֆունկցիան "" " "" "Որոշում է, արդյոք դրայվերը 64-բիթանոց է։" ""Մասնավոր ընդհանուր գործառույթ CheckIsDriverX64 () Որպես բուլյան Փորձեք Dim nResult As ULong = IsInpOutDriverOpen_x64 () Վերադարձեք (nԱրդյունք<>0) Catch ex-ը որպես բացառություն Վերադարձեք կեղծ ավարտ Փորձեք ավարտի գործառույթը #End Region "/ METHODS #Region" Read / Write LPT Port "" "" "" "Կարդում է 1 բայթ տվյալներ նշված LPT պորտ ռեգիստրից։" "" """ Նավահանգստի համարը. """ Նավահանգստի գրանցամատյան.Հանրային համօգտագործվող ֆունկցիան Կարդացեք (նավահանգիստը որպես ULong, կամընտիր reg Որպես գրանցում = գրանցում. ՏՎՅԱԼՆԵՐ) Որպես բայթ Մուգ տվյալներ Որպես բայթ = 0 Եթե IsX64DriverUsed Այնուհետեւ տվյալներ = Inp64 (CULng (port + reg)) Այլ տվյալներ = Inp32 (CUInt (port + reg )) Վերջ, եթե վերադարձնի տվյալները Վերջի ֆունկցիան "" " "" "Գրում է թիվ LPT պորտի նշված ռեգիստրում։" "" """ Նավահանգստի հասցեն. """ Նավահանգստի գրանցամատյան. """ Public Shared Sub Write (port As ULong, reg As Register, data as ULong) If IsX64DriverUsed then Out64 (port + CULng (reg), տվյալներ) Էլ Եթե (տվյալներ)<= 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 """ "" "Թեստեր նշված հասցեում LPT պորտի առկայության համար։" "" """ Զուգահեռ նավահանգստի հասցեն.Հանրային համօգտագործվող գործառույթ CheckPortPresent (lptAddress As ULong) Որպես Boolean Dim portPresent As Boolean = False Փորձեք InitLpt (lptAddress) Dim տվյալները Որպես ULong = Read (lptAddress, Register.DATA) «պահպանել տվյալների ռեգիստրի ընթացիկ արժեքը» ? Գրել (lptAddress, Register.DATA և H0) portPresent = portPresent And (& H0 = Read (lptAddress, Register.DATA)) Գրել (lptAddress, Register.DATA, & H55) portPresent = portPresent And (& H55 = Read (lptAddress) , Register.DATA )) Գրել (lptAddress, Register.DATA, & HAA) portPresent = portPresent And (& HAA = Read (lptAddress, Register.DATA)) Գրել (lptAddress, Register.DATA, data) "վերականգնել նախորդ արժեքը տվյալների ռեգիստրը» Ստուգեք հսկիչ ռեգիստրների առկայությունը և If (Not portPresent) Այնուհետեւ տվյալներ = Read (lptAddress, Register.CONTROL) portPresent = ((տվյալներ<>0) Եվ նաև (տվյալներ<>& HFF)) "Դատարկ չէ՞ => Ներկա պորտ: Եթե (Ոչ portPresent) Ապա տվյալներ = Կարդալ (lptAddress, Register.STATUS) portPresent = ((տվյալներ<>0) Եվ նաև (տվյալներ<>& HFF)) Վերջ, եթե վերջ, եթե բռնել նախկինում որպես բացառություն Վերադարձիր կեղծ ավարտ Փորձիր վերադարձնել նավահանգիստՆերկայ ավարտի ֆունկցիայի ավարտի դասը "/ LPT

LPT դասի կոդը C #-ում.

LPT դասի կոդը C #-ում(բացվում է)՝ օգտագործելով System; օգտագործելով System.Diagnostics; օգտագործելով System.Runtime.InteropServices; Անվանատարածք LPTIO (/// Դաս LPT պորտի շահագործման համար: Ստեղծվելիս այն որոշում է դրայվերի առկայությունը և դրա բիթերի խորությունը: հանրային կնքված դասի LPT(private const string DLL32 = "inpout32.dll"; private const string DLL64 = "inpoutx64.dll"; private static bool _IsX64DriverUsed; /// Օգտագործվում է արդյոք վարորդի 64-բիթանոց տարբերակը: public static bool IsX64DriverUsed ( (վերադարձնել LPT._IsX64DriverUsed ;)) ստատիկ LPT ()(եթե (LPT.getIsDriverX86 ()) (LPT._IsX64DriverUsed = false;) մյուս դեպքում (եթե (! LPT.getIsDriverX64 ()) գցեք նոր SystemException («LPT պորտի դրայվերը տեղադրված չէ»: LPT._IsX64DriverUsed = ճշմարիտ;) ) հանրային LPT () () մասնավոր ստատիկ արտաքին բայթ IsInpOutDriverOpen (); մասնավոր ստատիկ արտաքին երկարություն IsInpOutDriverOpen_x64 (); մասնավոր ստատիկ արտաքին բայթ Inp32 (uint PortAddress); private static extern void Out32 (uint portAddress, uint data); մասնավոր ստատիկ արտաքին բայթ Inp64 (PortAddress-ի երկարությամբ); private static extern void Out64 (PortAddress, երկար Տվյալներ); /// Որոշում է, արդյոք դրայվերը նախատեսված է 32-բիթանոց Windows-ի համար: մասնավոր ստատիկ bool getIsDriverX86 ()(bool flag; try (LPT.IsInpOutDriverOpen (); դրոշ = true;) catch (Exception ex) (ProjectData.SetProjectError (նախկին); դրոշ = false; ProjectData.ClearProjectError ();) վերադարձնել դրոշ;) /// Սահմանում է վարորդ 64-բիթանոց Windows-ի համար: մասնավոր ստատիկ bool getIsDriverX64 ()(bool դրոշ; փորձիր (դրոշ = տասնորդական. Համեմատիր (նոր տասնորդական (LPT.IsInpOutDriverOpen_x64 ()), տասնորդական.Զրո) = 0;) բռնել (Exception ex) (ProjectData.SetProjectError (նախկին); դրոշ = false; ProjectData: ClearProjectError ();) վերադարձնել դրոշը;) /// Կարդում է 1 բայթ տվյալ LPT պորտից: /// Նավահանգստի համարը. /// Նավահանգստի գրանցամատյան. Հանրային ստատիկ բայթ Կարդացված (երկար պորտ, LPT.Register reg = LPT.Register.DATA)(վերադարձ. LPT.IsX64DriverUsed? LPT.Inp32 (Convert.ToUInt32 (Տասնորդական.Ավելացնել (նոր տասնորդական (նավահանգիստ), նոր տասնորդական ((int) ռեգ)))): LPT.Inp64 (Convert.ToUInt64 (Decimal.Add) Տասնորդական (պորտ), նոր տասնորդական ((int) reg))));) /// Գրում է թիվ LPT պորտում: /// Նավահանգստի հասցեն. /// Նավահանգստի գրանցամատյան. /// Գրելու համար: 32-բիթանոց համակարգերում արգումենտը պետք է լինի ոչ ավելի, քան UInt32 տեսակի առավելագույն արժեքը: public static void Write (ulong port, LPT.Register reg, ulong data)(if (LPT.IsX64DriverUsed) (LPT.Out64 (ստուգված է (port + (ulong) (uint) reg), data);) other (if (data> (ulong) uint.MaxValue) նետել նոր ArgumentException («32- on բիթ համակարգեր, արգումենտը պետք է լինի 32-բիթ (տիպ UInt32): "," տվյալների "); LPT.Out32 (Convert.ToUInt32 (Տասնորդական.Ավելացնել (նոր տասնորդական (պորտ), նոր տասնորդական ((int) ռեգ))) , ստուգված ((uint) տվյալներ));)) /// LPT պորտի ռեգիստրներ: public enum Գրանցվել(ՏՎՅԱԼՆԵՐ, ՍՏԱՏՈՒՍ, ՎԵՐԱՀՍԿՈՂՈՒԹՅՈՒՆ,)))

3 Օգտագործելով .NET դասը LPT պորտի հետ աշխատելու համար

Եթե ​​նայենք արտահանվող գրադարանային գործառույթների ցանկին inpout32.dllհրաշալի գործիքով DLL արտահանման դիտիչ NirSoft-ից մենք կտեսնենք հետևյալ պատկերը.

Սա այն գործառույթների ցանկն է, որոնք մենք կարող ենք օգտագործել: Գործնականում բոլորն էլ օգտագործվում են դասարանում LPT, բայց իրականացումը թաքնված է, և հանրային մեթոդներից օգտվողին հասանելի են միայն երկու մեթոդ և մեկ հատկություն (դրանք քննարկվում են մի փոքր ավելի ուշ):

Ինքնաստուծելիս դասը ինքն է որոշելու, թե որ գրադարանն այն պետք է օգտագործի. inpout32.dllկամ inpoutx64.dll... Հետևաբար, օգտագործողի կողմից որևէ գործողություն չի պահանջվում սկզբնավորելու կամ օգտագործված բիթերի խորությունը որոշելու համար dll... Դուք կարող եք կարդալ կամ գրել ուղղակիորեն LPT պորտից: Մեկ «Բայց». եթե դրայվերը տեղադրված չէ, դինամիկ գրադարանի մեթոդներից որևէ մեկը կանչելը բացառություն կստեղծի, ուստի խորհուրդ եմ տալիս օգտագործել բլոկներ: Փորձեք ... Բռնելբռնել և կարգավորել բացառությունները:

Դասից օգտվելու մի քանի օրինակներ LPT.

Որոշելու համար, թե արդյոք օգտագործվում է վարորդի 64-բիթանոց տարբերակը (inpoutx64.dll, եթե True) կամ 32-բիթանոց տարբերակը (inpout32.dll, եթե False) (իրականում, ձեզ հարկավոր չէ դա իմանալ, դասը ճշգրիտ օգտագործում է: գրադարանը, որը ձեզ անհրաժեշտ է, բայց հանկարծ ինչ-որ բանի համար պետք է պարզեք ձեր ծրագրից):

Bool is64bitDriver = LPT.IsX64DriverUsed;

LPT պորտի կառավարման ռեգիստրում «123» թիվը գրելու համար զանգահարեք ձեր դասարանից.

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

LPT պորտի տվյալների ռեգիստրից մեկ բայթ կարդալու և կարգավիճակի ռեգիստրը կարդալու համար.

Բայթ b = LPT.Read (currentPort, LPT.Register.DATA); բայթ s = LPT.Read (currentPort, LPT.Register.STATUS);

Այստեղ ընթացիկ նավահանգիստ - LPT պորտի հասցեն... Ավելին, եթե դուք ունեք ինտեգրված LPT պորտ, ապա դրա հասցեն, ամենայն հավանականությամբ, կլինի 378 ժ... Եվ եթե դուք ունեք LPT միացք ընդարձակման տախտակի վրա, ապա հասցեն տարբեր կլինի, օրինակ. D100ժկամ C100h.

LPT պորտի հասցեն գտնելու համար գնացեք Windows սարքի կառավարիչ, գտեք բաժինը COM և LPT պորտեր, ընտրեք օգտագործված զուգահեռ պորտը և հատկությունների պատուհանում (աջ սեղմելով դրա վրա) տեսեք, թե ինչ ռեսուրսներ է օգտագործում ընտրված նավահանգիստը (դուք պետք է վերցնեք առաջին արժեքը միջակայքից)։


Օրինակ, այս դեպքում դուք պետք է օգտագործեք պորտի համարը C100.

Ներբեռնեք հավելվածները.

  • Ներբեռնեք վարորդը LPT պորտի համար (3281 ներլցումներ)

Խիստ խորհուրդ ենք տալիս ծանոթանալ նրա հետ։ Այնտեղ շատ նոր ընկերներ կգտնեք։ Դա նաև ամենաարագ և ամենաարդյունավետ միջոցն է ծրագրի ադմինիստրատորների հետ կապ հաստատելու համար: Հակավիրուսային թարմացումներ բաժինը շարունակում է աշխատել՝ միշտ թարմացված անվճար թարմացումներ Dr Web-ի և NOD-ի համար: Չե՞ք հասցրել ինչ-որ բան կարդալ: Սողացող գծի ամբողջական բովանդակությունը կարող եք գտնել այս հղումով։

LPT-պորտի հետ աշխատելը Win NT / 2000 / XP-ում

LPT պորտ (Լինե Պ rin Տ er) զուգահեռ ինտերֆեյսի միացք է, որն ի սկզբանե ստեղծվել է տպիչը միացնելու համար: BIOS-ն ապահովում է LPT պորտի աջակցություն, որն անհրաժեշտ է Centronics ինտերֆեյսի միջոցով ելք ապահովելու համար: Նավահանգստի հասցեների տարածքը զբաղեցնում է տիրույթը և H378- & H37F

LPT պորտն ունի 12 ելքային և 5 մուտքային գիծ: Նման բավականին մեծ թվով գծեր հնարավորություն են տալիս պորտին միացնել պարզ սարքավորումները, որոնք կարող են նույնիսկ չունենալ սեփական միկրոկոնտրոլեր։ Հետևաբար, այս նավահանգիստը, չնայած LPT ինտերֆեյսով տպիչների անհետացմանը, ակտիվորեն օգտագործվում է հիշողության չիպերի պարզ ծրագրավորողների, JTAG ինտերֆեյսների միացման համար արբանյակային ընդունիչների, DVD նվագարկիչների և այլ էլեկտրոնային սարքավորումների համար: LPT պորտը նաև հայտնի է մոդերների շրջանում, քանի որ այն թույլ է տալիս միացնել LCD էկրանները համակարգչին՝ առանց բարդ ինտերֆեյսի տախտակներ պատրաստելու:

Windows 2000 / XP-ը թույլ չի տալիս հավելվածներին ուղղակիորեն մուտք գործել I/O պորտեր: Դա անելու համար հարկավոր է օգտագործել «KERNEL» ռեժիմով աշխատող դրայվեր (օպերացիոն համակարգի միջուկի ռեժիմում):

Ընդհանուր կիրառական ծրագրերի համար I/O նավահանգիստների մուտքի սահմանափակումը (օգտագործողի ռեժիմով աշխատող) օպերացիոն համակարգը դարձնում է ավելի կայուն: Չնայած, մյուս կողմից, ոչ ոք չի խանգարում ծրագրավորողին գրել մի դրայվեր, որը հասցեագրում է պորտերին։

Հետաքրքիր է, որ Intel x86 պրոցեսորի համար դուք կարող եք գրել դրայվեր՝ օգտագործելով երկու սկզբունքորեն տարբեր մոտեցումներից մեկը: Առաջին տարբերակն այն է, որ վարորդն ինքը մուտք է գործում նավահանգիստներ, իսկ կիրառական ծրագիրը միայն վարորդին ասում է, թե ինչ անել: Այս տարբերակը ընդհանուր առմամբ ստանդարտ է և նախընտրելի:

Այս խնդիրը լուծելու համար կան վարորդների չորս հայտնի տարբերակներ, որոնք թույլ են տալիս հավելվածի ծրագրին մուտք գործել I/O պորտեր՝ վարորդ DLPortIO, վարորդ UserPort, վարորդ GiveIO.sis, վարորդ Port95nt.

Բոլոր չորս տարբերակները գրեթե հավասար են:

DLPortIO վարորդ

DLportIO - պորտ մուտքի վարորդ փաթեթից ՎարորդLINX Scientific Software Tools, Inc.-ից: (http://www.sstnet.com) կրճատ ձևով (առանց նկարագրության և ավելորդ փաստաթղթերի): LCD ցուցիչների սպասարկման ծրագրերի բնականոն աշխատանքի համար մենք կարող ենք ճշգրիտ խորհուրդ տալ վարորդի այս տարբերակը.

Վարորդը ինքնին բաղկացած է երկու բաղադրիչից.
... DLPortIO.dll - Win32 DLL, որն ապահովում է ապարատային I/O գործառույթներ և
... DLPortIO.sys - վարորդ WinNT-ի համար, որն աշխատում է OS միջուկի ռեժիմում (չի պահանջվում Win95 / 98-ի համար)

Վարորդների տեղադրման փաթեթում, բացի այս երկու բաղադրիչներից, կա նաև Install.exe ֆայլ, որը վերը նշված երկու դրայվերները տեղափոխում է Windows դրայվերի թղթապանակ և գրանցում դրանք համակարգում։

Այս վարորդի մասին այլեւս գրելու բան չկա։ Ոչ մի կոնֆիգուրացիա չի պահանջվում: Ներբեռնեք, տեղադրեք, օգտագործեք: Մի մոռացեք դիտել հոդվածի վերջը և կարդալ LPT պորտի կատարման երաշխիքը:

Տեղադրումը տարրական է. գործարկեք Install.exe ֆայլը, տեղադրեք այն: Տեղադրման վերջում մենք նայում ենք C: \ Windows \ System32 \ drivers թղթապանակին և ստուգում ենք վարորդների երկու ֆայլերի առկայությունը (DLPortIO.sys և DLPortIO.dll): Եթե ​​տեսնում ենք, որ այս ֆայլերը չեն պատճենվել, մենք դրանք վերցնում ենք տեղադրման փաթեթից և ձեռքով պատճենում։ Մի անհանգստացեք, ձեր համակարգչին ոչ մի վատ բան չի պատահի: Մենք վերագործարկում ենք համակարգիչը և աշխատում ենք LPT պորտով:

Եթե ​​հանկարծ, ապարատային մանիպուլյացիայի արդյունքում, դուք հաղորդագրություն եք ստանում հետևյալ պլանի վարորդից. «dlportio.sys սարքի դրայվերը բեռնված չէ: Port I/O-ն ազդեցություն չի ունենա», խուճապի մի մատնվեք: Այս խնդիրը շտկվում է հետևյալ կերպ.
... Գործարկել regedit-ը:
... Մենք գնում ենք գրանցամատյան մասնաճյուղում HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Ծառայություններ \.
... Փոխեք պարամետրի արժեքը dlportio թղթապանակում Սկսելվրա 1 .
... Մենք վերագործարկում ենք համակարգիչը:

UserPort վարորդ

Վարորդ UserPortբացում է մուտք դեպի նավահանգիստներ Win NT / 2000 / XP ծրագրերի համար: LPT պորտի դրայվերի այս տարբերակը առավել հաճախ օգտագործվում է «տեխնիկների» կողմից, ովքեր աշխատում են ծրագրավորողների և JTAG-ների հետ, քանի որ դրայվերն ունի առնվազն որոշ կազմաձևման կարգավորումներ:

Վարորդի արխիվում կա երեք ֆայլ.
... UserPort.sys - վարորդ WinNT-ի համար, որն աշխատում է OS միջուկի ռեժիմում,
... UserPort.exe-ը վարորդի կազմաձևման ծրագիր է և
... UserPort.pdf - նկարագրության ֆայլ:

UserPort-ի տեղադրում.
... 1. Բացեք արխիվը առանձին թղթապանակում:
... 2. Պատճենեք UserPort.sys ֆայլը C: \ Windows \ System32 \ drivers

UserPort կարգավորում.
... Գործարկեք UserPort.exe-ը:
... Մեր դիմաց կհայտնվի 2 պատուհանով վահանակ։

Ձախ պատուհանը վերաբերում է ծրագրի աշխատանքին DOS պատուհանում, աջը՝ ամբողջ էկրանով։ Լռելյայնորեն, դրանք պարունակում են LPT նավահանգիստների համարներ. դրանք բոլորը կարելի է հեռացնել՝ օգտագործելով «Հեռացնել» կոճակը: Երկու պատուհաններում դուք պետք է մուտքագրեք անհրաժեշտ նավահանգիստների համարները, որոնք նախատեսում եք օգտագործել:

Ծրագրավորողների, JTAG-երի և ցուցադրման սպասարկման ծրագրերի մեծ մասի հետ վարորդի օգտագործման համար ձախ սյունակում ավելացրեք հետևյալ պարամետրերը.
378 , 379 և 37Ահամար LPT1
278 , 279 և 27Ահամար LPT2(Եթե LPT պորտի հասցեն BIOS-ում վերանշանակված չէ):

Բացատրեմ, թե ինչ են նշանակում թվերը։ 0x378նավահանգստի հասցեն է:
... Հասցե 0x378կանչեց հիմնականև ծառայում է գրելու և կարդալու համար տվյալներըդեպի նավահանգիստ և դեպի նավահանգիստ, տվյալների ավտոբուսի միջոցով D0-D7.
... Հասցե 0x379 (հիմնական + 1)համար ստեղծված կարդալ կտորներնշվում է LPT պորտին միացված սարքից:
... Հասցե 0x37A (հիմնական + 2)ծառայում է բիթ գրառումներ LPT պորտին միացված սարքի կառավարում:

Ավելացնել այսպես.
0x378-0x378
0x37A-0x37A



Դուք պետք է ցանկին ավելացնեք նավահանգիստների հասցեները մուտքագրման պատուհանի միջոցով և օգտագործելով «Ավելացնել» կոճակը: Հասցե 0x379ամենից հաճախ այն պետք չէ և հնարավոր է չմտնել, քանի որ նախատեսված է դրա համար կարդալ կտորներկարգավիճակի ազդանշանները սարքից, որը միացված է LPT պորտին, և սարքերի մեծ մասը (ծրագրավորողներ, JTAG «և նույնիսկ LCD ցուցիչներ) կարգավիճակի ազդանշաններ չեն առաջացնում: 0x378-0x37F.

Գնալ Կառավարման վահանակՀամակարգ, ընտրեք Սարքավորումներ ներդիրը, Սարք մենեջեր, գնացեք Ports (COM և LPT) և դիտեք LPT պորտի հատկությունները, որոնց վրա ցանկանում եք կապ հաստատել: Հատկություններում բացեք «Պաշարներ» ներդիրը և դիտեք պարամետրի արժեքը Մուտքային / ելքային միջակայք (I / O)... (Սովորաբար Windows XP-ում դա այդպես է 378 - 37F)

Հասցեների ցանկը կազմելուց հետո անհրաժեշտ է սեղմել «Սկսել» կոճակը, վարորդը կգործարկվի և կհայտնվի հետևյալ հաղորդագրությունը.



Այնուհետև սեղմեք «Թարմացնել» կոճակը, մինչդեռ վարորդը կգրանցվի համակարգում, այնուհետև «Ելք»: Իհարկե, «Stop» կոճակը պետք չէ սեղմել, երբ մենք օգտագործում ենք վարորդը:

Եթե ​​համակարգը վերաբեռնվում է, երբ սեղմում եք «Թարմացնել» կոճակը, դուք պետք է փորձեք սկսել համակարգում վարորդի գրանցումը ադմինիստրատորի իրավունքներով կամ փորձեք ժամանակավորապես անջատել firewall-ը կամ հակավիրուսը, որը կարող է արգելափակել միջամտությունը համակարգի գործընթացներին: Եթե ​​ինչ-որ բան չի աշխատում, կարդացեք UserPort.pdf-ը

Ստուգելու համար, թե արդյոք մուտքը նավահանգիստներ է հայտնվել, կարող եք գործարկել ծրագիրը «lpt-test.exe».

Ծրագրի մեկնարկից հետո կհայտնվի պատուհան հետևյալ բովանդակությամբ.



«LPT պորտը փորձարկվում է (Հասցե XXXh)» հաղորդագրության բացակայությունը և հետևյալ տողերը ցույց են տալիս, որ վարորդը չի աշխատում:

Այս ծրագիրը պարզապես ուղարկում է տարբեր թվեր Dx տվյալների ռեգիստր և LPT պորտի Ux կառավարման ռեգիստր, այնուհետև կարդում դրանք: LPT պորտի Sx կարգավիճակի ռեգիստրը միայն ընթերցվում է: Էկրանը ցուցադրում է փորձարկված LPT պորտի համարը և հասցեն: Եթե ​​նավահանգիստը առողջ է, Dx և Ux ռեգիստրների համար հաղորդագրություններ չպետք է թողարկվեն:



LPT-TEST v1.03 1995-2003 Հեղինակային իրավունք (C) S.B. Alemanov. Մոսկվայի «ԲԻՆԱՐ».
Փորձարկման ընթացքում ոչ մի ծայրամասային սարք չպետք է միացված լինի նավահանգիստներին:
Dx - ռեգ. տվյալներ (դուրս), Ux - ռեգ. վերահսկողություն (դուրս), Sx - ռեգ. կարգավիճակ (inp).

Նավահանգիստ LPT1-ը փորձարկվում է (Հասցե 378h)
2-րդ կոնտակտ (D0) - ոչ «1»
3-րդ կոնտակտ (D1) - ոչ «1»
4-րդ քորոց (D2) - ոչ «1»
5-րդ քորոց (D3) - ոչ «1»
6-րդ քորոց (D4) - ոչ «1»
7-րդ կոնտակտ (D5) - ոչ «1»
8-րդ քորոց (D6) - ոչ «1»
9-րդ քորոց (D7) - ոչ «1»
1-ին կոնտակտ (U0) - ոչ «1»
14-րդ քորոց (U1) - ոչ «1»
17-րդ քորոց (U3) - ոչ «1»
1-ին կոնտակտ (U0) - ոչ «0»
14-րդ կոնտակտ (U1) - ոչ «0»
17-րդ կոնտակտ (U3) - ոչ «0»
15-րդ կոնտակտ (S3) - ոչ «0»


Եթե ​​Dx կամ Ux ռեգիստրները սխալ են, ապա ցուցադրվում է «no 0» կամ «no 1» հաղորդագրությունը և նշվում է LPT միակցիչի վրա գտնվող կոնտակտի համարը (այս կոնտակտի ազդանշանները կարելի է դիտել օսցիլոսկոպով): Ստատուսի ռեգիստրի մուտքագրումը Sx կարող է լինել կամ «0» կամ «1», բայց սովորաբար, երբ ոչինչ միացված չէ LPT պորտին, կարգավիճակի ռեգիստրի բոլոր մուտքերն ունեն «1»: Մուտքի վրա «0» կարգավիճակի ռեգիստրի հայտնվելը կարող է նշան լինել, որ մուտքագրումը կոտրված է, եթե նախկինում միշտ եղել է «1»:
Որոշ մեքենաներում, եթե տվյալների ռեգիստրը կամ կառավարման ռեգիստրը սխալ է, ապա LPT պորտին մուտքն ընդհանրապես չի հայտնվում: Ըստ երևույթին, երբ համակարգիչը միացված է, BIOS-ը փորձարկում է LPT պորտը և, եթե այն սխալ է, ապա անջատում է այն:

Եթե ​​խնդիրներ առաջանան, հնարավոր է, որ որոշ վարորդներ խանգարեն աշխատանքին՝ պարբերաբար իմպուլսներ ուղարկելով LPT պորտին (սա կարելի է տեսնել օսցիլոսկոպով): Օրինակ, տպիչի կարգավորումներում կարող եք անջատվել LPT միացքից.
անջատել LPT1. Տպիչի պորտը
միացնել Ֆայլը. տպել ֆայլի մեջ

Բոլոր խնդիրները վերացնելուց և թեստն անցնելուց հետո դուք պետք է մուտք ունենաք դեպի նավահանգիստներ և կարող եք գործարկել ծրագիրը LPT պորտի միջոցով: Հակառակ դեպքում նման մեքենայի պորտին միացված սարքը չի աշխատի:

GiveIO.sys վարորդ

Դեռևս 1996 թվականին ամերիկացի ծրագրավորող Դեյլ Ռոբերտսը մի շարք փորձեր է անցկացրել, որոնց արդյունքում վարորդը. GiveIO.sys... Մինչ այժմ այս դրայվերը մնում է հանրաճանաչ գործիքներից մեկը, որը թույլ է տալիս հավելվածի ծրագրին մուտք գործել I/O պորտեր:

Վարորդի հեղինակն ինքը խստորեն խորհուրդ է տալիս օգտագործել այս դրայվերը միայն վրիպազերծման նպատակով: Հավելվածի վերջնական տարբերակը պետք է, I/O պորտերին ինքնուրույն մուտք գործելու փոխարեն, այս հարցը վստահի հատուկ այդ նպատակով գրված վարորդին: Վարորդը պետք է իրեն «ճիշտ» պահի` ստուգելով, թե արդյոք սարքն արդեն օգտագործվում է որևէ այլ հավելվածի կողմից:

Այնուամենայնիվ, եթե դուք լիովին վստահ եք, որ ոչ ոք չի օգտագործում անհրաժեշտ I/O պորտերը (օրինակ, դուք չունեք տպիչ միացված LPT-ին), կարող եք ապահով կերպով օգտագործել GiveIO.sys դրայվերը:

Վարորդի տեղադրում:

1. Ներբեռնեք արխիվը, բացեք փաթեթավորումը և պատճենեք GiveIO.sys ֆայլը C: \ Windows \ System32 \ Drivers գրացուցակում (ենթադրելով, որ ձեր Windows-ը տեղադրված է C: \ Windows գրացուցակում):
... 2. Գործարկեք install.reg ֆայլը: Էկրանի վրա կհայտնվի հետևյալ հաղորդագրությունը.


... 3. Մենք դրական ենք պատասխանում. Այս դեպքում կհայտնվի հաղորդագրություն այն մասին, որ տեղեկատվությունը հաջողությամբ մուտքագրվել է գրանցամատյանում: Ցանկության դեպքում կարող եք համոզվել սրանում։ Գործարկեք ռեեստրի խմբագրիչը regedit.exe և մասնաճյուղում HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Ծառայություններ \ giveioստուգեք հետևյալ գրառումների առկայությունը.


... 4. Մենք վերագործարկում ենք համակարգիչը և վարորդի միջոցով ստուգում ենք ծրագրերի աշխատանքը:

Վարորդի կողմից GiveIO.sysմարդիկ ակտիվորեն օգտագործում են, և ժամանակի ընթացքում հայտնվել են և դրա տեղադրման այլ տարբերակներ.

Օրինակ՝ վարորդ GiveIO.sysեթե կա «ապարատային տեղեկատվություն» ֆայլ GiveIO.infկարող է տեղադրվել Add Hardware հավելվածի միջոցով:




Մենք GiveIO.sys դրայվերը ցույց կտանք օպերացիոն համակարգին, որպեսզի այն հավատա GiveIO սարքաշարի գոյությանը:

Ներբեռնեք մի շարք ֆայլեր վարորդի տեղադրման այս տարբերակի համար GiveIO.sys(giveio_sys_v2.rar - 78kb): Արխիվը պարունակում է GiveIO.sys և GiveIO.inf ֆայլերը, ինչպես նաև տեղադրման մանրամասն հրահանգներ նկարազարդումներով:

Ի լրումն «մեխանիկական» վարորդի տեղադրման տարբերակների, կան մի քանի տարբերակներ տեղադրողի համար, որը տեղադրում է ավտոմատ ռեժիմով:

Ներբեռնեք մի շարք ֆայլեր՝ վարորդի ավտոմատ տեղադրման համար GiveIO.sys(giveio_sys_install.rar - 28kb): Արխիվը պարունակում է GiveIO.sys և instdrv.exe ֆայլերը, ինչպես նաև remove-giveio.cmd ֆայլը, որով վարորդը GiveIO.sysկարող է հեռացվել համակարգից:

Port95nt վարորդ

Տերմին " վարորդ Port95nt «Այստեղ լիովին ճիշտ չի լինի: Փաստորեն, սա նույն դրայվերն է DLPortIOփաթեթից ՎարորդLINX-ից Scientific Software Tools, Inc, միայն ամբողջական տարբերակով, մի երկու նավահանգիստների կառավարման կոմունալ ծառայություններով, նկարագրություններով և բազմաթիվ օրինակներով ծրագրավորողների համար։ Սովորական օգտագործողի համար լրացուցիչ բաղադրիչներից ոչ մի օգուտ չկա, և DLPortIO.sys և DLPortIO.dll վարորդի բաղադրիչները բացարձակապես նույնն են, ինչ կրճատված տարբերակում:

Port95nt-ը որպես վարորդ նշել է երկու պատճառով. Առաջինը նախատեսված է ինտերնետում հայտնաբերված LPT նավահանգիստների վարորդների հղումների ցանկի ամբողջականության համար:

Երկրորդ պատճառն այն է, որ որոշ դեպքերում կարող են խնդիրներ առաջանալ WinXP-ի տակ DLPortIO-ի կրճատված տարբերակի տեղադրման հետ կապված: Սովորաբար, բայց հազվադեպ, դա տեղի է ունենում մերկացված «հեղինակային» WinXP build-ներում: Այս դեպքում կարող եք վերցնել տեղադրողի ամբողջական տարբերակը (1,5 ՄԲ): Չնայած, իմ կարծիքով, ավելի արագ կլինի DLPortIO.sys-ը և DLPortIO.dll-ը ձեռքով տեղադրել պահանջվող թղթապանակում, քան անհանգստանալ տեղադրողի ընտրությամբ, որը կարող է դա անել ձեզ համար:

Լրացուցիչ միջոցներ

Բացի վերը նշված դրայվերներից մեկը տեղադրելուց, WinXP OS-ով LPT պորտի նորմալ գործարկման համար անհրաժեշտ է խմբագրել ռեեստրը՝ օգտագործելով REG ֆայլը: xp_stop_polling.reg(xp_stop_polling.rar - 0,48 կբ)

Երբեմն LPT պորտն օգտագործող սարքերն անկայուն են աշխատում WinXP-ի ներքո: Նման ձախողումների պատճառ կարող է լինել «Plug-and-Play» (PnP) ենթահամակարգը Windows-ում, որը պարբերաբար հարցումներ է անցկացնում LPT-ում՝ միացված սարքերը հայտնաբերելու համար: Նման հարցումը կատարվում է, երբ համակարգը բեռնվում է, բայց դա կարող է առաջանալ նաև շահագործման ընթացքում: Ցավոք, DLportIO.sys դրայվերը և վարորդների այլ տարբերակները չեն արգելափակում մուտքը դեպի LPT այլ ծրագրերից այս վարորդի հաճախորդի պորտի հետ աշխատելիս, և PnP ենթահամակարգը վստահ է, որ նավահանգիստը զբաղված չէ, հասցեագրում է այն և խաթարում է դրա աշխատանքը: արտաքին սարքեր. REG ֆայլն օգտագործվում է խնդիրը շտկելու համար: xp_stop_polling.reg... Այս ֆայլը Windows ռեեստրում գրում է բանալի, որն արգելում է նման հարցումը, երբ համակարգը աշխատում է:

Վարորդը տեղադրելուց և ծրագրերի համար միաժամանակյա մուտքը դեպի նավահանգիստ սահմանափակելուց, LPT պորտով սարքավորումների ապարատային համատեղելիությունն ու նորմալ շահագործումն ապահովելու համար անհրաժեշտ է տեղադրել BIOS-ում ճիշտ հասցեև նավահանգստի աշխատանքային ռեժիմ(«Նորմալ», SPP կամ EPP, բայց ոչ ECP):

Հետևյալ պարամետրերը ենթակա են կազմաձևման BIOS Setup-ի միջոցով.

Բազային հասցեն, որը կարող է լինել 378h, 278h և 3BCh: Նախաստորագրման ընթացքում BIOS-ը ստուգում է նավահանգիստների առկայությունը ըստ հասցեների այս հերթականությամբ և, համապատասխանաբար, հայտնաբերված նավահանգիստներին վերագրում է LPT1, LPT2, LPT3 տրամաբանական անունները: 3BCh հասցեն ունի պորտի ադապտեր, որը գտնվում է MDA կամ HGC տախտակի վրա (ժամանակակից գրաֆիկական քարտերի նախորդները): Նավահանգիստների մեծ մասը կազմաձևված է որպես լռելյայն 378h հասցե և կարող է փոխարկվել 278h:

Ընդհատման հարցման գիծը օգտագործվում է LPT1-ի համար սովորաբար IRQ7 է, LPT2-ի համար՝ IRQ5: Շատ «desktop» հավելվածներ չեն օգտագործում տպիչի ընդհատումներ, և համակարգչի այս սակավ ռեսուրսը կարող է պահպանվել: Այնուամենայնիվ, ECP (Fast Centronics) բարձր արագության ռեժիմների օգտագործման դեպքում ընդհատման աշխատանքը կարող է զգալիորեն բարելավել աշխատանքը և նվազեցնել պրոցեսորի ծանրաբեռնվածությունը:

Միևնույն ժամանակ, ECP ռեժիմը չի կարող օգտագործվել այնպիսի սարքերի հետ, որոնք պահանջում են սեղմ ժամկետներ (ծրագրավորողներ և JTAG միջերեսներ):

Եզրափակելով, մի փոքր տերմինաբանության մասին:

. SPP(Ստանդարտ զուգահեռ նավահանգիստ): Հաճախ, հասկանալու համար, BIOS-ում «նշվում է տերմինով» Նորմալ".
. ԵԺԿ(Enhanced Parallel Port) ինտերֆեյսի բարձր արագությամբ երկկողմանի տարբերակ է: Փոխեց որոշ ազդանշանների նպատակը, ներկայացրեց մի քանի տրամաբանական սարքեր հասցեագրելու և 8-բիթանոց տվյալների մուտքագրման հնարավորություն, 16 բայթ ապարատային FIFO բուֆեր: Առավելագույն փոխարժեքը մինչև 2 Մբ/վ է:
. ECP(Enhanced Capability Port) խելացի EPP տարբերակ է: Ներկայացրեց փոխանցված տեղեկատվությունը հրամանների և տվյալների բաժանելու հնարավորությունը, DMA-ի աջակցություն և փոխանցված տվյալների սեղմում RLE մեթոդով (Run-Length Encoding - կրկնվող շարքերի կոդավորում):


Այսպիսով, եկեք դիտարկենք Windows NT-ում I/O պորտերի հետ աշխատելու հետևյալ տարբերակը: Այս «տարբերակը» կլինի հատուկ դրայվեր GiveIO.sysորը թույլ է տալիս այն գործարկած հավելվածին ազատորեն աշխատել ցանկացած նավահանգիստներում: Այս վարորդը գրել է Դեյլ ՌոբերտսԱստված գիտի, թե երբ, բայց դա մինչ այժմ չի կորցրել իր արդիականությունը։



Ես հակիրճ կասեմ ձեզ, թե ինչպես է այն աշխատում. նավահանգիստների հետ հաղորդակցվելու մեր ծրագրի սկզբում դուք պետք է կապվեք վարորդի հետ GiveIO.sys... Դրանով նա կսահմանի I/O թույլտվության քարտեզի համակարգի bitmap-ը մեր հավելվածի համար, որպեսզի նրան թույլատրվի ուղղակի մուտք դեպի ցանկացած նավահանգիստ: I / O թույլտվության քարտեզ Windows NT I/O պաշտպանության համակարգի անբաժանելի մասն է: Դա bitmap է, որի յուրաքանչյուր բիթ համապատասխանում է I/O պորտին: Եթե ​​բիթ = 1, ապա մուտքը դեպի նավահանգիստ փակ է, եթե 0, ապա այն բաց է: Օգտատիրոջ ցանկացած հավելվածի համար բոլոր բիթերը դրված են 1-ի, և, հետևաբար, մենք չենք կարող ուղղակիորեն միջամտել նավահանգստի աշխատանքին: GiveIO.sys-ը լկտիորեն «տեղավորվում է» այս զանգվածի մեջ և ամենուր սահմանում է 0, այսինքն. մենք հավելվածից ցանկացած պորտ մուտք գործելու հնարավորություն ենք ստանում:



Նախ, ներբեռնեք արխիվը վարորդով և տեղադրման ֆայլով.


Այժմ մենք պետք է գրանցենք և տեղադրենք վարորդը համակարգում: Դա անելու համար դուք պետք է կատարեք մի շարք գործողություններ: Նախ, պատճենեք վարորդի ֆայլը GIVEIO.sysդեպի C թղթապանակ: \ Windows \ system32 \ drivers \ եթե, իհարկե, դուք ունեք համակարգը տեղադրված սկավառակի վրա ՀԵՏ՝\և դուք չեք փոխել Windows-ի տեղադրման ուղիները:

Հրել Այո՛... Այս դեպքում դուք կստանաք հաղորդագրություն գրանցամատյանում տեղեկատվության հաջող մուտքի մասին: Սրանում կարելի է համոզվել։ Ռեեստրի խմբագրում regedit.exeմասնաճյուղում HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Ծառայություններ \ giveioկարող եք տեսնել հետևյալը.

Որպեսզի մեր կողմից կատարված փոփոխություններն ուժի մեջ մտնեն, ՀԱՄԱԿԱՐԳԻ ՎԵՐԱՍկսելը պարտադիր է։


Ժամանակն է սկսել ծրագրավորումը։ Մեր ծրագրի կոդի մեջ Port.exe(տես) եկեք որոշ փոփոխություններ կատարենք, որոնք թույլ կտան մուտք գործել նավահանգիստներ ոչ միայն Windows 9x-ում, ինչպես նախկինում էր, այլ նաև Windows NT-ում: Արդյունքում ծածկագիրը կունենա հետևյալ տեսքը.

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

Ամեն ինչ. Կազմել, գործարկել: Սեղմեք 1-0. ամեն ինչ պետք է աշխատի: Եթե ​​հաղորդագրությունը հայտնվում է Սխալ. Հնարավոր չէ բացել վարորդը: Սեղմեք ցանկացած ստեղն՝ դուրս գալու համար…, ապա վարորդի տեղադրումն անհաջող էր և պետք է նորից տեղադրվի:

Շնորհիվ giveio.sysՀետևյալ assembler տառերը նույնպես հաջողությամբ կաշխատեն.

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

© Դմիտրի Իվանով
2005-2006

Նորություն կայքում

>

Ամենահայտնի