ផ្ទះ ផ្កាមានអាយុច្រើនឆ្នាំ កម្មវិធីបញ្ជាសម្រាប់ធ្វើការជាមួយច្រក lpt ។ ច្រក (COM និង LPT) ។ ការដំឡើងកម្មវិធីបញ្ជាសម្រាប់ធ្វើការជាមួយច្រក LPT

កម្មវិធីបញ្ជាសម្រាប់ធ្វើការជាមួយច្រក lpt ។ ច្រក (COM និង LPT) ។ ការដំឡើងកម្មវិធីបញ្ជាសម្រាប់ធ្វើការជាមួយច្រក LPT

Cooltek បានដាក់បង្ហាញផលិតផលថ្មីមួយទៀតនៅលើទីផ្សារ - ករណីពាក់កណ្តាលប៉មដែលមានឈ្មោះថា GT-04 ។ ម៉ូដែលនេះរួមបញ្ចូលគ្នានូវលក្ខណៈពិសេសដូចជាមុខងារ ergonomics ការរចនាទាន់សម័យ និងតម្លៃដ៏គួរឱ្យទាក់ទាញ (59.99 អឺរ៉ូ) ។ តួត្រូវបានបញ្ចប់ជាពណ៌ខ្មៅទាំងអស់ជាមួយនឹងការសង្កត់សំឡេងពណ៌ទឹកក្រូច/បៃតងភ្លឺនៅលើបន្ទះខាងមុខ។ វាក៏មានកន្ត្រកមួយគូសម្រាប់ដ្រាយវ៍អុបទិក 5.25 អ៊ីង ក៏ដូចជាបន្ទប់សម្រាប់ដ្រាយ 3.5 អ៊ីញផងដែរ។

ករណី Cooltek GT-04 (ពណ៌ទឹកក្រូច/បៃតង) ត្រូវបានបំពាក់ដោយបង្អួចចំហៀងដែលផ្តល់នូវទិដ្ឋភាពនៃសមាសធាតុប្រព័ន្ធ។ ...

ក្រុមហ៊ុន Kingston Technology ដែលជាក្រុមហ៊ុនផលិតអង្គចងចាំកុំព្យូទ័រឈានមុខគេដែលមានប្រវត្តិជោគជ័យលើទីផ្សារដ៏យូរអង្វែងបានប្រកាសចេញនូវម៉ូឌុលអង្គចងចាំថ្មីដើម្បីអបអរសាទរខួបលើកទី 10 នៃខ្សែផលិតផល HyperX ។ លក្ខណៈពិសេសគួរឱ្យកត់សម្គាល់នៃផលិតផលថ្មីគឺពណ៌ខ្មៅ បន្ទះសៀគ្វីដែលបានបោះពុម្ពដែលប្រើនៅក្នុងគ្រួសារ HyperX និង HyperX Beast ក៏ដូចជាវត្តមានរបស់ឧបករណ៍បំពងកំដៅតែមួយគត់ដែលធ្វើអោយប្រសើរឡើងនូវការបញ្ចេញកំដៅ។

ស៊េរី HyperX Beast ជាមួយនឹង PCB ពណ៌ខ្មៅ ដែលជាផ្នែកមួយនៃខ្សែ Predator ត្រូវបានកំណត់លក្ខណៈដោយសមត្ថភាពដ៏ធំ និងប្រេកង់ប្រតិបត្តិការអតិបរមា។ នៅក្នុងការលក់រាយ ម៉ូឌុល...

ផ្តាច់មុខសម្រាប់អ្នកគាំទ្រនៃការដំឡើងប្រព័ន្ធពីសមាសធាតុព្រិលពណ៌ស អង្គការ CORSAIR បានបន្ថែមយន្តការនៅក្នុងពណ៌នេះទៅនឹងការផ្គត់ផ្គង់ថាមពលស៊េរី CORSAIR RMx ដ៏ល្បីល្បាញ។ បន្ថែមពីលើតួនៃប្រភពខ្លួនវាផ្ទាល់។ ពណ៌សបានទទួលខ្សែម៉ូឌុលយ៉ាងពេញលេញ ហើយវត្តមាននៃសមាសធាតុខ្មៅមួយចំនួនតូចផ្តល់នូវរូបរាងទាន់សម័យចំពោះយន្តការថ្មី ដោយសង្កត់ធ្ងន់លើភាពផ្ទុយគ្នា។

