في السيناريو الخاص بك ، يستجيب مؤشر ترابط لطريقة القراءة/الكتابة الحظر حتى يكتشف كلمة رئيسية أو أوقات خارجية باستخدام كلمة waitforkey (). لسوء الحظ ، عند استخدام الخطوط القراءة () لاختبار التطبيق ، يتم الحصول على جزء صغير فقط من الملف. بالإضافة إلى ذلك ، تُرجع الخطوط القراءة فورًا كاذبة أثناء التكرار الثاني دون انتظار المهلة.
مثال على التنفيذ
في هذا المثال ، يقوم المبرمج بتغليف جهاز الحالة ويوفر واجهة للتواصل مع الجهاز. يتم تعريف انتقالات الحالة باستخدام وظائف send () وتوقع () للتعامل مع أوامر إرسال وانتظار الاستجابات المتوقعة ، على التوالي.
Handling.
class Programmer : public StatefulObject { Q_OBJECT AppPipe m_port { nullptr, QIODevice::ReadWrite, this }; State s_boot { &m_mach, "s_boot" }, s_send { &m_mach, "s_send" }; FinalState s_ok { &m_mach, "s_ok" }, s_failed { &m_mach, "s_failed" }; public: Programmer(QObject * parent = 0) : StatefulObject(parent) { connectSignals(); m_mach.setInitialState(&s_boot); send (&s_boot, &m_port, "boot\n"); expect(&s_boot, &m_port, "boot successful", &s_send, 1000, &s_failed); send (&s_send, &m_port, ":HULLOTHERE\n:00000001FF\n"); expect(&s_send, &m_port, "load successful", &s_ok, 1000, &s_failed); } AppPipe & pipe() { return m_port; } };
الطبيعة غير المتزامنة
: يمكن تنفيذ آلة الحالة بشكل متزامن مع التطبيق الرئيسي ، والقضاء على مشكلات الحظر.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3