Gallery

პარალელური პორტი

პარალელური პორტი (LPT პორტი)

პარალელური პორტი განკუთვნილია კომპიუტერიდან ინფორმაციის გამოსაყვანად, ინფორმაციის კომპიუტერში შესაყვანად და პერიფერიული მოწყობილობების (პრინტერების, სკანერების და ა.შ.) სამართავად.

კომპიუტერში შესაძლებელია 3 პარალელური პორტის ჩართვა. Windows აღნიშნავს მათ როგორც LPT1, LPT2, LPT3.

თვითოეული პორტი შეიცავს სამ რეგისტრს – ესენია: ინფორმაციის გამოყვანა–შეყვანის რეგისტრი (მონაცემთა რეგისტრი), პერიფერიული მოწყობილობებიდან გამოსული სამართავი სიგნალების ( მაგ.: პრიტრიდან -“ქაღალდი გათავდა”) კომპიუტერში შეყვანის რეგისტრი (სტატუსის რეგისტრი), პერიფერიული მოწყობილობების სამართავი სიგნალების (მაგ.: “მონაცემები გადაცემულია”) კომპიუტერიდან გამოყვანის რეგისტრი (მართვის რეგისტრი). კომპიუტერის სამისამართო სივრცეში მათ მიეკუთვნებათ კონკრეტული მისამართები. მონაცემთა რეგისტრის მისამართს ეწოდება საბაზო მისამართი. საბაზო მისამართებია: &H378 (LPT1), &H278 (LPT2), &H3BC (LPT3). საბაზო+1 მისამართი მიეკუთვნება სტატუსის რეგისტრს, საბაზო+2 მისამართი მიეკუთვნება მართვის რეგისტრს.

პორტთან მიერთებული 25 კონტაქტიანი საკონტაქტო შემაერთებელი (connector). ნახაზზე მოცემულია კონტაქტების შეერთების სქემა. კონტაქტები 18 – 25 საერთოა (მიერთებულია კომპიუტერის კორპუსთან). სიგნალების ძაბვები იღებენ მნიშვნელობებს: 0 ვოლტი ან +5 ვოლტი . მონაცემთა რეგისტრის გამომყვანებზე მიეწოდება +5 ვოლტი, თუ შესაბამის თანრიგში ჩაწერილია ლოგიკური “1”. წინააღმდეგ შემთხვევაში (ანუ, თუ შესაბამის თანრიგში ჩაწერილია ლოგიკური “0”), გამომყვანზე ძაბვა შეადგენს 0 ვოლტს. ასეთ შემთხვევეში ამბობენ, რომ მონაცემთა რეგისტრის თანრიგები არ არის ინვერტირებული, ლოგიკურ ერთიანს შეესაბამება ძაბვის მაღალი მნიშვნელობა, ლოგიკურ ნულს – დაბალი. იგივეს ვერ ვიტყვით დანარჩენ რეგისტრებზე: როგორც სტატუსის რეგისტრის, ისე მართვის რეგისტრის ცალკეული თანრიგები ინვერტირებულია.

Pin No (DB25) Signal name Direction Register – bit Inverted
1

nStrobe

Out

Control-0

Yes

2

Data0

In/Out

Data-0

No

3

Data1

In/Out

Data-1

No

4

Data2

In/Out

Data-2

No

5

Data3

In/Out

Data-3

No

6

Data4

In/Out

Data-4

No

7

Data5

In/Out

Data-5

No

8

Data6

In/Out

Data-6

No

9

Data7

In/Out

Data-7

No

10

nAck

In

Status-6

No

11

Busy

In

Status-7

Yes

12

Paper-Out

In

Status-5

No

13

Select

In

Status-4

No

14

Linefeed

Out

Control-1

Yes

15

nError

In

Status-3

No

16

nInitialize

Out

Control-2

No

17

nSelect-Printer

Out

Control-3

Yes

18-25

Ground

ინფორმაცია ცალკეული ბიტების ინვერტულობის შესახებ განთავსებულია ცხრილის გრაფაში “Inverted”. გრაფაში “Pin No” მითითებულია 25 კონტაქტიანი კონტაქტური შემაერთებლის (DB25) გამომყვანის ნომერი, გრაფაში “Signal Name” – სიგნალის სახელწოდება, გრაფაში “Direction” სიგნალის გადაცემის მიმართულება, ხოლო გრაფაში “Register-bit” – რეგისტრის სახელი და თანრიგის (ბიტის) ნომერი. როგორც ცხრილიდან ჩანს, მონაცემთა რეგისტრი ორმხრივად არის მიმართული – მისი თანრიგები Data-0″ – “Data-7” შეიძლება გამოყენებულ იქნას როგორც ინფორმაციის გამოსაყვანად, ისე კომპიუტერში შესაყვანად. ამ შესაძლებლობის რეალიზაციისათვის საჭიროა პორტი შესაბამისად დაკონფიგურირდეს, რისთვისაც კომპიუტერის გადატვირთვის მომენტში უნდა შევიდეთ BIOS -ის მენიუში, მოვძენოთ პუნქტი “INTEGRATED PERIPHERALS“, ავირჩიოთ “PARALLEL PORT MODE:” და დავაყენოთ პორტის რეჟიმი “EPP“. თუ თქვენს კომპიუტერს არ აქვს რეჟიმი “EPP“, მაშინ პორტის მონაცემთა რეგისტრი იმუშავებს მხოლოდ ინფორმაციის გამოყვანის რეჟიმში. ამ შემთხვევაში, ინფორმაციის შეყვანა კომპიუტერში შესაძლებელი იქნება მხოლოდ სტატუს რეგისტრის საშუალებით.

