الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

إهداء: مشروع LPT Connection

مغلق
بدأه محمد معاشر في 8 نوفمبر 2005 · 5 رد · 2,223 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم ..

ارفقت ملف يحتوي على الشيفرة المصدرية "بلغة ++ C" لمشروع بسيط قمت بعمله في السنه الدراسيه الماضيه واحببت ان اشارككم ايه , عسى ان تعم الفائده بإذن الله . وهذا المشروع بعنوان "LPT Connection" وهو عبارة عن ربط بدائي لحاسوبين مع بعضهما البعض عن طريق منفذ الطابعة , بحيث يمكن ارسال الملفات من جهاز الى الاخر عن طريق كيبل خاص (DB 25), وهذا الكيبل موضح طريقة توليفة في داخل الملف المرفق ..

ويعتمد المشروع ببساطة على بناء برتوكول بسيط لتنسيق ومزامنة نقل "بايت" من جهاز الى الاخر , حيث يتم تقسيم البايت المراد إرساله الى جزئين , كل جزء عبارة عن 4 بت حيث يتم إرسال الجزء الاول وبعدها يتم إرسال الجزء الاخر , وطبعا هذة العملية ضرورية بسبب ان المشروع يتعامل مع المنفذ المتوازي القياسي , الذي لايملك الإ خمسة دبابيس إدخال " 5 بت " وهي لا تكفي لتمرير بايت كامل "8 بت"وبالتالي , وجب تقسيم البايت حتى نتمكن من ارساله كاملاً . وخوارزمية الارسال ببساطة كالتالي :-

1- تقسيم البايت المراد إرساله الى جزئين .

2- التأكد من أن المستقبل جاهز لإستقبال الجزء الاول .

3- إذا كان المستقبل جاهز , نرسل الجزء الاول .

4- التأكد من أن المستقبل جاهز لإستقبال الجزء الثاني .

5- إذا كان المستقبل جاهز , نرسل الجزء الثاني .

6- اخيرا يقوم المستقبل بتجميع الجزئين - عمليات إزاحة وتقنيع - ليكون البايت الكامل الذي تم إرساله .

ويحتوي الملف المرفق على البرامج التنفيذية و الشيفرة المصدرية في المجلد Source والذي يحتوي الملفات التاليه:

1- vc.h :- وهي عبارة عن مكتبة تحتوي على روتينات الواجهة الرسومية (Button,Window,ProgressBar).

2- Printer.cpp :- وهي عبارة عن مكتبة عامة للتعامل مع منفذ الطابعة .

واهم دالتين فيها هما :SendByte,ReciveByte .

3- Sender.cpp :- وهو عبارة عن برنامج ارسال الملف (المرسل) .

4- Reciver.cpp :- وهو عبارة عن برنامج إستقبال الملف (المستقبل).

واحب ان اذكر انه بعد تجربة البرنامج , وجد هناك بعض البطئ , وذلك بسبب ان البرنامج يستخدم الـPooling وهي عملية الانتظار وذلك عن طريق حلقة مفرغة , حتى يجهز المرسل او المستقبل .

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

احب ان اضيف انه لكي يعمل المشروع يجب تشغيله على أنظمة Win9x or WinME, حيث انه لن يعمل في نظامي Win2000 or WinXP ..

وايضاًًٌََُ , توجد هناك دالتين اخرى في المكتبة Printer.cpp هما Send_Text , Reciver_Text وهما تستخدمان في ارسال واستقبال النصوص ..

وايضا , يمكن تغير خوارزمية الارسال والاستقبال , لكي تتعامل مع وضع Bi-Direction بحيث يتم يمكن ارسال واستقبال بايت كامل من دون الحاجة الى عمليه التقسيم ..

ولا تنسونا من خالص دعائكم ...

واخر دعوانا أن الحمدلله رب العالمين ...

LPT_Connection.zip

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

#2

اخي ممتاز !

و إن شاء الله تطوره لاستخدام wireless المرة القادمة .

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#3

تسلم استاذ احمد , وان شاء سوف اطور الفكره ...

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

#4

رائع اخي بصراحة احببت ان اكون احدى متابعات اعمالك وان استفيد منك

اسال الله ان يوفقك

تحياتي

#5

والله انه مشروع رائع وفيه استفادة كبيرة كبيرة جدا

لكن السؤال , هل يمكن تطبيق TCP\IP Stack على هذا المشروع

الله يبارك فيك اخي ويعطيك الف عافية

تم تعديل هذه المشاركة بواسطة Gsalah في 2 نوفمبر 2006 في 14:30

7asbi.gif
#6

شكرا اخت shaima , والله يوفق الجميع ..

اقتباس
لكن السؤال , هل يمكن تطبيق TCP\IP Stack على هذا المشروع

ليس لهذه الدرجة اخي Gsalah , ففكرة برتوكول الارسال والاستقبال بسيطة وبدائيه , ولاتناسب عمل TCP\IP Stack ..

تم تعديل هذه المشاركة بواسطة محمد معاشر في 3 نوفمبر 2006 في 17:41

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

هذا الموضوع مغلق.

مواضيع مشابهة