វ៉ារ្យ៉ង់ទាំងអស់នៃខ្សែ CORSAIR RMx White មានមូលដ្ឋានធាតុដែលមានគុណភាពខ្ពស់ (រួមទាំងការប្រើប្រាស់ឧបករណ៍បំប្លែងសីតុណ្ហភាពខ្ពស់របស់ជប៉ុនសុទ្ធសាធ...

បញ្ហានេះត្រូវបានប្រឈមមុខដោយអ្នកគ្រប់គ្នាដែលព្យាយាមភ្ជាប់ឧបករណ៍ណាមួយទៅកាន់ច្រក LPT ។ ដរាបណាអ្នកប្រាប់កម្មវិធីថា "ប្រើ LPT" អ្នកនឹងទទួលបានកំហុស - វាត្រូវបានឆ្លុះបញ្ចាំងនៅក្នុងរូបថតអេក្រង់នៅខាងស្តាំ។ ដូច្នេះ ចូរ​យើង​ព្យាយាម​ដោះស្រាយ​វា​ចេញ។

ខ្ញុំបានជួបប្រទះវានៅពេលដែលខ្ញុំបានបន្ថែមបន្ទះឧបករណ៍បញ្ជាដែលមានច្រក 1-LPT និង 2-COM ។ មានតម្រូវការច្បាស់លាស់សម្រាប់រឿងនេះ - ការភ្ជាប់ Band-decoder RU-005A ។ នេះនឹងត្រូវបានពិភាក្សានៅក្នុងអត្ថបទបន្ទាប់។ ក្នុងពេលនេះ ខ្ញុំចង់ទទួលបាន LPT -port ដែលដំណើរការត្រឹមត្រូវក្នុង Win -Test ក្រោម Windows -7 (64 bit)។

កុំព្យូទ័រទំនើបមិនមានច្រកប៉ារ៉ាឡែលសម្រាប់ពេលខ្លះ។ ជាជម្រើសអ្នកអាចដំឡើងឧបករណ៍បញ្ជាបន្ថែមនៅក្នុងវា។ កុំខ្លាចពាក្យនេះ គ្មានអ្វីគួរឱ្យខ្លាចនៅក្នុងវាទេ។ មូលហេតុដែលកំហុសខាងលើកើតឡើងគឺសាមញ្ញ - កម្មវិធីបញ្ជា និងបណ្ណាល័យ DriverLINX (DLPortIO.sys + DLPortIO.dll) មិនមានសម្រាប់ កំណែវីនដូសម្រាប់ស្ថាបត្យកម្ម x86-64 (AMD64, Intel64) ។ អ្នកអភិវឌ្ឍន៍ Scientific Software Tools Inc បានឈប់គាំទ្រកម្មវិធីបញ្ជា ដោយផ្ទេរវាទៅក្រុមហ៊ុនមួយផ្សេងទៀត ហើយពួកគេបានឈប់ត្រឹមកំណែ 32 ប៊ីតប៉ុណ្ណោះ។ Microsoft គ្រវីក្បាល ហើយផ្ញើវាទៅក្រុមហ៊ុនផលិត។ ទោះយ៉ាងណាក៏ដោយមានឧបករណ៍ដ៏ល្អមួយ - នេះគឺជា InpOut32 (hwinterface.sys+inpout32.dll) និងសូម្បីតែកំណែ 64 ប៊ីតនៃ InpOutx64 ជាមួយនឹងកម្មវិធីបញ្ជា hwinterfacex64.sys ។

ចូរយើងផ្លាស់ប្តូរពីទ្រឹស្តីទៅការអនុវត្តជាក់ស្តែង។ នៅ​ក្នុង​ស្តុក:

  • កំណែ Win-Test 4.10, បានធ្វើបច្ចុប្បន្នភាពដើម្បីចេញផ្សាយការពិនិត្យឡើងវិញ: 524 ពី 13-Jul-2013 ។
  • Windows 7 Ultimate (64 ប៊ីត) ជាមួយនឹងការអាប់ដេតទាំងអស់។
  • Intel Core i7-3770 (3.4 GHz) + PC3-10700 (667 MHz) 8x2=16 Gb + Asus P8Z77-V LX
  • ឧបករណ៍បញ្ជា * PCI COM/LPT (2+1) ច្រក WCH353 ភាគច្រើន

ការដំឡើងឧបករណ៍បញ្ជា

ឧបករណ៍បញ្ជាខ្លួនឯងមិនមានអ្វីគួរឱ្យចាប់អារម្មណ៍នៅក្នុងខ្លឹមសារទេហើយឈ្មោះរបស់វាផ្តល់នូវគំនិតស្ទើរតែទាំងស្រុង - ច្រក COM ពីរនិងច្រក LPT មួយវាត្រូវបានតំឡើងនៅក្នុង PCI ។ ឧបករណ៍ខ្លួនវាមានតំលៃថោកហើយមានតម្លៃ 360 រូប្លិ (ប្រហែល 12 ដុល្លារ) ផលិតនៅប្រទេសចិន។

ការវេចខ្ចប់គឺ OEM ។ ឧបករណ៍នេះរួមបញ្ចូលទាំងខ្សែពីរដែលមានច្រក COM នៅលើតង្កៀបនិងថាសមួយដែលមានកម្មវិធីបញ្ជាដែលបានសន្មត់។ ខ្ញុំ​មិន​បាន​ដំឡើង​ពួក​វា​ទេ ខ្ញុំ​ដឹង​ជា​មុន​ហើយ​ថា​វា​មិន​សម។ ផ្លូវទាំងអស់បាននាំទៅដល់គេហទំព័ររបស់អ្នកផលិត។ ក្នុង​ករណី​នេះ ខ្ញុំ​កំពុង​ផ្តល់​តំណ និង​បង្ហោះ​កម្មវិធី​បញ្ជា​ដូចគ្នា​ក្នុង​បណ្ណសារ។


នីតិវិធីដំឡើងឧបករណ៍បញ្ជាមិនបណ្តាលឱ្យមានបញ្ហាអ្វីទេ - អ្វីគ្រប់យ៉ាងគឺសាមញ្ញណាស់។ បិទកុំព្យូទ័រ ដំឡើងវាក្នុងរន្ធ PCI ឥតគិតថ្លៃ បើកវា ដំឡើងកម្មវិធីបញ្ជា។ កញ្ចប់រួមបញ្ចូលកម្មវិធីដំឡើង។ ចំណុចប្រទាក់របស់វាមិនស្មុគស្មាញ និងអាចយល់បាន។ សម្រាប់ខ្ញុំ អ្វីគ្រប់យ៉ាងបានឆ្លងកាត់ការរកឃើញដោយស្វ័យប្រវត្តិនៃប្រភេទកាត ហើយអ្វីដែលខ្ញុំត្រូវធ្វើគឺចុចដំឡើងកម្មវិធីបញ្ជា។ ដំណើរការដំឡើងត្រូវបានអមដោយរបារផ្លាស់ទីនៅលើចំណុចប្រទាក់អ្វីគ្រប់យ៉ាងគឺច្បាស់ណាស់។

កម្មវិធីអនុញ្ញាតឱ្យអ្នកកំណត់ច្រកឡើងវិញប្រសិនបើចាំបាច់។ ឧទាហរណ៍ប្រសិនបើមានច្រក COM និម្មិត។ ដើម្បីធ្វើដូចនេះបន្ទាប់ពីដំឡើងរួចចុចលើប៊ូតុង អំពី និងកែសម្រួលឈ្មោះច្រក។

រូបថតអេក្រង់ខាងលើមិនត្រូវការយោបល់ពិសេសទេ ចុចហើយរូបភាពនឹងកាន់តែធំ។ អ្វីគ្រប់យ៉ាងគឺស្ថិតនៅក្នុងដៃរបស់អ្នក - កំណត់រចនាសម្ព័ន្ធច្រកថ្មីដែលលេចឡើងតាមការសំរេចចិត្តរបស់អ្នកនិងស្របតាមតម្រូវការរបស់អ្នក។

ភស្តុតាងចុងក្រោយដែលថាការដំឡើងបានជោគជ័យគួរតែជាវត្តមានរបស់ឧបករណ៍ទាំងនេះនៅក្នុងកម្មវិធីគ្រប់គ្រងឧបករណ៍នៅលើកុំព្យូទ័រ។ ទៅទីនោះហើយពិនិត្យមើល។ ក្នុងករណីរបស់ខ្ញុំ motherboard មានច្រក COM រួមបញ្ចូលគ្នារួចហើយ (ល្អ .. ខ្ញុំត្រូវការវា) ។ ដូច្នោះហើយបញ្ជីច្រកចេញដូចនេះ៖

វាអាចទៅរួចដែលអ្នកនឹងត្រូវដឹងពីអាសយដ្ឋាននៃច្រកនេះ ហើយបញ្ជាក់វាឱ្យបានត្រឹមត្រូវនៅក្នុងការកំណត់នៃកម្មវិធីដែលច្រកនេះនឹងត្រូវបានប្រើ។ តាមលំនាំដើម អាសយដ្ឋានច្រកគួរតែមានដូចខាងក្រោម៖

LPT -1 - 378

LPT-2 - 278

LPT -3 - 3BC

ក្នុងករណីរបស់យើងពួកគេនឹងខុសគ្នាពីតម្លៃធម្មតាព្រោះ ច្រកទាំងនេះមិនត្រូវបានរួមបញ្ចូលនៅលើ motherboard ហើយវិធីដើម្បីទំនាក់ទំនងជាមួយពួកគេគឺតាមរយៈឡានក្រុង PCI ។ នៅក្នុងកំណែរបស់ខ្ញុំវាដំណើរការ D010(យើងប្រើតម្លៃទីមួយ)។ ដូច្នេះ មុននឹងដំឡើង (ទិញ) ឧបករណ៍បញ្ជាបែបនេះ សូមមើលថាតើកម្មវិធីរបស់អ្នកមានសមត្ថភាពក្នុងការកំណត់ជួរ I/O ផ្សេងទៀត។

ទោះជាយ៉ាងណាក៏ដោយអ្នកបើកបររួមបញ្ចូលឧបករណ៍ប្រើប្រាស់តូចមួយដែលអនុញ្ញាតឱ្យអ្នកកំណត់អាសយដ្ឋានបែបនេះឡើងវិញ (ខ្ញុំមិនបានដោះស្រាយវាទេវាមិនចាំបាច់ទេ) ។

ប្រហែល 10-15 ឆ្នាំមុន ច្រកប៉ារ៉ាឡែលគឺជាចំណុចប្រទាក់ដ៏ពេញនិយមសម្រាប់ការទំនាក់ទំនងរវាងឧបករណ៍។ សព្វថ្ងៃនេះក្រុមហ៊ុនផលិត ឧបករណ៍ផ្សេងៗផ្តល់ចំណូលចិត្តដល់ចំណុចប្រទាក់សៀរៀល។ ទោះជាយ៉ាងណាក៏ដោយសព្វថ្ងៃនេះច្រក LPT នៅតែអាចរកឃើញ។ ហើយអ្នកអភិវឌ្ឍន៍ខ្លះនៅតែសរសេរកម្មវិធីសម្រាប់វា (ឬគាំទ្រអ្នកដែលសរសេរក្នុងអំឡុងពេលដ៏រុងរឿងនៃចំណុចប្រទាក់ប៉ារ៉ាឡែល)។ ប៉ុន្តែនៅក្នុងកុំព្យូទ័រឥឡូវនេះច្រក LPT គឺគ្រប់គ្រាន់ហើយ។ កម្រណាស់។. ជាការពិតណាស់មានកាតពង្រីកកុំព្យូទ័រដែលអនុវត្តចំណុចប្រទាក់ LPT ។ ពួកវាជាមូលដ្ឋាន PCI busboards ។ ជាអកុសល មិនមែនកម្មវិធីទាំងអស់ដែលត្រូវបានសរសេរសម្រាប់រួមបញ្ចូលនោះទេ។ motherboardច្រក LPT នឹងដំណើរការជាមួយកាត LPT-PCI ។

ដំណោះស្រាយចំពោះបញ្ហានេះត្រូវបានស្នើឡើង៖ ថ្នាក់កម្មវិធីដែលសរសេរក្រោម .NET និងបណ្ណាល័យថាមវន្តដែលដំណើរការជាមួយ LPT ។ ការអនុវត្តនេះត្រូវបានសាកល្បងនៅលើ 32- និង 64-bit Windows XP, Windows 7, 8 និង 10 ទាំងពីរជាមួយនឹងច្រក LPT ដែលភ្ជាប់មកជាមួយ និងបានអនុវត្តជាកាតពង្រីកនៅលើឡានក្រុង PCI ឬ PCI-Express ។ អ្នកអាចទាញយកកម្មវិធីបញ្ជាសម្រាប់ច្រក LPT ពីតំណខាងក្រោមបន្ទាប់ពីអត្ថបទ។

1 ការដំឡើងកម្មវិធីបញ្ជាសម្រាប់ធ្វើការជាមួយច្រក LPT

ប័ណ្ណសារដែលបានភ្ជាប់មានថតពីរ - សម្រាប់កំណែ 32 ប៊ីត និង 64 ប៊ីតរបស់វីនដូ។ មានឯកសារមួយនៅក្នុងថតមួយ។ ដំឡើងDriver.exe. ដំបូងដំណើរការឯកសារនេះ វានឹងដំឡើងបណ្ណាល័យថាមវន្តនៅលើប្រព័ន្ធ។ បន្ទាប់ពីនេះកុំព្យូទ័រគួរតែត្រូវបានចាប់ផ្តើមឡើងវិញ។

ដើម្បីប្រើកម្មវិធីបញ្ជាដែលបានស្នើ ឯកសារ inpout32.dllនិង inpoutx64.dllត្រូវតែមានទីតាំងនៅក្នុងថតដូចគ្នានឹងឯកសារដែលអាចប្រតិបត្តិបាននៃកម្មវិធីរបស់អ្នក។

2 ថ្នាក់កម្មវិធីសម្រាប់ប្រើបណ្ណាល័យធ្វើការជាមួយច្រក LPT

ខ្ញុំបានសរសេរថ្នាក់សម្រាប់ .NET ដែលប្រើបណ្ណាល័យថាមវន្ត inpout32.dllនិង inpoutx64.dllនិងអនុញ្ញាតឱ្យអ្នកអានទិន្នន័យពីច្រកប៉ារ៉ាឡែល និងសរសេរទិន្នន័យទៅកាន់បញ្ជីឈ្មោះរបស់វា។

បណ្ណាល័យ​ដែល​បាន​លើក​ឡើង​មិន​ត្រូវ​បាន​សរសេរ​ដោយ​ខ្ញុំ​ទេ។ ខ្ញុំផ្តល់ជូននូវថ្នាក់រុំងាយស្រួលដែលជួយសម្រួលដល់ការធ្វើការជាមួយបណ្ណាល័យទាំងនេះ។ លើសពីនេះទៀតអ្នកនិពន្ធនៃបណ្ណាល័យនៅក្នុងឯកសារ readme.txtរាយការណ៍ថាកម្មវិធីបញ្ជារបស់វាមិនគាំទ្រឧបករណ៍ PCI ទេ។ ខ្ញុំបានគ្រប់គ្រងដើម្បីឱ្យវាដំណើរការជាមួយទាំងច្រកប៉ារ៉ាឡែលរួមបញ្ចូលគ្នា និងច្រក LPT ដែលត្រូវបានអនុវត្តជាកាតពង្រីកនៅលើឡានក្រុង PCI-Express ។ ជាងនេះទៅទៀត ច្រកដំណើរការយ៉ាងល្អឥតខ្ចោះទាំងលើប្រព័ន្ធ Windows10 x64 ទំនើប និងប្រព័ន្ធចាស់ជាងនេះ។

នេះគឺជាកូដសម្រាប់ថ្នាក់ LPT នៅក្នុង VB.NET៖

កូដថ្នាក់ LPT ជាភាសា VB.NET(ពង្រីក) នាំចូល 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" """ """ការចុះឈ្មោះច្រកប៉ារ៉ាឡែល។ """ Public Enum ចុះឈ្មោះជាចំនួនគត់ """ """ការចុះឈ្មោះទិន្នន័យ SPP/EPP ។ """ទិន្នន័យ = 0 """ """ការចុះឈ្មោះស្ថានភាព SPP/EPP ។ """ស្ថានភាព = ទិន្នន័យ + 1 """ """ការចុះឈ្មោះគ្រប់គ្រង SPP/EPP ។ """ CONTROL = ទិន្នន័យ + 2 """ """ការចុះឈ្មោះអាសយដ្ឋាន EPP ។ ការអាន ឬសរសេរទៅវាបង្កើតវដ្តនៃការអាន ឬសរសេរដែលទាក់ទងនៃអាសយដ្ឋាន EPP ។ """ EPP_ADDRESS = ទិន្នន័យ + 3 """ "" "ការចុះឈ្មោះទិន្នន័យ EPP ។ អាន (សរសេរ) បង្កើតវដ្តនៃការអាន (សរសេរ) ទិន្នន័យ EPP ដែលពាក់ព័ន្ធ។ "" EPP_DATA = ទិន្នន័យ + 4 """ """ការចុះឈ្មោះធ្វើឱ្យសកម្មរបៀប EPP ។ """ """ """ ប្រសិនបើគ្រាន់តែលាយ "ECP+EPP" ឬ "Extended" - ទំនងជាអ្នកក៏នឹងត្រូវសរសេរបៃ 0x80 ទៅច្រក ECR """ (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) ជាមុខងារបញ្ចប់ដោយបៃ Private Shared Sub Out32(portAddress As UInt32, data As UInt32) End Sub មុខងារចែករំលែកឯកជន Inp64(PortAddress As UInt64) ជាមុខងារបញ្ចប់បៃ Private Shared Sub Out64(PortAddress As UInt64, Data As UInt64) End Sub #End Region "/DllImport #Region "CTOR" """ "" ពិនិត្យមើលថាតើអាចប្រើកម្មវិធីបញ្ជា x86 ឬ x64 ដែរឬទេ។ ប្រសិនបើមិនមានទេ បោះចោលករណីលើកលែង """ """ Shared Sub New() Dim x86 As Boolean = CheckIsDriverX86() Dim x64 As Boolean = CheckIsDriverX64() ប្រសិនបើ x64 បន្ទាប់មក _IsX64DriverUsed = True ElseIf x86 បន្ទាប់មក _IsX64DriverUsed = False Else ត្រូវបានដំឡើង ច្រកប្រព័ន្ធថ្មី ) End If End Sub """ """ ការចាប់ផ្ដើមច្រក - ការកំណត់ 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 ត្រូវបានបញ្ជូនត្រឡប់មកវិញ។ """ Public Shared ReadOnly Property IsX64DriverUsed as Boolean? Get Return _IsX64DriverUsed End Get End Property Private Shared ReadOnly _IsX64DriverUsed As Boolean? = Nothing #End Region "/PROPS #Region "METHODS" """ """កំណត់ថាតើអ្នកបើកបរគឺ 32 ប៊ីត។ """មុខងារចែករំលែកឯកជន CheckIsDriverX86() As Boolean Try Dim res As Byte = IsInpOutDriverOpen() ត្រឡប់ True Catch ex ជា Exception ត្រឡប់ False End សាកល្បងមុខងារបញ្ចប់ """ """កំណត់ថាតើអ្នកបើកបរគឺ 64 ប៊ីត។ """មុខងារចែករំលែកឯកជន CheckIsDriverX64() As Boolean Try Dim nResult As ULong = IsInpOutDriverOpen_x64() ត្រឡប់ (nResult<>0) Catch ex As Exception ត្រឡប់ False End សាកល្បងអនុគមន៍ #End Region "/METHODS #Region "Read/Write LPT Port" """ """អានទិន្នន័យ 1 បៃពីការចុះឈ្មោះច្រក LPT ដែលបានបញ្ជាក់។ """ """ លេខច្រក។ """ ការចុះឈ្មោះច្រក។មុខងារចែករំលែកសាធារណៈ Read(port As ULong, Optional 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) ) )) បញ្ចប់ ប្រសិនបើត្រឡប់ទិន្នន័យ មុខងារបញ្ចប់ """ """សរសេរលេខទៅចុះឈ្មោះច្រក LPT ដែលបានបញ្ជាក់។ """ """ អាសយដ្ឋានច្រក។ """ ការចុះឈ្មោះច្រក។ """ Public Shared Sub Write(port As ULong, reg As Register, data As ULong) ប្រសិនបើ 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 """ """សាកល្បងវត្តមាននៃច្រក LPT នៅអាសយដ្ឋានដែលបានផ្តល់ឱ្យ។ """ """ អាសយដ្ឋានច្រកប៉ារ៉ាឡែល។មុខងារចែករំលែកសាធារណៈ CheckPortPresent(lptAddress As ULong) As Boolean Dim portPresent As Boolean = False Try InitLpt(lptAddress) Dim data As ULong = Read(lptAddress, Register.DATA) "រក្សាទុកតម្លៃបច្ចុប្បន្ននៃការចុះឈ្មោះទិន្នន័យ" តោះពិនិត្យមើល៖ តើអ្វីជា សរសេរក៏ត្រូវបានអានដែរ? Write(lptAddress, Register.DATA, &H0) portPresent = portPresent និង (&H0 = Read(lptAddress, Register.DATA)) សរសេរ(lptAddress, Register.DATA, &H55) portPresent = portPresent និង (&H55 = Read(lptAddress, Register.DATA )) Write(lptAddress, Register.DATA, &HAA) portPresent = portPresent And (&HAA = Read(lptAddress, Register.DATA)) Write(lptAddress, Register.DATA, data) "ស្តារតម្លៃពីមុននៃការចុះឈ្មោះទិន្នន័យ" ពិនិត្យមើល វត្តមាននៃការចុះឈ្មោះត្រួតពិនិត្យ និងទិន្នន័យ ប្រសិនបើច្រកមិនត្រូវបានរកឃើញ (ក្នុងករណីច្រក unidirectional) ប្រសិនបើ (Not portPresent) បន្ទាប់មក data = Read(lptAddress, Register.CONTROL) portPresent = ((data<>0) និងផងដែរ (ទិន្នន័យ<>&HFF)) "មិនទទេ? => ច្រកមានវត្តមាន។ ប្រសិនបើ (Not portPresent) បន្ទាប់មក data = Read(lptAddress, Register.STATUS) portPresent = ((data<>0) និងផងដែរ (ទិន្នន័យ<>&HFF)) End If End ប្រសិនបើ Catch ex As Exception Return False End សាកល្បង Return portPresent End Function End Class "/LPT

