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

VC++ & Hardware - الفيجوال سي ++ و الاجهزة المادية

مغلق
بدأه عبدالرحمن في 25 أغسطس 2001 · 14 رد · 1,430 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم .

طبعا من مميزات لغة السي بلس بلس امكانية التعامل مع الهاردوير .

اريد مثال لكيفية التعامل مع اي قطعة هاردوير من خلال الفيجوال سي ++ .

تدرون ليش ؟

لاني الى الحين لم التمس الفروق الكبيرة بين الفيجوال بيسك والفيجوال سي ++ (طبعا هذا الكلام في تعاملي انا مع اللغتين ) لاني مبتدا .

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

اذا ما عليكم كلفة انكم تكتبوا مثال بسيط عشان نقدر نفهمه وتشرحوه .

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

على العموم انا منتظر ردودكم .

اخوكم عبدالرحمن

#2

السلام عليكم.

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

سوف أبحث عن البرنامج ضمن مكتبتي و عندما أجده سأضعه هنا:)

بس عطيني يومين أو ثلاثة:)

مع التحيات.

#3

اشكرك اخي عادل ..

ولكن الكرت اللي صممته ما هو متوفر عندي .

لذلك ما راح اقدر اتحكم فيه .

او يمكن انا فهمتك غلط .

انا اللي ابغاه اني اتحكم بهاردوير موجود عند كل الناس .

مثل الشاشة .

وذلك طبعا عن طريق ال VC++ .

ارجو انكم تكونوا فهمتوني .

يعطيكم العافية ..

#4

أخي عبدالرحمن إن ميزة الفيجوال سي++ عن غيرها هي في بناء ال Device Driver الذي يمكن أن يتحكم في الHardware أما عن كيفية التحكم في هذا ال Device فيمكن ذلك من خلال أي لغة كانت عن طريق ارسال رسائل إلى ال Device Driver وذلك من أجل التحكم في ال Devices من نوع WDM التي تعمل في Win2000 و Win98 .

عملية التحكم المباشر بكرت الشاشة ليست عملية أبدا لأن كل منتج من كروت الشاشة له أوامر التحكم الخاصة فيه .

يمكن أن نساعدك أكثر إذا شرحت لنا بالتفصيل لماذا تريد الوصول إلى كرت الشاشة مباشرة ؟؟؟؟؟

Coding on the Cloud and for the Cloud!

My Blog

#5

انا لا اريد التحكم بشيء معين .

وانما اريد ان ارى امكانية ال VC++ في التحكم في اي هاردوير .

لان التحكم بالهاردوير من مميزات هذه اللغة عن اللغات الاخرى .

وشكرا .

انا بالانتظار .

#6

انا اللي ابغاه اني احس بالتفوق على اللغات الاخرى باستخدامي لهذه اللغة .

ارجوكم

#7

طيب ما ابغى اتحكم بالهاردوير اذا انه لهذي الدرجة صعب

اريد شيء يميز الفيجوال سي ++ عن اللغات الاخرى .

يعني شيء اسويه بهذي اللغة ماتقدر اللغات الاخرى تسويه .

وشكرا ..

#8

يا أخي عبدالرحمن ،

آسف على التأخير لأنو أنت بتعرف أنو الواحد الوقت مو بأيدو!! :)

إن كل سطر تكتبه في VC هو أسرع بمقدار عشر مرات من لغة ال VB وبحوالي 2 إلى 5 مرات من الدلفي ..

ال VC التي تعتمد على لغة ++C هي أفضل بكثير من بقية اللغات ولا تقارن معهم ويكفي أنك تبرمج في بيئة OOP مائة في المائة . فهل يمكنك مثلا في الدلفي أن تعمل تحميل للعوامل Operator Overloading أو Multiple Inhiretince وغيرها الكثير .

يوجد في ++C مكتبة قياسية STL وهي تحتوي على العديد من الأمور المعدومة في باقي اللغات مثل بناء linked list و hash table أو map table ، والعديد غيرها وهي جاهزة من أجل الاستخدام .

