الدرس الثالث الفجول بيسك و دوره في التحكم

Spread the love
الدرس الثالث الفجول بيسك و دوره في التحكم  أضيف في: 20-5-1427هـ
بسم الله الرحمن الرحيم

بعد ان تعلمنا معاً الاعداد الثنائية و كيفية الحويل بينها و فهمنا خصائص و عمل منفذ الطابعة , ننتقل الى القسم البرمجي من الدورة, كما ذكرت في السابق, سأشرح طريقة التحكم برمجيا بواسطة الفجوال بيسك, لاسباب كثيرة منها انه سهل و سريع و ايضا لان اغلب الناس يعرفون الفجول بيسك اكثر من غيره , حتى غير المبرمجين , يعرفون او يسمعون بالفجول بيسك اكثر من غيره.

قبل البدء احب ان اذكر بعض الملاحظات التي سيواجهها البعض , و لتوفير وقت طرح اسئلة المشاكل التي قد تواجه البعض فاذكر النقطتين التاليتين:

1. اولا نحتاج الى مكتبة يستطيع من خلالها الفجول بيسك ان يتعامل مع منفذ الطابعة , هي عبارة عن ملف تستطيعون انزاله من الرابط التالي

اضغط هنا

ملاحظة هامة : الملف هذا يجب وضعه في مجلد العمل , يعني اول ما تفتح ملف جديد في الفجول بيسك , احفظه على طول و حطه في مجلد معين , و حط الملف ايضا في نفس المجلد, هذا كل مافي الامر!

2. لن تعمل المكتبة مع الوندوز 2000 او الوندوز اكس بي, ستعمل ان شاء الله في الوندوز ملنيوم و 98.

لنبدأ العمل بعون الله:

افتح ا لفجول بيسك و اختر standard EXE و اضغط على open

اضف الى الفورم الذي تراه امامك زرين امر (command buttons) وغير الcaption كما هو موضح في الصورة:

الان يجب اضافة module و هو بالضغط باليمين على كلمة project في القائمة الموجودة على اليمين كما هو موضح في الصورة:

الان نكتب التالي في داخل الmodule

Public Declare Sub Out Lib “inpout32.dll” Alias _
“Out32” (ByVal PortAddress As Integer, ByVal Value As Integer)


يجب ان يكون الكود مشابه تماماً لما ترونه في الصورة التالية:

يفضل نسخ الجملة في الاعلى بل اطلب نسخة حتى لا تظهر مشاكل تعود لعدم كتابته بالطريقة الصحيحة. عموما الكود الخاص بالتحكم سيكون كالتالي كما هو موضح في الصورة:

لنشرح الكود الآن:

الكوماند الاول هو زر ( شغل) و يحتوي على الكود التالي:

Out &H378, 1

out هو الامر الذي ينفذ اخراج الفولت و التحكم فيه ( كما ذكرنا صفر وواحد , يعني تشغيل و اغلاق فقط- حاليا)

&H378, هو العنوان المراد التحكم به, و هو عنوان منفذ الطابعة الديفولت في اغلب الاجهزة و الارقام هي بنظام السداسي العشري( الهكس)

1 , هو الرقم بالنظام العشري , وهنا هو بيت القصيد, هنا نغير الرقم بحسب حاجتنا, اذا اردنا تشغيل D1 فقط فنكتب 1 ,و اذا اردنا مثلا تشغيل D1 and D2 and D3 يعني بالعدد الثنائي 111 و بتحويلها الى النظام العشري نحصل على الرقم 7 , نضعه مكان الرقم 1 و ستعمل الابر الثلاث ان شاء الله ( اعتقد بدأ الان الاخوان يربطون بين الدروس الماضية).

الكوماند الثاني هو لاغلاق جميع ما تم تشغيله من ابر, بالتصفير, لاحظوا هنا , اننا نغلق كل شي و ليس شيئا واحد او ابرة واحدة.

الامر الاخير هو امر ينفذ مع بداية تشغيل البرنامج , في اغلب الاحيان عند توصيل منفذ الطابعة و تشغيل الكمبيوتر تكون جميع المنافذ مشتغلة و تعطي 5 فولت بشكل افتراضي , فيجب تصفيرها في البداية حتى نتحكم بها بالشكل المطلوب.

اذا فرضنا اننا بعد تشغيل D1 and D2 and D3 اردنا ان نغلق D3 و نبقي على البقية يعملون , ماذا نفعل؟؟ هذا السؤال انتظر الاجابة عليه بعد قراءة الدرس لاعلم مدى استيعابكم.

اعتقد ان الامور اتضحت اكثر و اكثر الان, كل ماعلينا هو التأكد من ذلك بشكل عملي, و توصيل كيبل الى منفذ الطابعة و بعد الانتهاء من البرمجة او المثال المذكور, نوصل ال voltmeter بمنفذ الطابعة , وصلة نوصلها بالابرة الثانية و الوصلة الاخرى نوصلها بالابرة رقم 25 و نشغل البرنامج و نرى تغيير الفولت فيه. صورة للvoltmeter موجودة هنا:

يمكن توصيل LED الى الابر التي ذكرتها و عند تشغيل البرنامج بنجاح سيضيء الLED و عند الضغط على اغلاق سيطفأ الLED

**** الاخوة المبتدئين لا تقرأوا هذه الفقرة لانكم لن تحتاجونها و يمكن تزيد التعقيد ان وجد****

وحتى لا نظلم اصحاب الانظمة الاخرى مثل اللنكس , فاني وجدت كود للغة السي ( لم اجرب الطريقة لكنني وجدتها في احد المواقع)

#include
#include
#include
#include

#define base 0x378 /* printer port base address */
#define value 255 /* numeric value to send to printer port */

main(int argc, char **argv)
{
if (ioperm(base,1,1))
fprintf(stderr, “Couldn’t get the port at %xn”, base), exit(1);

outb(value, base);
}

الان احفظ الملف باي اسم و ليكن lpt_test.c ثم نفذ الامر التالي:

gcc -O lpt_test.c -o lpt_test

تكد من انك الرووت, و نفذ الامر التالي:

chmod +s lpt_test

و شغل البرنامج و ان شاء الله سيعمل معك , مع العلم ان الرقم 255 هو الرقم العشري بمعنى ان كل الابر ستعمل وقتها , غير القيمة الى اي قيمة تريدها حتى تملك التحكم الاكبر.

**** انتهت فقرة التعقيد****

هنا نكون قد وصلنا الى نهاية الدرس الثالث و اعتقد ان بعض الاسئلة و الاستفسارات التي كانت موجودة قبل الوصول لهذه المرحلة قد تمت الاجابة عليها , و ان شاء الله في نهاية الدورة ستتضح كل الامور الغامضة في هذا الموضوع.

لا تنسونا من الدعاء,

تحياتي

الكاتب: مرشد

الكاتب geek4arab

geek4arab

مواضيع متعلقة

التعليقات مغلقة