កូដថ្នាក់ LPT ក្នុង C#៖

កូដថ្នាក់ LPT ក្នុង C#(ពង្រីក) ដោយប្រើប្រព័ន្ធ; ដោយប្រើ System.Diagnostics; ការប្រើប្រាស់ System.Runtime.InteropServices; namespace 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; ) else (ប្រសិនបើ (!LPT.getIsDriverX64()) បោះ SystemException ថ្មី("កម្មវិធីបញ្ជាសម្រាប់ច្រក LPT មិនត្រូវបានដំឡើង។"); LPT._IsX64DriverUsed = true; ) ) public LPT() ( ) private static extern byte IsInpOutDriverOpen(); ឯកជន ឋិតិវន្ត extern ulong IsInpOutDriverOpen_x64(); បៃបៃខាងក្រៅឋិតិវន្តឯកជន Inp32(uint PortAddress); ទុកជាមោឃៈផ្នែកខាងក្រៅ ឋិតិវន្តឯកជន Out32(អាសយដ្ឋានអាសយដ្ឋាន ទិន្នន័យ uint); បៃបៃខាងក្រៅឋិតិវន្តឯកជន Inp64 (អាសយដ្ឋាន PortAddress); ទុកជាមោឃៈផ្នែកខាងក្រៅ ឋិតិវន្តឯកជន Out64 (អាសយដ្ឋានច្រក ulong ទិន្នន័យ ulong); /// កំណត់ថាតើកម្មវិធីបញ្ជាគឺសម្រាប់វីនដូ 32 ប៊ីត។ ប៊ូលឋិតិវន្តឯកជន getIsDriverX86()( bool flag; try ( LPT.IsInpOutDriverOpen(); flag = true; ) catch (Exception ex) ( ProjectData.SetProjectError(ex); flag = false; ProjectData.ClearProjectError(); ) return flag; ) /// កំណត់ថាតើ តើកម្មវិធីបញ្ជាសម្រាប់វីនដូ 64 ប៊ីតមែនទេ? ប៊ូលឋិតិវន្តឯកជន 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(); ) ត្រឡប់ទង់; ) /// អានទិន្នន័យ 1 បៃពីច្រក LPT ។ /// លេខច្រក។ /// ការចុះឈ្មោះច្រក។ បៃឋិតិវន្តសាធារណៈ អាន(ច្រក ulong, LPT.ចុះឈ្មោះ reg = LPT.Register.DATA)(ត្រឡប់ !LPT.IsX64DriverUsed ? LPT.Inp32(Convert.ToUInt32(Decimal.Add(new Decimal(port), new Decimal((int) reg)))) : LPT.Inp64(Convert.ToUInt64(Decimal.Add(ថ្មី) ទសភាគ(ច្រក), ទសភាគថ្មី((int) reg)))); ) /// សរសេរលេខទៅច្រក LPT ។ /// អាសយដ្ឋានច្រក។ /// ការចុះឈ្មោះច្រក។ /// លេខដែលត្រូវកត់ត្រា។ នៅលើប្រព័ន្ធ 32 ប៊ីត អាគុយម៉ង់មិនត្រូវលើសពី តម្លៃអតិបរមាសម្រាប់ប្រភេទ UInt32. ទុកជាមោឃៈសាធារណៈ សរសេរ(ច្រក ulong, LPT.ចុះឈ្មោះ reg, ទិន្នន័យ ulong)(ប្រសិនបើ (LPT.IsX64DriverUsed) ( LPT.Out64(បានពិនិត្យ (ច្រក + (ulong) (uint) reg), ទិន្នន័យ); ) else (ប្រសិនបើ (ទិន្នន័យ > (ulong) uint.MaxValue) បោះ ArgumentException ថ្មី("នៅ 32- នៅលើប្រព័ន្ធប៊ីត អាគុយម៉ង់ត្រូវតែជា 32 ប៊ីត (ប្រភេទ UInt32)។", "ទិន្នន័យ"); LPT.Out32(Convert.ToUInt32(Decimal.Add(new Decimal(port), new Decimal((int) reg))) ), បានពិនិត្យ ((uint) ទិន្នន័យ)); ) ) /// ការចុះឈ្មោះច្រក LPT ។ ការចុះឈ្មោះសាធារណៈ(ទិន្នន័យ ស្ថានភាព ការគ្រប់គ្រង ) )