استخدامك للمؤشرات بصورة سهلة جدا هو لوحده يكفي .

بالنسبة إلى برمجة الواجهات فهي مثل باقي اللغات وإن كانت باقي اللغات أسهل لما تقدمه من الكائنات الجاهزة . ولكنك يمكنك استخدام العديد من ال Classes أو الكائنات الجاهزة في برامجك .

بالنسبة إلى قواعد البيانات فهي نفسها عن باقي اللغات . وإن كانت ال VB أسهل فإن ال VC إذا أتقنتها فلن تحس بأي مشكلة في برمجة قواعد البيانات باستخدام أي من التقنيات OLE DB أو ODBC أو DAO أو ADO .

هل سألت نفسك إن كانت ال VB تدعم بناء برامج قواعد البيانات مباشرة باستخدام OLE DB . طبعا هذا مستحيل !! إن استخدامك لل OLE DB مباشرة هو اختصار الطريق واهمال لطبقة ال ADO التي في المنتصف .

هل سألت نفسك إن كنت تستطيع بناء OLE DB Provider في ال VB طبعا لا . وهذا هو عبارة عن مقدم خدمات لقواعد البيانات .

سوف أضرب لك مثال :

لدينا برنامج رسم مثل ال Corel Draw ولكن على شكل مبسط .. فأي لغة تختار :

إذا اخترت ال VB فسوف يأخذ معك وقت أكثر وجهد أكثر وسوف يكون البرنامج بطئ جدا (أساسا أنا لا أتخبل مثلا أنك تكتب خوارزمية معقدة في VB ) .

أما إذا اخترت ال VC فسوف تجد مرونة تامة في برمجة الخوارزميات والسرعة الهائلة بالمقارنة مع تلك والاستخدام الاقتصادي للذاكرة .

الملخص أنه يوجد العديد من الأشياء التي يمكنك أن تفعلها في VC ولا يمكنك فعلها في باقي اللغات الراقية...

Coding on the Cloud and for the Cloud!

My Blog

#9

عذرا على التدخل

ورغم رغبتي الشديدة في البرمجة بلغة VC++ إلا انني ألى حد الأن لم تقف الفيجوال بيسك والدلفي بين كافت مشاريعي وأغلبها كان في قيادة الدارات الألكترونية والمحركات وغيرها وحتى في اضافة دارات التحكم داخل الحاسب والسرعة في التعامل مع الدارات والمعدات ليست مطلوبة كثيرا لأن المبرمج هو من يحدد خط سير البرامج وكلما كان البرنامج منقح جيدا زاد الأداء مهما كانت لغة البرمجة والجهاز المستضيف للبرنامج وطبعا هذا الكلام لا ينطبق على البرامج التي تحتوي معلومات كثيرة وعلى برامج الرسوميات

ولكم تحياتي وجزيل شكري

Super Nova

#10

السلام عليكم ،،

اخي عبدالرحمن هل تريد أن تكتب برنامج بلغة السي يتعامل مع الهاردوير ويقوم بإطفاء الشاشة أو تغيير دقة الوان الشاشة أو الاتصال بالموديم؟؟؟ إذا كان هذا ما تقصد فليس هذا التعامل مع الهاردوير المقصود به في لغة السي و السي++ ، مسئلة قدرة لغة السي و السي++ في التعامل مع الهاردوير تربك كثيرا من المبتدئين في هذه اللغة .... الكثير الكثير من الناس رأيتهم يسألون عن هذه المسألة متناسين ان لغة السي هي لغة راقية لا تعتمد على منصة تشغيل واحدة ولا نظام تشغيل واحد !! و هم يريدون أن يقوموا بمثل هذه الاشياء و التي تعتمد بشده على منصة التشغيل و الاجهزة و نظام التشغيل !!

عموما السؤال يصبح :

- هل لغة السي تتعامل مع الهاردوير ؟؟

