السلام عليكم ورحمة الله وبركاته
للتحكم بمنفذ الطابعه بسهوله مع ال Win98/Xp يمكن استعمال :
TDLPortIO فهو سهل وجيد ويمكن الحصول عليه مجانا .
استعملته مع ال C++Builder ويمكن استعماله مع ال Delphi
ارجو الاستفاده
لنكن الافضل , هكذا كنا.
السلام عليكم ورحمة الله وبركاته
للتحكم بمنفذ الطابعه بسهوله مع ال Win98/Xp يمكن استعمال :
TDLPortIO فهو سهل وجيد ويمكن الحصول عليه مجانا .
استعملته مع ال C++Builder ويمكن استعماله مع ال Delphi
ارجو الاستفاده
لنكن الافضل , هكذا كنا.
من وين لاقي TDLPortIO
أنا لقيت ملف دي ل ل لكن ما عرفت أضمنه ضمن
مشروعي إذا فيكم تقولوا لي كيف بساويها !
السلام عليكم
اخي ...
انا حصلت على النسخه التي تعمل مع الC++Builder من موقع Borland
فال TDLPortIO هو كمبنينت جاهز للاستعمال حتى انه مرفق معه شرح الاستعمال وكود
لكيفية تنصيب ال Driver !
يمكنك الحصول على النسخه الخاصه بال Delphi اذا بحثت قليلا في Google
http://www.google.com/search?hl=en&q=TDLPortIO
http://www.delphi32.com/vcl/2467
اخوك ماهر
لنكن الافضل , هكذا كنا.
السلام عليكم ورحمة الله وبركاته
دائماً أصل متأخراً ............ المهم
أخي الكريم استعن بهذا ال دي ل ل كما أرفقت لك معه طرق استدعائه من موقه
وراجع هذا الموضوع الرائع والشامل للأخ hanysaad
ولا تنساني بصالح الدعاء بظهر الغيب
تم تعديل هذه المشاركة بواسطة Aboalnoor-Delphi7 في 16 مايو 2006 في 01:37
********************************************************************************
آخر وصايا سيدنا محمد صلى الله عليه وسلم:الصلاة الصلاة وما ملكت أيمانكم