Windows–ს არ გააჩნია პორტის ცალკეულ რეგისტრებთან მიმართვის საშუალება. შესაძლებელია, მხოლოდ, ასეთი ტიპის ბრძანების განხორციელება – “გაიგზავნოს სიტყვა ‘abc’ პორტში LPT1”.

სამაგიეროდ, ნებიმიერი რეგისტრის ნებისმიერი თანრიგის (ბიტის) ჩაწერა–წაკითხვა შესაძლებელია “inpout32.dll” დინამიური ბიბლიოთეკის ფუნქციების საშუალებით. “inpout32.dll” ბიბლიოთეკა თავისუფლად ვრცელდება (უფასოა) და შეიძლება ჩამოტვირთულ იქნას ინტერნეტიდან. ჩამოტვირთვის შემდეგ ფაილი “inpout32.dll” თავსდება Windows\System32 დირექტორიაში და მზად არის გამოსაყენებლად. იგი მოიცავს ორ INP და OUT ფუნქციებს, შესაბამისად ინფორმაციის შეყვანისა და გამოყვანისათვის.


Visual Basic კოდი ფუნქციების გამოცხადებისათვის:

Private Declare Function Inp Lib “inpout32.dll” _

Alias “Inp32” (ByVal PortAddress As Integer) As Integer

Private Declare Sub Out Lib “inpout32.dll” _

Alias “Out32” (ByVal PortAddress As Integer, ByVal Value As Integer)

VB კოდი LPT1 პორტში რაიმე რიცხვის (<256) გადასაგზავნად:

Private Sub
Command1_Click()
Out &H378, 15
‘გაიგზავნება რიცხვი 15
End Sub

თუ ნახაზზე მოყვანილ სქემას ავაწყობთ და ზემოთ მოყვანილ პროგრამას შევასრულებთ, მაშინ აინთება ზედა ოთხი შუქდიოდი.
parallel_port1

ამ პროგრამის შესრულება კი გამოიწვევს შუქდიოდების ჩაქრობას.

Private Sub
Command1_Click()

Out &H378, 0
‘გაიგზავნება რიცხვი 0
End Sub

ყველა შუქდიოდის ასანთებად, ცხადია, უნდა შერულდეს პროგრამა:

Private Sub Command1_Click()
Out &H378, 255
‘გაიგზავნება რიცხვი 255
End Sub

VB კოდი LPT1 პორტიდან სგნალის შემოსაყვანად:

მონაცემთა რეგისტრიდან სიგნალების შემოყვანისათვის გამოიყენება არა საბაზო მისამართი &H378 , არამედ მისამართი &H37F (ანუ, საბაზო+7).

Private Sub Command1_Click()
Text1.Text = Inp(&H37F)
End Sub

ზემოთ მოყვანილი პროგრამის შესრულებით Text1 ტექსტბოქსში აისახება მონაცემთა რეგისტრის გამომყვანებზე მიწოდებული ბაიტის რიცხვითი მნიშვნელობა.
parallel_port2

თუ ნახაზზე მოყვანილ სქემაზე ყველა ჩამრთველს ჩავრთავთ, მაშინ Text1 ტექსტბოქსში აისახება “0”, თუ ყველა ჩამრთველს ამოვრთავთ – ტექსტბოქსში აისახება “255”.

რა თქმა უნდა, ინფორმაცია შეიძლება შემოვიყვანოთ სტატუს რეგისტრიდანაც ოღონდ უნდა გავითვალისწინოთ, რომ მისი მე–7 თანრიგი ინვერსულია:

Private Sub Command1_Click()
Text1.Text = Inp(&H379) AND &HF0

End Sub

მიაქციეთ ყურადღება, რომ სტატუს რეგისტრს 0–3 თანრიგების გამომყვანები უბრალოდ, არ აქვს. ამიტომ გვიწევს მათი მასკირება კონსტრუქციით Inp(&H379) AND &HF0. თუ ყველა ჩამრთველი ჩართულია, მაშინ Text1 ტექსტბოქსში აისახება “128”.

იმ კომპიუტერებისათვის, რომელთაც პარალელური პორტი არ გააჩნიათ, შეიძლება გამოყენებულ იქნას PCI-LPT პლატა, რომელიც კომპიუტერის PCI სლოტში შეიძლება ჩამონტაჟდეს.

5 responses to “პარალელური პორტი

  1. Excellently written article, doubts all bloggers offered
    the the same content since you, that the internet has
    to be far better place. Please stay the best!

  2. taxunachachava

    თქვენი ბლოგით აღფრთოვანებული ვარ

  3. საქართველოში ეს ვინმეს აინტერესებს? ჩემს გარდა:)

    • ე.ი. უკვე ორნი ვართ – უკვე კარგია. ისე, ეს პოსტი უკვე 2000 – მდე კაცს აქვს წაკითხული. ორი კომენტარი კი ნიშნავს, რომ მინიმუმ ორმა კაცმა გაიგო, რაც წერია.

  4. mshvenieri blogia. gaixaret

დატოვეთ კომენტარი

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s