الجواب نعم !! و لكن ليس بالمفهوم السابق الذي الكثيرون يعتقدونه.... يوجد في السي مسئلة التعامل مع البت و هذا يفيد كثيرا كثير في كتابة نظم التشغيل و الدرايفر خاصة في نقل المعلومات بين الاجهزة !! بالنسبة لي كتبت برامج قيادة للينكس و كثيرا ما تعاملت مع البيانات على مستوى البت فيها ،، ولو فكر احد في تصميم نظام تشغيل فسيجد ان هذه المسئلة امامه كمتطلب اساسي في تصميم النظام، فكيف سترسل لاحد الاجهزة قيمة من نوع int و انت تعرف انه 4 بايت ... و الجهاز يستقبل 15 بت فقط ، هذا مستحيل و لن تتم العملية بنجاح !!

هناك شيئا اخر ... يوجد فئات للمتغيرات تحدد مكان و زمن بقائه في الذاكرة أو مسجلات المعالج ، إنهو register .... طبعا ينصح بترك مسئلة اختيار المتغيرات التي من هذا النوع للمترجم ... لكن لو فكرت في تصميم نظام تشغيل فستجد أنك مجبر لوضع المتغير من هذه الفئة رغم انف المترجم .

ربما تفكر و تقول اللغة تلك يتوفر فيها ما قلت هل هي تتعامل مع الهاروير ؟؟؟ الجواب انتظر لم انتهي بعد من كلامي السابق !! هناك عمليات كثيرة تجرى مع البت !! مثل bitwise و shif ... و هذه ضرورية جدا في التعامل مع الهاردوير .

بالنسبة لمقارنة لغة السي و السي ++ بلغات أخرى ، فأعتقد هذا شيء غير معقول !! فمثلا لغة الفيجوال بيسك و الدلفي و السي شارب و الجافا كلها تتعتمد على نظام التشغيل في عملها !!

إن ما نحتاجه في التعامل مع الهاردوير هو مترجم لغة يخرج لنا كود لا يعتمد على نظام التشغيل في عمله و هذا ما تنجزه السي و السي++ ، و تتأرجح تسقط عنده باقي لغات البرمجة .

طبعا لا تنسى مقدار التوافق بين لغة السي و السي++ و لغة الاسيمبلي و الذي يعطيها مقدار اكبر من الامكانيات .

انصحك يا عبدالرحمن ان تدرس البرمجة بالتدرج و التطبيق فهذا الذي سيبني عقلك وأدراكك و يصقل مواهبك البرمجية ....،

تقبل تحياتي ،،،

#11

اشكركم جزيل الشكر يا اخواني :

هاني وعبدالقادر ونيو .

طيب انا الحين فهمت . لكن ينقصني شيء واحد . وهو المثال .

اريد مثال يوضح ما قلتوه .

واشكركم مرة اخرى

#12

الأخ عبد الرحمن

فقط أعلمني وسوف ارسل لك مثال فيما ذكرتة لك وفي اللغات الثلاثة

Super Nova

#13

Vtech84@yahoo.com

واشكرك جزيل الشكر .

#14

ٍأكون معك قريبا أن شاء الله

Super Nova

#15

بالنسبه لي قد لا افيدك لاني لست متمرسا بالفيجوال سي ولكني اتعامل مع الهاردوير من خلال السي والسي++ اذ كنت تريد التعامل مع الهاردوير فلم تحدد ما هو بالضبط الذي تريد التعامل معه هل هو الشاشه او الهارك دسك او الفلوبي او

الخ .. وحتى لا اطيل الموضوع ان للشاشه مؤشر او عنوان في الذاكره الرئيسيه ثابت في كل جهاز لكن لااعتقد انه في كل الاجهزه واحد لا ادري اذا كان ثابت في كل الاجهزه فاذا اردت التعامل مع الشاشه تستخدم هذا المؤشر او العنوان وهو حسب علمي 0x3 فمثلا اذا اردت ان تكبر حجم الشاشه اي ملئ الشاشه تستخدم هذا الامر

setmode(0x3); 0 مع الهيدر

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

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

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