3 ដោយប្រើថ្នាក់ .NETសម្រាប់ធ្វើការជាមួយច្រក LPT

ប្រសិនបើយើងក្រឡេកមើលបញ្ជីមុខងារបណ្ណាល័យដែលបាននាំចេញ inpout32.dllជាមួយនឹងឧបករណ៍ដ៏អស្ចារ្យ កម្មវិធីមើលការនាំចេញ DLLពី NirSoft យើងនឹងឃើញរូបភាពខាងក្រោម៖

នេះគឺជាបញ្ជីមុខងារដែលយើងអាចប្រើប្រាស់បាន។ តាមពិតពួកវាទាំងអស់ត្រូវបានប្រើនៅក្នុងថ្នាក់ LPTប៉ុន្តែការអនុវត្តត្រូវបានលាក់ ហើយនៃវិធីសាស្រ្តសាធារណៈ មានតែវិធីសាស្រ្តពីរ និងទ្រព្យសម្បត្តិមួយប៉ុណ្ណោះដែលមានសម្រាប់អ្នកប្រើប្រាស់ (ពួកគេត្រូវបានពិភាក្សាបន្តិចបន្ថែមទៀត)។

កំឡុងពេលធ្វើភ្លាមៗ ថ្នាក់ខ្លួនឯងនឹងកំណត់ថាបណ្ណាល័យណាដែលវាគួរតែប្រើ - inpout32.dllinpoutx64.dll. ដូច្នេះ អ្នកប្រើប្រាស់មិនតម្រូវឱ្យធ្វើសកម្មភាពណាមួយដើម្បីចាប់ផ្តើម ឬកំណត់ជម្រៅប៊ីតដែលបានប្រើនោះទេ។ dll. អ្នកអាចសរសេរ ឬអានភ្លាមៗពីច្រក LPT ។ មួយ “ប៉ុន្តែ”៖ ប្រសិនបើកម្មវិធីបញ្ជាមិនត្រូវបានដំឡើង ការហៅវិធីសាស្ត្របណ្ណាល័យថាមវន្តណាមួយនឹងបង្កឱ្យមានករណីលើកលែង ដូច្នេះខ្ញុំសូមណែនាំឱ្យប្រើប្លុក សាកល្បង...ចាប់ដើម្បីចាប់ និងដោះស្រាយករណីលើកលែង។

ឧទាហរណ៍មួយចំនួននៃការប្រើប្រាស់ថ្នាក់ LPT.

ដើម្បីកំណត់ថាតើកំណែ 64 ប៊ីតរបស់កម្មវិធីបញ្ជាត្រូវបានប្រើ (inpoutx64.dll ប្រសិនបើពិត) ឬ 32 ប៊ីត (inpout32.dll ប្រសិនបើមិនពិត) (តាមពិត អ្នកមិនចាំបាច់ដឹងរឿងនេះទេ ថ្នាក់ប្រើប្រាស់បណ្ណាល័យយ៉ាងពិតប្រាកដ។ នោះគឺជាការចាំបាច់ ប៉ុន្តែភ្លាមៗនោះអ្នកសម្រាប់ហេតុផលមួយចំនួន អ្នកនឹងត្រូវការស្វែងរកវាចេញពីកម្មវិធីរបស់អ្នក)៖

Bool is64bitDriver = LPT.IsX64DriverUsed;

ដើម្បីសរសេរលេខ "123" ទៅកាន់បញ្ជីត្រួតពិនិត្យច្រក LPT សូមហៅទូរស័ព្ទពីថ្នាក់របស់អ្នក៖

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

ដើម្បីអានមួយបៃពីការចុះឈ្មោះទិន្នន័យច្រក LPT ហើយអានការចុះឈ្មោះស្ថានភាព៖

Byte b = LPT.Read(currentPort, LPT.Register.DATA); byte s = LPT.Read(currentPort, LPT.Register.STATUS);

នៅទីនេះ កំពង់ផែបច្ចុប្បន្ន - អាសយដ្ឋានច្រក LPT. លើសពីនេះទៅទៀត ប្រសិនបើអ្នកមានច្រក LPT រួមបញ្ចូលគ្នា នោះអាសយដ្ឋានរបស់វាទំនងជានឹងជា ៣៧៨ ម៉ោង។. ហើយប្រសិនបើអ្នកមានច្រក LPT នៅលើបន្ទះពង្រីក នោះអាសយដ្ឋាននឹងខុសគ្នា ឧទាហរណ៍។ D100 ម៉ោង។C100 ម៉ោង។.

ដើម្បីស្វែងរកអាសយដ្ឋានច្រក LPT សូមចូលទៅកាន់កម្មវិធីគ្រប់គ្រងឧបករណ៍វីនដូ ស្វែងរកផ្នែក ច្រក COM និង LPTជ្រើសរើសច្រកប៉ារ៉ាឡែលដែលអ្នកកំពុងប្រើ ហើយនៅក្នុងបង្អួចលក្ខណសម្បត្តិ (ដោយចុចខាងស្តាំលើវា) មើលធនធានអ្វីដែលច្រកដែលបានជ្រើសរើសប្រើ (អ្នកត្រូវតែយកតម្លៃដំបូងពីជួរ)។


ឧទាហរណ៍នៅក្នុង ក្នុងករណី​នេះលេខច្រកត្រូវតែប្រើ C100.

ទាញយកឯកសារភ្ជាប់៖

  • ទាញយកកម្មវិធីបញ្ជាសម្រាប់ច្រក LPT (ទាញយក 3281)

យើងសូមផ្តល់អនុសាសន៍ឱ្យជួបគាត់។ នៅទីនោះអ្នកនឹងឃើញមិត្តថ្មីជាច្រើន។ លើសពីនេះទៀតវាគឺលឿនបំផុតនិង វិធីដែលមានប្រសិទ្ធភាពទាក់ទងអ្នកគ្រប់គ្រងគម្រោង។ ផ្នែកអាប់ដេតកំចាត់មេរោគបន្តដំណើរការ - តែងតែអាប់ដេតដោយឥតគិតថ្លៃសម្រាប់ Dr Web និង NOD ។ មិនមានពេលអានអ្វីទេ? ខ្លឹមសារពេញលេញសំបុត្រអាចរកបាននៅតំណនេះ។

ធ្វើការជាមួយច្រក LPT នៅក្នុង Win NT/2000/XP

ច្រក LPT (អិលអ៊ីញ ទំរិន er) គឺជាច្រកចំណុចប្រទាក់ប៉ារ៉ាឡែលដែលត្រូវបានបង្កើតឡើងដំបូងដើម្បីភ្ជាប់ម៉ាស៊ីនបោះពុម្ព។ BIOS ផ្តល់ការគាំទ្រសម្រាប់ច្រក LPT ដែលចាំបាច់ក្នុងការរៀបចំលទ្ធផលតាមរយៈចំណុចប្រទាក់ Centronics ។ ចន្លោះអាសយដ្ឋានច្រកកាន់កាប់ជួរ &H378-&H37F

