القراءة والكتابه في منفذ الطابعه - سي شارب - مقـــالات - Top Coder
Welcome to our Site
الدخــول Or تسجـــيل
الأربعاء
2016-12-07
5:22 PM
تسجــــيل | دخـــول
الرئيسية » مقالات » سي شارب

القراءة والكتابه في منفذ الطابعه
القراءة والكتابه في منفذ الطابعه

مقـــدمه
يحتوي الحاسب على العديد من المنافذ التي تربطه مع العالم الخارجي  ويعتبر التحكم في هذه المنافذ وسيله مهمه جدا في التحكم في الاجهزه الخارجيه , فمن خلال تلك المنافذ تستطيع ارسال واستقبال البيانات من والى الاجهزة الخارجيه , ومن امثله تلك المنافذ , منفذ الطابعه او منفذ التوازي Parallel Port , ومنفذ USB وغيرها , وسوف نحاوال القاء الضوء على كيفيه التعامل مع هذا المنفذ في مقالتنا .
منفذ الطابعه

يعتبر من اهم المنافذ رغم ان استخدامه بدأ في الاختفاء بسبب تفوق وتطور منفذ ال USB , لكنه يعتبر وسيله جيده لنا للتعامل معها .
يتكون منفذ الطابعه من 25 منفذ او فتحه كالتالي :
1- منافذ البيانات ( D0 : D7 ) وهي 8 منافذ تبدأ من رقم 2 الى رقم 9 , وتستخدم لارسال البيانات من الحاسب .
2- منافذ القراءة ( S0 : S7 ) ولكن S0 S1 S2 غير ظاهره في المنفذ , وتستخدم لقراءة البيانات من اطراف خارجيه .
3- منافذ التحكم ( C0 : C7 ) لكن C4, C5, C6, C7 غير ظاهره ايضا , وتستخدم في المعتاد في اخراج البيانات , ولكنها قد تستخدم في الادخال ايضا .
4- منافذ الارضي ( G0 : G7 ) وهي منافذ تستخدم لأغلاق الدوائر الالكترونيه المتصله مع المنفذ .
عنوان المنفذ 
لكل منفذ في الحاسب عنوان , ولكي تستطيع الوصول الى منفذ بعينه لابد من معرفه العنوان الخاص به , ويستخدم الحاسب النظام العددي السادس عشر Hexadecimal في عنونة تلك المنافذ
للتعرف اكثر على الانظمة العدديه اقرأ المقال التالي ويمكنك معرفة عنوان المنفذ من خلال ال Device Manager
Right Click (My Computer) >> Manage >> Device Manager >> Ports >> Printer Port > Properties >> Resources > I/O Range

ستجد عنوان منفذ الطابعه كالتالي  0378 - 037f وهما رقمان بنظام السادس عشري ويعني ان عنوان المنفذ بالكامل يبدأ من 0378 اي بالنظام العشري 888 وينتهي ب 037f اي بالنظام العشري 895 ,  حيث نجد ان منافذ البيانات لها العنوان 0378 اي 888 , ومنفذ القراءه لها العنوان 0379 اي 889  وهكذا .
القراة والكتابه من خلال الكود
حيث تتيح لنا السي شارب التحكم في المنفذ , ولكن ذلك يتطلب مكتبه inpout32.dll حيث يوجد بها دوال API تتيح التواصل مع المنفذ , لتحميل المكتبه من الرابط http://topcoder.ucoz.com/load/5-1-0-5

اولا يجب ان تضيف المكتبة الى برنامجك قبل كتابة الكود , من Solution Explorer اضغط على اسم المشروع واختار Add Refrence وحدد مكان المكتبه

ستجد انا الملف اضيف الى المشروع ولكن تبقى خطوه مهمه وهي نسخ المكتبه الى فولدر debug
من ال solution explorer اختار الملف inpout.dll >> properties >> Copy to output Directory واختار اي القيمتين Always Copy او Copy if Newer


ونأتي للخطوه الاهم وهي الكود , فنحن سوف نستخدم دوال موجوده في تلك المكتبه وهي دوال API , ولكي نستخدم اي دوال API لابد من استخدام المكتبه System.Runtime.InteropServices وذلك حتى نستطيع استخدام ال DllImport attribute 
دوال الكتابه والقراءة
 
