سؤال

أنا أبحث عن أدوات وتقنيات للنماذج الأولية (النماذج الأولية الافتراضية)، ومحاكاة، واختبار رمز C جزء لا يتجزأ بعمق على Windows Desktop، بما في ذلك بناء ألواح أمامية مضمنة واقعية تتكون من الأزرار، المصابيح، وشاشات LCD (كلا الجرافيك).

أنا مهتم على وجه التحديد بمهارة منخفضة المستوى، باستخدام رمز C نقي و API Win32 RAW بدلا من MFC و .NET / C # أو VxWidgets أو QT.أود أيضا استخدام أدوات التطوير المجانية، مثل Visual C ++ Express مع Platform SDK و Resedit لتحرير الموارد.

أنا أبحث عن أمثلة كود لجعل الرمز LCDs (من أحادية اللون إلى اللون 24 بت) مع واجهة بيكسل فعالة، وشاشات الكريستال السائل متعددة القطاعات والأزرار التي تجرها المالك التي تستجيب إلى "الاكتئاب" و "صدرالأحداث.

هل كانت مفيدة؟

المحلول

أنا مندهش لأن سؤالي الأصلي أثار الكثير من سوء الفهم وتعليقات سلبية. تسمى إستراتيجية تطوير رمز C مضمن عميق على جهاز واحد (E.G.، جهاز كمبيوتر) وتشغيله على آخر (المستوكب المكرر) "الاستهداف المزدوج" وهو أمر شائع حقا. على سبيل المثال، تطوير واختبار التعليمات البرمجية المضمنة بعمق على جهاز الكمبيوتر هو حجر الزاوية في الكتاب الأخير "تطوير اختبار-اختبار" من قبل جيمس جيمانينج.

تجنب اختناقات الأجهزة المستهدفة بالاستهداف المزدوج

يرجى ملاحظة أن الاستهداف المزدوج لا يعني أن الجهاز المضمن له علاقة بالكمبيوتر. لا يعني أن المحاكاة يجب أن تكون الدورة الدقيقة مع وحدة المعالجة المركزية المستهدفة المدمجة.

الاستهداف المزدوج يعني ببساطة أنه من يوم واحد، تم تصميم التعليمات البرمجية المضمنة (عادة في C) لتشغيلها على منصتين على الأقل: الأجهزة المستهدفة النهائية وجهاز الكمبيوتر الخاص بك. كل ما تحتاجه حقا لهذا هو مترجمين ج: واحد لجهاز الكمبيوتر وآخر للجهاز المضمن.

ومع ذلك، فإن استراتيجية الاستهداف المزدوجة تتطلب طريقة محددة لتصميم البرامج المضمنة بحيث يتم التعامل مع أي تبعيات للأجهزة المستهدفة من خلال واجهة محددة بشكل جيد غالبا ما تسمى حزمة دعم اللوحة (BSP). تحتوي هذه الواجهة على تطبيقين على الأقل: واحد للمستهدف الفعلي وواحد للكمبيوتر الشخصي، على سبيل المثال تشغيل Windows. مع هذه الواجهة في مكانها، يمكن أن تظل الجزء الأكبر من التعليمات البرمجية المضمنة بشكل غير مدرك تماما لتنفيذ BSP المرتبط به ولهذا يمكن تطويره بسرعة على جهاز الكمبيوتر، ولكن يمكن أيضا تشغيله على الأجهزة المستهدفة دون أي تغييرات .

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

toolkit win32 gui

عند تطوير رمز جزء مضمن للأجهزة ذات واجهات المستخدم غير التافهة، يعمل المرء في كثير من الأحيان في مشكلة تمثيل الألواح الأمامية المضمنة كعناصر GUI على جهاز الكمبيوتر. المشكلة شائعة جدا، مما فاجأ حقا أنه لا يمكن لأحد هنا أن يوصي مكتبة موجودة أو مشروع مفتوح المصدر، والذي من شأنه أن يوفر واجهة C-Simple C فقط للعناصر الأساسية، مثل LCDs والأزرار والمصابيح. هذا ليس حقا معقدا، ومع ذلك يبدو أن كل مطور مضمن عليه لإعادة اختراع هذه العجلة مرارا وتكرارا.