ច្រក LPT មានទិន្នផល 12 និងបន្ទាត់បញ្ចូល 5 ។ នេះគឺពិតជា មួយ​ចំនួន​ធំ​នៃបន្ទាត់ធ្វើឱ្យ ការតភ្ជាប់ដែលអាចកើតមានទៅកាន់ច្រកនៃឧបករណ៍សាមញ្ញ ដែលប្រហែលជាមិនមាន microcontroller ផ្ទាល់ខ្លួនរបស់វាទេ។ ដូច្នេះច្រកនេះ ទោះបីជាមានការបាត់ម៉ាស៊ីនបោះពុម្ពដែលមានចំណុចប្រទាក់ LPT ក៏ដោយក៏ត្រូវបានប្រើប្រាស់យ៉ាងសកម្មដើម្បីភ្ជាប់អ្នកសរសេរកម្មវិធីបន្ទះឈីបអង្គចងចាំសាមញ្ញ ចំណុចប្រទាក់ JTAG សម្រាប់ពន្លឺ (ជំនួស កម្មវិធី) ឧបករណ៍ទទួលផ្កាយរណប ឧបករណ៍ចាក់ឌីវីឌី និងឧបករណ៍អេឡិចត្រូនិកផ្សេងទៀត។ ច្រក LPT ក៏ពេញនិយមក្នុងចំណោម modders ព្រោះវាអនុញ្ញាតឱ្យអ្នកភ្ជាប់អេក្រង់ LCD ទៅកុំព្យូទ័ររបស់អ្នកដោយមិនចាំបាច់បង្កើត interface boards ស្មុគស្មាញ។

Windows 2000/XP មិនអនុញ្ញាតឱ្យកម្មវិធីចូលប្រើច្រក I/O ដោយផ្ទាល់ទេ។ ដើម្បីធ្វើដូចនេះអ្នកត្រូវប្រើកម្មវិធីបញ្ជាដែលកំពុងដំណើរការនៅក្នុងរបៀប KERNEL (នៅក្នុងរបៀបខឺណែលប្រព័ន្ធប្រតិបត្តិការ) ។

ការរឹតបន្តឹងការចូលប្រើច្រក I/O សម្រាប់កម្មវិធីទូទៅ (ដំណើរការក្នុងទម្រង់អ្នកប្រើប្រាស់) ធ្វើឱ្យប្រព័ន្ធប្រតិបត្តិការមានស្ថេរភាពជាងមុន។ ទោះបីជាយ៉ាងណាក៏ដោយ គ្មាននរណាម្នាក់រារាំងអ្នកសរសេរកម្មវិធីពីការសរសេរកម្មវិធីបញ្ជាដែលចូលប្រើច្រកនោះទេ។

ខ្ញុំឆ្ងល់ថាសម្រាប់អ្វី ខួរក្បាល Intel x86 អ្នកអាចសរសេរកម្មវិធីបញ្ជាដែលប្រើមួយក្នុងចំណោមពីរជាមូលដ្ឋាន វិធីសាស្រ្តផ្សេងគ្នា. ជម្រើសទីមួយគឺអ្នកបើកបរខ្លួនឯងចូលប្រើច្រក ហើយកម្មវិធីកម្មវិធីប្រាប់តែអ្នកបើកបរអ្វីដែលត្រូវធ្វើ។ ជម្រើសនេះជាទូទៅមានលក្ខណៈស្តង់ដារ និងពេញចិត្ត។

ដើម្បីដោះស្រាយបញ្ហា មានជម្រើសកម្មវិធីបញ្ជាពេញនិយមចំនួនបួនដែលអនុញ្ញាតឱ្យកម្មវិធីកម្មវិធីចូលប្រើច្រក I/O៖ កម្មវិធីបញ្ជា DLPortIO, អ្នកបើកបរ ច្រកអ្នកប្រើប្រាស់, អ្នកបើកបរ GiveIO.sis, អ្នកបើកបរ ច្រក 95nt.

ជម្រើសទាំងបួនគឺស្ទើរតែស្មើ។

កម្មវិធីបញ្ជា DLPortIO