وتلك هما الدالتين الاساسيتين في الموضوع , حيث تستخدم الاولى لقراة حاله او قيمة المنفذ حيث تأخذ عنوان المنفذ وترجع قيمته , وتستخدم الثانيه لإرسال قيمه الى المنفذ وتأخد عنوان المنفذ والقيمة التي سترسل .

وتنحصر تلك القيمة بين 0 : 255 , حيث ان كل منفذ يتكون من 8 Bit ويكون وضع كل فتحه في المنفذ اما 0 او 1 , بمعني 0 يعني مغلق و 1 مفتوح وتكون قيمة المنفذ بالكامل في الحاله 0 ( 00000000 ) وفي الحاله 255 ( 11111111 ) , ويتنحصر بينهم جميع القيم , مثل ( 10110100 ) وهكذا , فهذه هي لغة الكمبيوتر التي يستطيع ان يفهما , لكن تسهيلا على المبرمج فقد تم التعامل مع ارقام عشريه ويقوم البرنامج بتحويلها الى رقم ثنائي وارسالها الى المنفذ -- ومن الضروري ان تكون لديك خلفيه ولو بسيطه عن الانظمة العدديه --

وكمثال فمثلا لو ارسلنا القيمه 185 الى منفذ البيانات الذي عنوانه 888
Output(888, 185);
ستكون حاله الفتحات الثمانيه كالتالي
D0 : 1
D1 : 0
D2 : 0
D3 : 1
D4 : 1
D5 : 1
D6 : 0
D7 : 1

حيث يتم تحويل الرقم العشري 185 الى ثنائي ليصبح 10011101 وترسل القيمة الى المنفذ و بمعنى اوسع سيكون المنفذ الذي له القيمه 1 به تيار قيمته 5 فولت  والمنفذ ذو القيمه 0 ليس به تيار .


وعند قراءة القيمة تستخدم الداله
int value = Inp(888);
وترجع قيمة المنفذ من الداله بقيمه عشريه ايضا , ويمكن قراءة منفذ القراءة بتغيير العنوان الى 889
تجـــربه
يمكنك اجراء تجربه صغيره للتعرف اكثر على كيفية عمل المنفذ بإستخدام Led صغير

حيث يمكنك ارسال قسمة الى منفذ البيانات وقراءة القيمة من خلال ال led
مثلا ارسل قيمة 255 للمنفذ , وهنا تكون جميع الفتحات مفتوحه اي بها تيار كهربي قيمته 5 فولت , فقط قم يتوصيل ال Led طرفه الارضي باي فتحه من فتحات منفذ الارضي ( G0 : G7 ) , وطرفه الاخر بفتحه من فتحات منفذ البيانات , وقم بتبديل الفتحات الثمانيه على التوالي ( D0 : D7 ) ستجد ان ال Led يضيئ مع كل الفتحات وذلك لأننا ارسلنا القيمه 255 وهي تعني 11111111 , وفي حالن تغيير القيمة الى 185 ستكون القيمة 10011101 وعند توصيل ال Led بفتحات المنفذ لن تضئ مع الفتحات D1 D2 D6 وذلك لأن القيمة لهما 0 اي مغلق , وهكذ يمكنك تغيير القيمة و استكشاف النتيجة

-- ملحوظه --
ال Led يتكون من طرفين , يمكنك التمييز بينهم عن طريق النظر داخل ال led ستجد ان هناك طرف اعلى من طرف من الداخل , هذا الطرف الاعلى هو الارضي والاخر هو الطرف الذي يوصل بمنفذ البيانات

ويمكنك قراءة اكثر عن ذلك في مقالة جميله في موقع Code Project
http://www.codeproject.com/KB/cs/csppleds.aspx
تحميل المشروع
  Written by :  Mohammed Mahmoud
الفئة: سي شارب | أضاف: ham_mody2000 (2011-08-13 3:46 PM)
مشاهده: 3778 | تعليقات: 1 | وسمات: parallel, port, inpout, dllimport, C# | الترتيب: 0.0/0


أترك تعليقك من خلال حسابك على الفيس بوك

تعليقات مشتركي الموقع

مجموع المقالات: 1
1  
شكراً لك ,أبحث عن هذا الموضوع منذ زمن طويل.

إضافة تعليق يستطيع فقط المستخدمون المسجلون
[ التسجيل | دخول ]
طريقة الدخول
بحث
Our Facebook community

تم إطلاق صفحة توب كودر على الفيس بوك

Advertisment
الأحـــدث
hitstatus
Copyright Mohammed Mahmoud © 2016
إنشاء موقع مجاني с uCoz