لذلك، لمساعدة المطورين المضمنين المهتمين بالأجهزة النموذجية المضمنة على نظام التشغيل Windows، لقد أنشأت "مجموعة أدوات Win32 Gui Fin32" ونشرها عبر الإنترنت بموجب ترخيص SPL مفتوح المصدر (انظر ). تعتمد مجموعة الأدوات هذه فقط على واجهة برمجة تطبيقات Win32 RAW في C وتقدم حاليا العناصر التالية:

  1. dot-matrix عرض لعرضات فعالة، مثل شاشات الكريستال السائل الرسومية، OLEDs، إلخ. مع لون يصل إلى 24 بت

  2. عرض القطاع للشاشة المجزأة مثل شاشات الكريستال السائل القطاعية، والجزء المصابيح مع الصور النقطية العامة المخصصة للقطاعات.

  3. أزرار مرسومة من المالك مع "مكتئب" مخصص و "تم إصداره" الصور النقطية وقادرة على توليد أحداث منفصلة عند الاكتئاب ومتى تم إصدارها.

  4. تأتي مجموعة الأدوات بمثال ومذكرة تطبيق (انظر http://www.state-machine .com / Win32 / an_win32-gui.pdf )، إظهار كيفية التعامل مع المدخلات من الأزرار التي تجرها المالك والأزرار العادية والوحة المفاتيح والماوس. يمكنك أيضا عرض عرض تجريبي متحرك في http://www.state-machine.com/win32/front_panel.html < / a>.

    فيما يتعلق بحجم وتعقيد مجموعة أدوات "اللوحة الأمامية WIN32 واجهة المستخدم الرسومية"، يستغرق تنفيذ عناصر GUI المذكورة أعلاه حوالي 250 خطا فقط من C. المثال مع جميع مصادر المدخلات والكثير من التعليقات تصل إلى حوالي 300 خط من C. تم اختبار مجموعة الأدوات باستخدام Visual C ++ Express 2010 المجاني (باستخدام SDEL منصة Express Edition) ومحرر موارد Resedit المجاني.

    استمتع!

نصائح أخرى

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

لن ترغب في قضاء الوقت الإضافي مع انخفاض مستوى C و Win32 واجهة برمجة تطبيقات Win32 حتى يتم مسح متطلبات المشروع بما يكفي لأنك عرفت أن هذا كان متطلبا مطلقا لتوليد المشروع النهائي ( ربما خادم / كمبيوتر شخصي أداة المراقبة؟ ). حتى ذلك الحين تريد سرعة التطوير. محظوظ بالنسبة لك الصناعة لديها أدوات للنماذج الأولية السريعة وتطوير الأجهزة كما تصف.

تفضيلتي للنماذج الأولية مع التطوير المضمن

كما هو الحال بالنسبة لرأيي كمطور، أحب .NET MicroframeWork (.NETMF) ببساطة لأنني بالفعل مطور Microsoft .NET ويمكن أن نقل الكثير من مهاراتي الحالية. من بين النموذج الأولي مع متحكم فاس باستخدام C # ضمن Visual C # Express 2010 (مجاني كما تريد). لها سريعة وسهلة وأنت تعمل على صميم مشروعك في دقائق.

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

معالجة سؤالك تعليقات Bounty

يمكن تطوير

أجزاء كبيرة مذهلة من البرامج المضمنة على كمبيوتر سطح المكتب بدلا من الهدف المدمج للغاية. هذا يمكن أن يتحسن تجنب "Batterleneck النظام المستهدف" الإنتاجية حسب حجم الحجم، إذا فعلت الحق. ومع ذلك، إلى تطوير البرامج المضمنة على سطح المكتب، يحتاج المرء إلى محاكاة واجهة المستخدم مكونات، مثل العرض (كل من مجزأة وزيادة الرسومية)، المصابيح، المقابض، والأزرار. أنا أبحث عن هذا واجهة المستخدم مكونات مكتوبة في واجهة برمجة تطبيقات Win32 عادي في C لسهولة التكامل مع رمز مضمن يتم تطويره واختباره على Windows Desktop Windows.

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

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

بيئات التطوير الحديثة مثل Visual C # Express 2010 مع Microcontroller Fez يمكن تجميعها، ادفع إخراج المشروع إلى ميكروكنترولر، ثم ابدأ تصحيح الأخطاء بنفس السرعة أو أسرع أكثر مما يمكنك ترجمةه وتشغيل منخفض تطبيق Windows APP في C محاكاة LCDS أو LEDs أو مفاتيح، وما إلى ذلك ... لذا فإن تعليقك، "تحسين الإنتاجية بترتيب من حيث الحجم"، ببساطة لم يعد صحيحا مع الأدوات الحديثة. (قد يكون قبل السنوات العشر الماضية أو نحو ذلك.)

إذا كنت حقا، فقط أريد فقط محاكاة الأجهزة المضمنة بصريا على جهاز كمبيوتر، استخدم شيئا مثل Adobe Flash لاستكشاف UI. ولكن لا تكرر رمز عن طريق الترميز لنظام التشغيل Windows عندما لن يتم تشغيل الجهاز النهائي الذي تقوم به النماذج الأولية (ربما سيكون، لكنك لم تقل ذلك). استخدم أسرع أدوات النماذج الأولية الأكثر موثوقية المتاحة اليوم، والتي هي بشكل لا لبس فيه لا مستوى منخفض C و Win32 API!

ربما استخدام Stackexchange للإلكترونيات؟

لأن هذا موقع موجه نحو التنمية، فإن مناقشة حول مزايا الأجهزة المضمنة المحددة ليست ذات صلة حقا. إذا قررت إعادة تركيزها على استخدام إلكترونيات متحكم للبريطانية ( Arduino ، fez ، المروحة ختم أساسي ، pololu ، إلخ) قد تطلب منك نصيحة أجهزة الإلكترونيات على

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

أنت تطلب الكثير تحتاج إلى إلقاء نظرة على البروتيوس @. http://www.labcenter.com/products/vsm_overview.cfm

كما قال محمود، قد تجد حل الكود الخاص بك مع مثال النماذج الأولية في البروتس المهنية .إنه أحد البرامج الشعبية للنباتات النموذجية والمحاكاة والترميز، يمكنك تحميل Proteus Professional مجانا وتحقق من دليلها.

أفضل حظا سعيدا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top