DLportIO - ច្រកចូលកម្មវិធីបញ្ជាពីកញ្ចប់ កម្មវិធីបញ្ជាLINXពី Scientific Software Tools, Inc. (http://www.sstnet.com) ជាទម្រង់អក្សរកាត់ (ដោយគ្មានការពិពណ៌នា និងឯកសារដែលមិនចាំបាច់)។ សម្រាប់ប្រតិបត្តិការធម្មតានៃកម្មវិធីថែទាំសម្រាប់សូចនាករ LCD យើងអាចណែនាំបាន។ ជម្រើសអ្នកបើកបរនេះ។.

អ្នកបើកបរខ្លួនឯងមានសមាសធាតុពីរ៖
. DLPportIO.dll - Win32 DLL ផ្តល់ផ្នែករឹង I/O និង
. DLPortIO.sys - កម្មវិធីបញ្ជាសម្រាប់ WinNT ដែលដំណើរការក្នុងរបៀបខឺណែល OS (មិនទាមទារសម្រាប់ Win95/98)

នៅក្នុងកញ្ចប់ដំឡើងកម្មវិធីបញ្ជា បន្ថែមលើសមាសភាគទាំងពីរនេះ វាក៏មានឯកសារ Install.exe ដែលផ្លាស់ទីពីរដែលបានរៀបរាប់ខាងលើទៅកាន់ថតឯកសារ។ កម្មវិធីបញ្ជាវីនដូនិងចុះឈ្មោះពួកវានៅក្នុងប្រព័ន្ធ។

មិនមានអ្វីបន្ថែមដើម្បីសរសេរអំពីអ្នកបើកបរនេះទេ។ មិនចាំបាច់ដំឡើងទេ។ ទាញយក ដំឡើង ប្រើ។ កុំភ្លេចមើលនៅចុងបញ្ចប់នៃអត្ថបទ ហើយអានអំពីការធានាមុខងារនៃច្រក LPT ។

ការដំឡើងគឺសាមញ្ញ - ដំណើរការឯកសារ Install.exe ហើយដំឡើង។ នៅពេលដែលការដំឡើងត្រូវបានបញ្ចប់ រកមើលនៅក្នុងថតឯកសារ C:\Windows\System32\drivers ហើយពិនិត្យមើលវត្តមាននៃឯកសារកម្មវិធីបញ្ជាពីរ (DLPortIO.sys និង DLPortIO.dll) ។ ប្រសិនបើយើងឃើញថាឯកសារទាំងនេះមិនត្រូវបានចម្លងទេ យើងយកវាចេញពីកញ្ចប់ដំឡើង ហើយចម្លងវាដោយដៃ។ កុំបារម្ភ គ្មានអ្វីដែលអាក្រក់នឹងកើតឡើងចំពោះកុំព្យូទ័ររបស់អ្នក។ យើងចាប់ផ្តើមកុំព្យូទ័រឡើងវិញហើយធ្វើការជាមួយច្រក LPT ។

ប្រសិនបើភ្លាមៗ ជាលទ្ធផលនៃឧបាយកលជាមួយឧបករណ៍ អ្នកទទួលបានសារពីអ្នកបើកបរដូចនេះ៖ "កម្មវិធីបញ្ជាឧបករណ៍ dlportio.sys មិនបានផ្ទុកទេ។ ច្រក I/O នឹងមិនមានឥទ្ធិពលអ្វីទេ" កុំភ័យស្លន់ស្លោ។ បញ្ហានេះត្រូវបានជួសជុលដូចនេះ៖
. បើកដំណើរការ regedit ។
. យើងទៅសាខានៅក្នុងបញ្ជីឈ្មោះ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.
. នៅក្នុងថត dlportio ផ្លាស់ប្តូរតម្លៃនៃប៉ារ៉ាម៉ែត្រ ចាប់ផ្តើមនៅលើ 1 .
. ចាប់ផ្ដើមកុំព្យូទ័រឡើងវិញ។

កម្មវិធីបញ្ជា UserPort

អ្នកបើកបរ ច្រកអ្នកប្រើប្រាស់បើកការចូលប្រើច្រកក្នុង Win NT/2000/XP សម្រាប់កម្មវិធី។ កំណែនៃកម្មវិធីបញ្ជាច្រក LPT នេះត្រូវបានប្រើជាញឹកញាប់បំផុតដោយ "អ្នកបច្ចេកទេស" ដែលធ្វើការជាមួយអ្នកសរសេរកម្មវិធី និង JTAGs ចាប់តាំងពីកម្មវិធីបញ្ជាយ៉ាងហោចណាស់មានការកំណត់រចនាសម្ព័ន្ធមួយចំនួន។ វាក៏អាចត្រូវបានប្រើដើម្បីដំណើរការកម្មវិធីថែទាំសម្រាប់សូចនាករ LCD ផងដែរ។

បណ្ណសារកម្មវិធីបញ្ជាមានឯកសារបី៖
. UserPort.sys - កម្មវិធីបញ្ជាសម្រាប់ WinNT ដែលដំណើរការក្នុងរបៀបខឺណែល OS,
. UserPort.exe គឺជាកម្មវិធីសម្រាប់កំណត់រចនាសម្ព័ន្ធកម្មវិធីបញ្ជា និង
. UserPort.pdf - ឯកសារពិពណ៌នា។

ការដំឡើង UserPort៖
. 1. ពន្លាប័ណ្ណសារទៅក្នុងថតដាច់ដោយឡែកមួយ។
. 2. ចម្លងឯកសារ UserPort.sys ទៅ C:\Windows\System32\drivers

ការកំណត់ UserPort៖
. ដំណើរការ UserPort.exe ។
. បន្ទះដែលមានបង្អួច 2 នឹងបង្ហាញនៅពីមុខយើង។

បង្អួចខាងឆ្វេងសំដៅលើកម្មវិធីដែលកំពុងដំណើរការនៅក្នុងបង្អួច DOS ដែលជាបង្អួចខាងស្តាំ ពេញ​អេក្រង់. តាមលំនាំដើម ពួកវាមានលេខច្រក LPT - ពួកវាទាំងអស់អាចត្រូវបានយកចេញដោយប្រើប៊ូតុង "យកចេញ" ។ នៅក្នុងបង្អួចទាំងពីរអ្នកត្រូវបញ្ចូលលេខច្រកដែលត្រូវការដែលអ្នកមានគម្រោងប្រើ។

សម្រាប់ការប្រើប្រាស់ពីកម្មវិធីបញ្ជាជាមួយអ្នកសរសេរកម្មវិធីភាគច្រើន JTAGs និងកម្មវិធីបង្ហាញសេវាកម្ម សូមបន្ថែមប៉ារ៉ាម៉ែត្រខាងក្រោមទៅជួរឈរខាងឆ្វេង៖
378 , 379 និង ៣៧ កសម្រាប់ LPT1
278 , 279 និង ២៧ កសម្រាប់ LPT2(ប្រសិនបើអាសយដ្ឋានច្រក LPT ត្រូវបានចាត់តាំងឡើងវិញនៅក្នុង BIOS) ។

ខ្ញុំសូមពន្យល់ពីអត្ថន័យនៃលេខ។ 0x378- នេះគឺជាអាសយដ្ឋានច្រក។
. អាស័យដ្ឋាន 0x378ហៅ មូលដ្ឋានហើយប្រើសម្រាប់សរសេរ និងអាន ទិន្នន័យទៅ និងពីកំពង់ផែ តាមរយៈរថយន្តក្រុងទិន្នន័យ D0-D7.
. អាស័យដ្ឋាន 0x379 (មូលដ្ឋាន+1)បង្កើតឡើងសម្រាប់ អានប៊ីតស្ថានភាពពីឧបករណ៍ដែលភ្ជាប់ទៅច្រក LPT ។
. អាស័យដ្ឋាន 0x37A (មូលដ្ឋាន+2)បម្រើសម្រាប់ ការថតប៊ីតការគ្រប់គ្រងឧបករណ៍ដែលភ្ជាប់ទៅច្រក LPT ។

បន្ថែមវាដូចនេះ៖
0x378-0x378
0x37A-0x37A



អ្នកត្រូវបន្ថែមអាសយដ្ឋានច្រកទៅក្នុងបញ្ជីតាមរយៈបង្អួចបញ្ចូល ហើយប្រើប៊ូតុង "បន្ថែម" ។ អាស័យដ្ឋាន 0x379ភាគច្រើនវាមិនត្រូវការ និងអាចលុបចោលបានទេ ព្រោះវាត្រូវបានបម្រុងទុកសម្រាប់ អានប៊ីតស្ថានភាពពីឧបករណ៍ដែលភ្ជាប់ទៅច្រក LPT ហើយឧបករណ៍ភាគច្រើន (អ្នកសរសេរកម្មវិធី JTAGs និងសូចនាករ LCD ជាពិសេស) មិនបង្កើតសញ្ញាស្ថានភាពទេ។ ប្រសិនបើចង់បាន អ្នកអាចបញ្ចូលអាសយដ្ឋានទាំងមូលដែលបែងចែកដោយប្រព័ន្ធសម្រាប់ ច្រក LPT 0x378-0x37F.

តោះទៅ ផ្ទាំងបញ្ជា, ប្រព័ន្ធ, ជ្រើសរើសផ្ទាំងបរិក្ខារ, អ្នក​គ្រប់​គ្រង​ឧបករណ៍ចូលទៅកាន់ច្រក (COM និង LPT) ហើយមើលលក្ខណៈសម្បត្តិនៃច្រក LPT ដែលអ្នកចង់បង្កើតការតភ្ជាប់។ នៅក្នុង Properties បើកផ្ទាំង Resources ហើយមើលតម្លៃប៉ារ៉ាម៉ែត្រ ជួរបញ្ចូល / ទិន្នផល (I / O). (ជាធម្មតានៅក្នុង Windows XP វាគឺ ៣៧៨ - ៣៧ អេហ្វ)

បន្ទាប់ពីបង្កើតបញ្ជីអាសយដ្ឋានអ្នកត្រូវចុចប៊ូតុង "ចាប់ផ្តើម" កម្មវិធីបញ្ជានឹងត្រូវបានបើកដំណើរការហើយសារនឹងលេចឡើង:



បន្ទាប់មកចុចប៊ូតុង "ធ្វើបច្ចុប្បន្នភាព" អ្នកបើកបរនឹងត្រូវបានចុះឈ្មោះនៅក្នុងប្រព័ន្ធបន្ទាប់មក "ចេញ" ។ ជាការពិតណាស់ មិនចាំបាច់ចុចប៊ូតុង "បញ្ឈប់" នោះទេ ខណៈពេលដែលយើងកំពុងប្រើប្រាស់កម្មវិធីបញ្ជា។

ប្រសិនបើនៅពេលអ្នកចុចប៊ូតុង "ធ្វើបច្ចុប្បន្នភាព" ប្រព័ន្ធចាប់ផ្តើមឡើងវិញ អ្នកត្រូវព្យាយាមចាប់ផ្តើមការចុះឈ្មោះអ្នកបើកបរនៅក្នុងប្រព័ន្ធជាមួយនឹងសិទ្ធិអ្នកគ្រប់គ្រង ឬព្យាយាមបិទជញ្ជាំងភ្លើង ឬកំចាត់មេរោគជាបណ្តោះអាសន្ន ដែលអាចរារាំងការរំខានដល់ដំណើរការប្រព័ន្ធ។ ប្រសិនបើមានអ្វីមួយមិនដំណើរការ សូមអាន UserPort.pdf

ដើម្បីពិនិត្យមើលថាតើការចូលប្រើច្រកបានបង្ហាញខ្លួនទេ អ្នកអាចដំណើរការកម្មវិធីបាន។ "lpt-test.exe".

បន្ទាប់ពីចាប់ផ្តើមកម្មវិធី បង្អួចមួយនឹងលេចឡើងជាមួយនឹងមាតិកាដូចខាងក្រោម:



អវត្ដមាននៃសារ "ច្រក LPT កំពុងត្រូវបានសាកល្បង (អាសយដ្ឋាន XXXh)" ហើយបន្ទាត់ខាងក្រោមបង្ហាញថាអ្នកបើកបរមិនដំណើរការទេ។

កម្មវិធីនេះគ្រាន់តែផ្ញើលេខផ្សេងៗទៅកាន់ Dx data register និង Ux control register នៃ LPT port ហើយបន្ទាប់មកអានពួកវា។ ការចុះឈ្មោះស្ថានភាព LPT port Sx ត្រូវបានអានតែប៉ុណ្ណោះ។ ចំនួននិងអាសយដ្ឋាននៃច្រក LPT ដែលកំពុងត្រូវបានសាកល្បងត្រូវបានបង្ហាញនៅលើអេក្រង់។ ប្រសិនបើច្រកមានសុខភាពល្អ នោះគ្មានសារណាមួយគួរតែត្រូវបានចេញសម្រាប់ការចុះឈ្មោះ Dx និង Ux ទេ។



LPT-TEST v1.03 1995-2003 រក្សាសិទ្ធិ (C) S.B.Alemanov. ទីក្រុងម៉ូស្គូ "BINAR" ។
កំឡុងពេលធ្វើតេស្ត មិនគួរភ្ជាប់ឧបករណ៍គ្រឿងកុំព្យូទ័រទៅច្រកនោះទេ។
Dx - reg ។ ទិន្នន័យ (ចេញ), Ux - reg ។ គ្រប់គ្រង (ចេញ), Sx - reg ។ ស្ថានភាព (បញ្ចូល) ។

ច្រក 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" ត្រូវបានបង្ហាញ ហើយលេខ pin នៅលើឧបករណ៍ភ្ជាប់ LPT ត្រូវបានចង្អុលបង្ហាញ (សញ្ញានៅលើ pin នេះអាចមើលបានដោយប្រើ oscilloscope)។ ការបញ្ចូលនៃការចុះឈ្មោះស្ថានភាព Sx អាចជា "0" ឬ "1" ប៉ុន្តែជាធម្មតានៅពេលដែលគ្មានអ្វីត្រូវបានភ្ជាប់ទៅច្រក LPT ការបញ្ចូលទាំងអស់នៃការចុះឈ្មោះស្ថានភាពគឺ "1" ។ ការលេចឡើងនៃស្ថានភាព "0" នៅឯការបញ្ចូលនៃការចុះឈ្មោះអាចជាសញ្ញាថាការបញ្ចូលត្រូវបានខូចប្រសិនបើពីមុនតែងតែមាន "1" នៅទីនោះ។
នៅលើម៉ាស៊ីនមួយចំនួន ប្រសិនបើការចុះឈ្មោះទិន្នន័យ ឬការចុះឈ្មោះត្រួតពិនិត្យមានកំហុស នោះការចូលទៅកាន់ច្រក LPT មិនលេចឡើងទាល់តែសោះ។ ជាក់ស្តែង នៅពេលអ្នកបើកកុំព្យូទ័រ BIOS សាកល្បងច្រក LPT ហើយប្រសិនបើវាមានកំហុស សូមបិទវា។

ប្រសិនបើមានបញ្ហាកើតឡើង វាអាចទៅរួចដែលអ្នកបើកបរមួយចំនួនកំពុងជ្រៀតជ្រែកក្នុងប្រតិបត្តិការដោយការបញ្ជូនជីពចរជាទៀងទាត់ទៅកាន់ច្រក LPT (នេះអាចត្រូវបានគេមើលឃើញដោយ oscilloscope) ។ ឧទាហរណ៍ អ្នកអាចផ្តាច់ចេញពីច្រក LPT នៅក្នុងការកំណត់ម៉ាស៊ីនបោះពុម្ព៖
បិទ LPT1៖ ច្រកម៉ាស៊ីនបោះពុម្ព
បើកឯកសារ៖ បោះពុម្ពទៅឯកសារ

បន្ទាប់ពីបញ្ហាទាំងអស់ត្រូវបានដោះស្រាយ ហើយការធ្វើតេស្តត្រូវបានឆ្លងកាត់ ការចូលទៅកាន់ច្រកគួរតែលេចឡើង ហើយអ្នកអាចដំណើរការកម្មវិធីដែលប្រើច្រក LPT ។ បើមិនដូច្នោះទេឧបករណ៍ដែលភ្ជាប់ទៅច្រកនៅលើម៉ាស៊ីនបែបនេះនឹងមិនដំណើរការទេ។

កម្មវិធីបញ្ជា GiveIO.sys

ត្រលប់ទៅឆ្នាំ 1996 អ្នកសរសេរកម្មវិធីជនជាតិអាមេរិក Dale Roberts បានធ្វើការពិសោធន៍ជាបន្តបន្ទាប់ ដែលជាលទ្ធផលគឺជាអ្នកបើកបរ។ GiveIO.sys. រហូតមកដល់ពេលនេះ កម្មវិធីបញ្ជានេះនៅតែជាឧបករណ៍ដ៏ពេញនិយមមួយដែលអនុញ្ញាតឱ្យកម្មវិធីកម្មវិធីចូលប្រើច្រក I/O ។

អ្នកនិពន្ធកម្មវិធីបញ្ជាខ្លួនឯងណែនាំយ៉ាងខ្លាំងឱ្យប្រើកម្មវិធីបញ្ជានេះសម្រាប់គោលបំណងបំបាត់កំហុសតែប៉ុណ្ណោះ។ កំណែចុងក្រោយនៃកម្មវិធីគួរតែ ជំនួសឱ្យការចូលទៅកាន់ច្រក I/O ខ្លួនវា ប្រគល់ភារកិច្ចនេះទៅឱ្យអ្នកបើកបរដែលបានសរសេរជាពិសេសសម្រាប់គោលបំណងទាំងនេះ។ អ្នកបើកបរត្រូវតែមានឥរិយាបទ "ត្រឹមត្រូវ" ដោយពិនិត្យមើលថាតើឧបករណ៍នេះត្រូវបានប្រើប្រាស់រួចហើយដោយកម្មវិធីផ្សេងទៀតដែរឬទេ។

ទោះយ៉ាងណាក៏ដោយ ប្រសិនបើអ្នកប្រាកដច្បាស់ថាគ្មាននរណាម្នាក់ប្រើច្រក I/O ដែលត្រូវការទេ លើកលែងតែអ្នក (ឧទាហរណ៍ អ្នកមិនមានម៉ាស៊ីនបោះពុម្ពដែលភ្ជាប់ទៅនឹង LPT) អ្នកអាចប្រើកម្មវិធីបញ្ជា GiveIO.sys ដោយសុវត្ថិភាព។

ការដំឡើងកម្មវិធីបញ្ជា:

1. ទាញយកប័ណ្ណសារ ពន្លា និងចម្លងឯកសារ GiveIO.sys ទៅកាន់ថត C:\Windows\System32\Drivers (សន្មត់ថា Windows របស់អ្នកត្រូវបានដំឡើងនៅក្នុង C:\Windows directory)។
. 2. ដំណើរការឯកសារ install.reg ។ សារខាងក្រោមនឹងបង្ហាញនៅលើអេក្រង់៖


. 3. យើងឆ្លើយនៅក្នុងការបញ្ជាក់។ សារមួយនឹងលេចឡើងដែលបង្ហាញថាព័ត៌មានត្រូវបានបញ្ចូលដោយជោគជ័យទៅក្នុងបញ្ជីឈ្មោះ។ ប្រសិនបើអ្នកចង់បាន អ្នកអាចផ្ទៀងផ្ទាត់វាបាន។ យើងបើកដំណើរការកម្មវិធីនិពន្ធចុះបញ្ជី regedit.exe និងនៅក្នុងសាខា HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveioយើងពិនិត្យមើលវត្តមានរបស់ធាតុខាងក្រោម៖


. 4. ចាប់ផ្ដើមកុំព្យូទ័រឡើងវិញ ហើយពិនិត្យមើលប្រតិបត្តិការនៃកម្មវិធីដោយប្រើកម្មវិធីបញ្ជា។

អ្នកបើកបរ GiveIO.sysមនុស្សប្រើវាយ៉ាងសកម្ម ហើយយូរ ៗ ទៅបានបង្ហាញខ្លួន ជម្រើសផ្សេងទៀតសម្រាប់ដំឡើងវា។.

ឧទាហរណ៍ - អ្នកបើកបរ GiveIO.sysប្រសិនបើមានឯកសារដែលមាន "ព័ត៌មានផ្នែករឹង" GiveIO.infអាចត្រូវបានដំឡើងតាមរយៈអាប់ភ្លេត "ការដំឡើងផ្នែករឹង" ។




យើងនឹងបង្ហាញកម្មវិធីបញ្ជា 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 ដែលរកឃើញនៅលើអ៊ីនធឺណិត។

ហេតុផលទីពីរគឺថាក្នុងករណីខ្លះអាចមានបញ្ហាជាមួយនឹងការដំឡើងកំណែខ្លីនៃ DLPortIO នៅក្រោម WinXP ។ ជាធម្មតា ប៉ុន្តែមិនញឹកញាប់ទេ វាកើតឡើងនៅក្នុងការបង្កើត "អ្នកនិពន្ធ" ដែលត្រូវបានដកចេញពី WinXP ។ ក្នុងករណីនេះអ្នកអាចយក កំណែពេញកម្មវិធីដំឡើង (1.5MB) ។ ទោះបីជាតាមគំនិតរបស់ខ្ញុំ វានឹងលឿនជាងមុនក្នុងការដាក់ DLPportIO.sys និង DLPortIO.dll ដោយដៃទៅក្នុងថតដែលចង់បាន ជាជាងការរំខានក្នុងការជ្រើសរើសកម្មវិធីដំឡើងដែលអាចធ្វើវាសម្រាប់អ្នក។

វិធានការបន្ថែម

បន្ថែមពីលើការដំឡើងកម្មវិធីបញ្ជាមួយក្នុងចំណោមកម្មវិធីបញ្ជាដែលបានរៀបរាប់ខាងលើ សម្រាប់ប្រតិបត្តិការធម្មតានៃច្រក LPT ក្រោម WinXP OS អ្នកត្រូវកែសម្រួលបញ្ជីឈ្មោះដោយប្រើឯកសារ REG xp_stop_polling.reg(xp_stop_polling.rar - 0.48kb)

នៅក្រោម WinXP ឧបករណ៍ដែលប្រើច្រក LPT ពេលខ្លះមិនស្ថិតស្ថេរ។ មូលហេតុនៃការបរាជ័យបែបនេះអាចជាប្រព័ន្ធរង Plug-and-Play (PnP) នៅក្នុង Windows ដែលធ្វើការស្ទង់មតិ LPT ជាទៀងទាត់ដើម្បីស្វែងរកឧបករណ៍ដែលបានតភ្ជាប់។ ការស្ទង់មតិនេះកើតឡើងនៅពេលដែលប្រព័ន្ធចាប់ផ្តើមដំណើរការ ប៉ុន្តែវាក៏អាចកើតឡើងក្នុងអំឡុងពេលប្រតិបត្តិការផងដែរ។ ជាអកុសល កម្មវិធីបញ្ជា DLportIO.sys និងជម្រើសកម្មវិធីបញ្ជាផ្សេងទៀតមិនរារាំងការចូលប្រើ LPT ពីកម្មវិធីផ្សេងទៀតនៅពេលធ្វើការជាមួយច្រកម៉ាស៊ីនភ្ញៀវរបស់កម្មវិធីបញ្ជានេះទេ ហើយប្រព័ន្ធរង PnP ប្រាកដថាច្រកមិនរវល់ ចូលប្រើវា និងរំខានដល់ប្រតិបត្តិការរបស់ ឧបករណ៍ខាងក្រៅ។ ឯកសារ REG ត្រូវបានប្រើដើម្បីដោះស្រាយបញ្ហា។ xp_stop_polling.reg. ឯកសារនេះត្រូវបានសរសេរនៅក្នុងបញ្ជីឈ្មោះ គ្រាប់ចុចវីនដូដែលហាមឃាត់ការបោះឆ្នោតបែបនេះ ខណៈពេលដែលប្រព័ន្ធកំពុងដំណើរការ។

បន្ថែមពីលើការដំឡើងកម្មវិធីបញ្ជា និងការកំណត់ការចូលប្រើក្នុងពេលដំណាលគ្នាទៅកាន់ច្រកសម្រាប់កម្មវិធី ដើម្បីធានាបាននូវភាពឆបគ្នានៃផ្នែករឹង និងប្រតិបត្តិការធម្មតារបស់ឧបករណ៍ជាមួយច្រក LPT វាចាំបាច់ត្រូវកំណត់ អាសយដ្ឋានត្រឹមត្រូវ។និង របៀបប្រតិបត្តិការច្រក("ធម្មតា" SPP ឬ EPP ប៉ុន្តែមិនមែន ECP)។

ប៉ារ៉ាម៉ែត្រខាងក្រោមអាចត្រូវបានកំណត់រចនាសម្ព័ន្ធតាមរយៈការដំឡើង BIOS៖

អាសយដ្ឋានមូលដ្ឋាន ដែលអាចជា 378h, 278h និង 3BCh។ កំឡុងពេលចាប់ផ្តើម BIOS ពិនិត្យមើលវត្តមាននៃច្រកតាមអាសយដ្ឋានតាមលំដាប់លំដោយនេះ ហើយតាមនោះ ផ្តល់ឈ្មោះឡូជីខល LPT1, LPT2, LPT3 ទៅកាន់ច្រកដែលបានរកឃើញ។ អាស័យដ្ឋាន 3BCh មានអាដាប់ទ័រច្រកដែលមានទីតាំងនៅលើបន្ទះ MDA ឬ HGC (ជំនាន់មុននៃកាតវីដេអូទំនើប) ។ ច្រកភាគច្រើនត្រូវបានកំណត់រចនាសម្ព័ន្ធទៅអាសយដ្ឋាន 378h តាមលំនាំដើម ហើយអាចប្តូរទៅ 278h ។

បន្ទាត់សំណើររំខានដែលបានប្រើ IRQ7 ជាធម្មតាត្រូវបានប្រើសម្រាប់ LPT1, IRQ5 សម្រាប់ LPT2។ នៅក្នុងកម្មវិធីកុំព្យូទ័រជាច្រើន ការរំខានម៉ាស៊ីនបោះពុម្ពមិនត្រូវបានប្រើទេ ហើយធនធានកុំព្យូទ័រដ៏កម្រនេះអាចត្រូវបានរក្សាទុក។ ទោះជាយ៉ាងណាក៏ដោយ នៅពេលប្រើរបៀបល្បឿនលឿន ECP (Fast Centronics) ប្រតិបត្តិការរំខានអាចធ្វើឲ្យដំណើរការប្រសើរឡើង និងកាត់បន្ថយការផ្ទុករបស់ខួរក្បាល។

ក្នុងពេលជាមួយគ្នានោះ របៀប ECP មិនអាចប្រើជាមួយឧបករណ៍ដែលត្រូវការពេលវេលាតឹងតែង (អ្នកសរសេរកម្មវិធី និងចំណុចប្រទាក់ JTAG) ទេ។

សរុបសេចក្តីមកបន្តិចអំពីវាក្យស័ព្ទ:

. អេសភីភី(ច្រកប៉ារ៉ាឡែលស្តង់ដារ - ច្រកប៉ារ៉ាឡែលស្តង់ដារ) ។ ជាញឹកញាប់ ដើម្បីសម្រួលការយល់ដឹង នៅក្នុង BIOS វាត្រូវបានតំណាងដោយពាក្យ " ធម្មតា។".
. EPP(ច្រកប៉ារ៉ាឡែលប្រសើរឡើង) - ជម្រើសចំណុចប្រទាក់ទ្វេទិសដែលមានល្បឿនលឿន។ គោលបំណងនៃសញ្ញាមួយចំនួនត្រូវបានផ្លាស់ប្តូរ សមត្ថភាពក្នុងការដោះស្រាយឧបករណ៍ឡូជីខលជាច្រើន និងការបញ្ចូលទិន្នន័យ 8 ប៊ីត និងសតិបណ្ដោះអាសន្ន FIFO ផ្នែករឹង 16 បៃត្រូវបានណែនាំ។ ល្បឿនអតិបរមាការផ្លាស់ប្តូរ - រហូតដល់ 2 Mb / s ។
. ECP(ច្រកសមត្ថភាពប្រសើរឡើង) - កំណែឆ្លាតវៃនៃ EPP ។ សមត្ថភាពក្នុងការបំបែកព័ត៌មានដែលបានបញ្ជូនទៅជាពាក្យបញ្ជា និងទិន្នន័យ ការគាំទ្រសម្រាប់ DMA និងការបង្ហាប់ទិន្នន័យដែលបានបញ្ជូនដោយប្រើវិធីសាស្ត្រ RLE (Run-Length Encoding) ត្រូវបានណែនាំ។


ដូច្នេះសូមពិចារណាជម្រើសខាងក្រោមសម្រាប់ធ្វើការជាមួយច្រក I/O នៅក្នុង Windows NT ។ "ជម្រើស" នេះនឹងក្លាយជាអ្នកបើកបរពិសេស GiveIO.sysដែលអនុញ្ញាតឱ្យកម្មវិធីដែលដំណើរការវាដំណើរការដោយសេរីជាមួយច្រកណាមួយ។ អ្នកបើកបរនេះបានសរសេរ Dale Robertsព្រះ​ទ្រង់​ជ្រាប​ថា​នៅ​ពេល​ណា ប៉ុន្តែ​វា​មិន​បាន​បាត់បង់​ភាព​ពាក់ព័ន្ធ​របស់​វា​រហូត​ដល់​សព្វ​ថ្ងៃ​នេះ​ទេ។



ខ្ញុំនឹងប្រាប់អ្នកដោយសង្ខេបពីរបៀបដែលវាដំណើរការ៖ នៅដើមកម្មវិធីរបស់យើង ដើម្បីទំនាក់ទំនងជាមួយច្រក អ្នកត្រូវទាក់ទងអ្នកបើកបរ GiveIO.sys. ក្នុងពេលជាមួយគ្នានេះ វានឹងកំណត់ប្រព័ន្ធ bitmap នៃផែនទីអនុញ្ញាត (I/O Permission Map) សម្រាប់កម្មវិធីរបស់យើងចំពោះតម្លៃដែលវានឹងត្រូវបានអនុញ្ញាតឱ្យចូលប្រើដោយផ្ទាល់ទៅកាន់ច្រកណាមួយ។ ផែនទីអនុញ្ញាត I/O- នេះ។ សមាស​ភាគប្រព័ន្ធការពារ Windows NT I/O ។ វាជាអារេប៊ីត ដែលប៊ីតនីមួយៗត្រូវគ្នានឹងច្រក I/O ។ ប្រសិនបើប៊ីត = 1 បន្ទាប់មកការចូលទៅកាន់ច្រកត្រូវបានបិទ ប្រសិនបើ 0 នោះវាបើក។ សម្រាប់កម្មវិធីអ្នកប្រើប្រាស់ណាមួយ ប៊ីតទាំងអស់ត្រូវបានកំណត់ទៅ 1 ហើយស្របទៅតាមនោះ យើងមិនអាចជ្រៀតជ្រែកដោយផ្ទាល់ជាមួយប្រតិបត្តិការនៃច្រកនោះទេ។ GiveIO.sys "បំបែក" ទៅក្នុងអារេនេះហើយកំណត់វាទៅ 0 គ្រប់ទីកន្លែង - i.e. យើងទទួលបានលទ្ធភាពចូលប្រើច្រកណាមួយពីកម្មវិធី។



ដំបូង ទាញយកប័ណ្ណសារជាមួយកម្មវិធីបញ្ជា និងឯកសារដំឡើង៖


ឥឡូវនេះយើងត្រូវចុះឈ្មោះនិងដំឡើងកម្មវិធីបញ្ជានៅលើប្រព័ន្ធ។ ដើម្បីធ្វើដូចនេះអ្នកត្រូវធ្វើប្រតិបត្តិការមួយចំនួន។ ដំបូងចម្លងឯកសារកម្មវិធីបញ្ជា GIVEIO.sysទៅកាន់ថតឯកសារ C:\Windows\system32\drivers\ ប្រសិនបើជាការពិតណាស់ ប្រព័ន្ធរបស់អ្នកត្រូវបានដំឡើងនៅលើថាស ជាមួយ៖\ហើយអ្នកមិនបានផ្លាស់ប្តូរផ្លូវដំឡើងវីនដូទេ។

ចុច បាទ. អ្នកនឹងទទួលបានសារដែលបង្ហាញថាព័ត៌មានត្រូវបានបញ្ចូលទៅក្នុងបញ្ជីឈ្មោះដោយជោគជ័យ។ អ្នកអាចផ្ទៀងផ្ទាត់នេះ។ នៅក្នុងកម្មវិធីនិពន្ធចុះបញ្ជី regedit.exeនៅក្នុងសាខា HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveioអ្នកអាចឃើញដូចខាងក្រោម៖

ដើម្បីឱ្យការផ្លាស់ប្តូរដែលយើងធ្វើមានប្រសិទ្ធភាព កាតព្វកិច្ចតម្រូវឱ្យមានការចាប់ផ្ដើមកុំព្យូទ័រឡើងវិញ។


វាដល់ពេលដែលត្រូវចុះទៅកម្មវិធី។ នៅក្នុងកូដកម្មវិធីរបស់យើង។ Port.exe(សូមមើល) យើងនឹងធ្វើការផ្លាស់ប្តូរមួយចំនួនដែលនឹងអនុញ្ញាតឱ្យវាចូលប្រើច្រកមិនត្រឹមតែនៅក្នុង Windows 9x ដូចពីមុនប៉ុណ្ណោះទេ ប៉ុន្តែក៏មាននៅក្នុង Windows NT ផងដែរ។ លេខកូដចុងក្រោយនឹងមើលទៅដូចនេះ៖

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

ទាំងអស់។ យើងចងក្រងនិងដំណើរការ។ ចុច 1-0: អ្វីគ្រប់យ៉ាងគួរតែដំណើរការ។ ប្រសិនបើសារមួយលេចឡើង កំហុស! មិនអាចបើកកម្មវិធីបញ្ជាបានទេ! ចុចគ្រាប់ចុចណាមួយដើម្បីចេញ...នេះមានន័យថាការដំឡើងកម្មវិធីបញ្ជាមិនបានជោគជ័យ ហើយអ្នកត្រូវដំឡើងវាម្តងទៀត។

អរគុណ​ចំពោះ giveio.sysស្គ្រីបផ្គុំខាងក្រោមក៏នឹងដំណើរការដោយជោគជ័យផងដែរ៖

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

© Dmitry Ivanov
2005-2006

ថ្មីនៅលើគេហទំព័រ

>

ពេញនិយមបំផុត។