هاجر اللذائذ وانبـرى ليثـاً بادغـال الشـرا
بـاع الحيـاة رخيـصـة لله والله اشـتـرى
خذو مني فؤادي وامنحوني سلاحي أمتطي صهو المنون
فإني لم أعش لأذوق ذلاً ولا لأذوب في حضن حنون
موقع الفريق الاسلامي المتحد للبرمجة والإلكترونيات
إيميلي هو:Aboalnoor@maktoob.com
ياهو :adnanalabuo@yahoo.com
هوت ميل:AdnanAlabuo@hotmail.com
أخوتي الأعزاء في هذا المنتدى الرائع حصلت على هذا الملف من أحد أصدقائي عن المنافذ التسلسلية ولكن للأسف أنه مكتوب بلغة الـ C على ما أعتقد وأتمنى من الذين لهم معرفة تحويل الأكواد إلى لغة الدلفي.
وها هو :
المنفذ التسلسلي
يختلف المنفذ التسلسلي عن المنفذ التفرعي في طريقة إرسال المعلومات حيث ترسل المعلومات وتستقبل على خط واحد بشكلٍ متسلسل ( بت واحد في كل مرة ) . بما أن أجزاء الحاسب الداخلية تتبادل المعطيات فيما بينها بشكل تفرعي لذلك لا بد من وجود دارة تحول المعلومات من الشكل التفرعي إلى الشكل التسلسلي قبل إرسالها عبر المنفذ التسلسلي. لذلك تعتبر عملية الاتصال التسلسلي أعقد بكثير من الاتصال التفرعي. إلا أن هذا التعقيد يقابله فوائد كثيرة أهمها القدرة على إرسال المعلومات إلى مسافات أكبر بكثير من المسافات الممكنة في حالة الإرسال التفرعي. يوجد عادةً في الحواسب الشخصية اثنين من المنافذ التسلسلية يرمز لها بـ COM1 و COM2 على الترتيب ويمكن أن يحتوي حتى أربعة منافذ تسلسلية ( .. COM3 و COM4) .
تسمى الدارة التي تقوم بالإرسال والاستقبال التسلسلي في الحاسب الشخصي بالمرسل والمستقبل غير التزامني العام UART (أو 8250) تتصل هذه الدارة مباشرةً مع ممرات الحاسب.
يستخدم الحاسب الشخصي بروتوكول خاص بالاتصال التسلسلي يرمز له بـ RS-232 . يعرف هذا البروتوكول شكل المنفذ التسلسلي (المواصفات الميكانيكية) وجهود وترتيب إشارات المعلومات والمصافحة (المواصفات الكهربائية).
يوجد نوعين من المنافذ التسلسلية ، الأول يتألف من 25 قطب وهو الشكل الأصلي المعرف في البروتوكول ويدعى D25 . والثاني صغير فيه 9 أقطاب ويدعى D9 وقد ظهر في الحواسيب الشخصية الحديثة نظراً لعدم استخدام الأقطاب الأخرى في المنفذ الكبير .
أقطاب المنفذ التسلسلي
GND أو SG (الأرضي) ويؤمن أرضي مشترك لدارتي الإرسال والاستقبال .
TXD (Transmitted Data) المعلومات المرسلة (خرج) . يتم إرسال المعلومات على هذا القطب.
RXD (Received Data) المعلومات المستقبلة (دخل) . يتم استقبال المعلومات على هذا القطب.
DTR (Data Terminal Ready) (خرج) . خط مصافحة يدل على أن طرفية المعطيات (الحاسب) جاهزة للإرسال.
DSR(Data Set Ready) (دخل) . خط مصافحة يدل على أن جهاز المعطيات ( المودم) جاهز لاستقبال المعلومات من الحاسب .
RQS( Request To Send) (خرج) . خط مصافحة يطلب من جهاز المعطيات القيام بعملية إرسال.
CTS (Clear To Send) (دخل) . خط مصافحة يخبر الطرفية (الحاسب) عن إمكانية بدء عملية إرسال.
CD (Carrier Detected) (دخل) يخبر الحاسب عن توفر إشارة الحامل (نغمة التون).
RI (Ring Indicator) (دخل) يخبر الحاسب عن ورود مكالمة .
تستخدم الإشارتان الأخيرتان فقط في حالة وصل مودم .
يمكن تحقيق الحد الأدنى من الاتصال بدون مصافحة باستخدام ثلاثة خطوط فقط هي SG و TXD وRXD .
الإشارات الكهربائية
يرمز للمستوى المنطقي 1 (علامةMark ) بجهد يتراوح بين -5 و -15 فولت في المخارج و بين -3 و -15 فولت في المداخل . ويرمز للمستوى المنطقي 0 (فراغ Space) بجهد يتراوح بين 5 و 15 فولت في المخارج و 3 و15 في المداخل . بما أن هذه الجهود تختلف عن الجهود المنطقية داخل الحاسب ( 0 و 5 فولت ) لذلك توجد دارات خاصة لتحويل المستويات المنطقية العادية إلى إشارات متوافقة مع RS-232 وبالعكس. توضع هذه الدارات بين UART وأقطاب المنفذ التسلسلي.
إرسال المعلومات تسلسلياً
يتم إرسال المعلومات على شكل إطارات يحتوي كل إطار على بايت كامل ( 8 بت) بالإضافة إلى بتات تحكم إضافية.
يتألف الإطار من :
- بت بداية Start Bit : يبتدئ الإطار بهذا البت لتنبيه الجهاز المستقبل بوصول المعطيات ومزامنة الآلية التي تفصل البتات عن بعضها. ويكون هذا البت عبارة عن فراغ Space وذلك لأن الخط عند عدم إرسال شيء يكون في حالة العلامة Mark .
- بتات المعطيات Data Bits : وتمثل المعلومات المرسلة وتتألف من 8 بتات في الحالة العادية ويمكن أن تكون 7 بتات في حال إرسال رسائل نصية بترميز آسكي (حيث يمكن الاستغناء عن البت الأخير).
- بت الإزدواجية Parity Bit : تستخدم عملية فحص الإزدواجية للتحقق من صحة الإرسال. يضاف بت يدعى بت الإزدواجية إلى الإطار . تعتمد قيمة هذا البت على محتويات بتات المعطيات وتحسب بعدة طرق. الإزدواجية الزوجية تعني أن عدد العلامات ( الواحدات المنطقية) في بتات المعطيات بما فيها بت الإزدواجية زوجي. أما الإزدواجية الفردية فهي تحسب بحيث يكون عدد العلامات فردي.
- بتات التوقف Stop Bits يوجد في نهاية كل إطار عدد من بتات التوقف ويمكن أن تكون بت واحد أو بت ونصف أو بتان . وتكون بتات التوقف في حالة Mark وذلك لتمييز الإطار عن الإطار التالي الذي سيبتدئ حتماً بعلامة Space تمثل بت البداية .
يمكن إرسال و استقبال المعلومات عبر المنفذ التسلسلي بعدة طرق . يمكن استخدام خدمة BIOS ذات الرقم 14H للقيام بذلك وتعتبر الطريقة الأسهل أو يمكن برمجة UART بشكل مباشر وهي الطريقة التي تؤمن المرونة الكاملة. أما في نظام Windows فيجب استخدام وظائف API الخاصة بالاتصالات التسلسلية.
استخدام المقاطعة 14H
تقدم هذه المقاطعة أربع وظائف خاصة بالاتصالات التسلسلية . يوضع رقم الوظيفة ( من 0 حتى 3) في المسجل AH. ويوضع رقم المنفذ التسلسلي في المسجل DX .
1- وظيفة تهيئة بارامترات الاتصال ( AH = 0 )
يوضع رقم المنفذ في DX وصفر في AH و بايت تحديد البارمترات في AL ثم تصدر المقاطعة INT 14H . نبين فيما يلي شكل بايت تحديد البارامترات :
0 1 2 3 4 5 6 7
طول الكلمة بتات الإزدواجية سرعة البود
التوقف
البتان 0 و 1 يمثلان طول الكلمة ، 11 تعني 8 بتات و 10 تعني 7 بتات .
البت 2 يحدد عدد بتات التوقف 0 تعني بت واحد و 1 تعني بتان
البتان 3 و 4 يحددان الإزدواجية حسب الجدول التالي:
نوع الإزدواجية البت 3 البت 4
لا يوجد 0 0 أو 1
فردية 1 0
زوجية 1 1
البتات 5 و 6 و 7 يحددان سرعة البود
سرعة البود البت 5 البت 6 البت 7
110 0 0 0
150 1 0 0
300 0 1 0
600 1 1 0
1200 0 0 1
2400 1 0 1
4800 0 1 1
9600 1 1 1
2- وظيفة إرسال رمز ( AH = 1 )
يوضع رقم المنفذ في DX و رقم الوظيفة 1 في AH و الرمز المراد إرساله في AL ثم تصدر المقاطعة INT 14H . لا يرسل الرمز إلا عند توفر إشارات المصافحة اللازمة .
يحتوي AH عند العودة على رمز الخطأ ، إذا كان البت 7 يساوي 0 يكون الإرسال ناجحاً أما إذا كان 1 فإن البتات المتبقية تبين نوع الخطأ بنفس طريقة الوظيفة 3 .
3- وظيفة استقبال رمز ( AH = 2 )
يوضع رقم المنفذ في DX و رقم الوظيفة 2 في AH ثم تصدر المقاطعة INT 14H . بعد العودة يحتوي AH رقم الخطأ ، إذا كان يساوي 0 يكون الاستقبال ناجحاً ويحتوي AL في هذه الحالة البايت المستقبل ، أما إذا لم يكن 0 فإنه يشير إلى نوع الخطأ حسب ترميز الوظيفة 3 .
4- وظيفة قراءة حالة المنفذ ( AH = 3 )
تقدم هذه الوظيفة معلومات عن حالة المنفذ التفرعي بعد العودة من المقاطعة يحتوي AX على كلمة الحالة .
يبين الجدول التالي معنى كل بت عندما يكون 1 .
البت المعنى عندما يكون 1
AH 7 انقضاء الوقت
6 مسجل إزاحة الإرسال فارغ
5 مسجل مسك الإرسال فارغ
4 ورود رمز توقف
3 خطأ إطار
2 خطأ ازدواجية
1 خطأ تجاوز
0 توفر المعطيات
AL 7 كشف إشارة خط الاستقبال
6 مؤشر الرنين
5 DSR
4 CTS
3 تغير إشارة خط الاستقبال
2 جبهة صاعدة على خط مؤشر الرنين
1 تغير DSR
0 تغير CTS
برمجة المنافذ التسلسلية في نظام Windows :
يؤمن نظام Windows طريقة سهلة للتعامل مع المنافذ التسلسلية حيث يتعامل معها كأنها ملفات عادية ويستخدم نفس وظائف API الخاصة بالملفات للتحكم بالمنافذ التسلسلية . وسنشرح فيما يلي كيفية استخدام هذه الوظائف للقيام بإرسال واستقبال المعلومات عبر المنافذ التسلسلية.
فتح المنفذ التسلسلي - CreateFile
تستخدم الوظيفة CreateFile للحصول على مقبض Handle للمنفذ التسلسلي حيث تستخدم الأسماء COM1 أو COM2 أو... كاسم ملف . ويستخدم الشكل التالي لفتح المنفذ COM1:
HANDLE hCom = CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,NULL,OPEN_EXISTING,0,NULL);
تحتوي hCom بعد العودة من الوظيفة مقبض للمنفذ Com1 إذا كان الاستدعاء ناجحاً و إلا تكون قيمته صفر.
الحصول على حالة المنفذ - GetCommState
تعطي هذه الوظيفة بنية معطيات تحتوي على مواصفات الاتصال لمنفذ معين ويأخذ بارامترين ، الأول هو مقبض المنفذ والثاني مؤشر إلى بنية المعطيات التي ستوضع فيها المعلومات .
DCB dcb;
BOOL f = GetCommState(hCom,&dcb);
تعطي هذه الوظيفة قيمة منطقية تدل على النجاح أو الفشل . أما dcb فتحتوي معلومات عن المنفذ التسلسلي مثل سرعة البود وطول الكلمة ونوع فحص الإزدواجية ...الخ .
تغيير حالة المنفذ - SetCommState
يمكن تهيئة المنفذ ببارامترات جديدة باستخدام كتلة المعطيات DCB المذكورة سابقاً . يمكن استخدام نفس الكتلة التي حصلنا عليها من GetCommState بعد إجراء التغييرات اللازمة كما في المثال التالي:
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
f = SetCommState(hCom,&dcb);
يقوم المثال السابق بتهيئة المنفذ التسلسلي على سرعة 9600 بت في الثانية وطول كلمة 8 بت بدون ازدواجية وبت توقف واحد.
القراءة من المنفذ - ReadFile
تقرأ هذه الوظيفة عدداً محدداً من البايتات من المنفذ التسلسلي وتضعها في الموقع الذاكري المشار إليه بالمتحول الوسيط الثاني . المثال التالي يقرأ 20 بايت من المنفذ التسلسلي وتضعها في المصفوفة Buff ويضع في Num عدد البايتات المقروءة فعلاً .
DWORD Num;
char Buff[20];
BOOL r = ReadFile(hCom, &Buff, sizeof(Buff), &Num,NULL);
تعيد الوظيفة قيمة منطقية تدل على نجاح العملية أو فشلها.
الإرسال عبر المنفذ التسلسلي – WriteFile
لهذه الوظيفة نفس بارامترات وظيفة القراءة . المثال التالي يرسل القيمة 100 إلى المنفذ التسلسلي
DWORD Num;
char Buff = 100;
BOOL r = ReadFile(hCom, &Buff, sizeof(Buff), &Num,NULL);
ولا تنسوني بصالح الدعاء بظهر الغيب ......... أخوكم أبو النور.
والله ولي التوفيق.
********************************************************************************
آخر وصايا سيدنا محمد صلى الله عليه وسلم:الصلاة الصلاة وما ملكت أيمانكم

هاجر اللذائذ وانبـرى ليثـاً بادغـال الشـرا
بـاع الحيـاة رخيـصـة لله والله اشـتـرى
خذو مني فؤادي وامنحوني سلاحي أمتطي صهو المنون
فإني لم أعش لأذوق ذلاً ولا لأذوب في حضن حنون
موقع الفريق الاسلامي المتحد للبرمجة والإلكترونيات
إيميلي هو:Aboalnoor@maktoob.com
ياهو :adnanalabuo@yahoo.com
هوت ميل:AdnanAlabuo@hotmail.com
هذا الموضوع مغلق.