زر#

مقدمة#

يُعدّ الصنف button صنفًا مشتقًا من الصنف controller. وهو يوفر إمكانية الوصول إلى حالات أزرار وحدة التحكم ووظائف رد نداء أحداث الأزرار.

يتم الوصول إلى عنصر button من خلال عنصر وحدة التحكم controller مباشر.

يحتوي جهاز التحكم IQ (الجيل الأول) على ثمانية أزرار رئيسية. في حال توصيل جهاز تحكم IQ (الجيل الثاني) بوحدة المعالجة المركزية IQ (الجيل الأول)، يمكن استخدام أزرار عصا التحكم ButtonL3 و ButtonR3 أيضًا.

وحدة التحكم IQ مع تمييز جميع الأزرار.

وصول#

توفر فئة controller كائنات الأزرار التالية. كل كائن هو نسخة من فئة الزر button

هدف

مثال على الاستخدام

وصف

ButtonEDown

Controller.ButtonEDown.pressing()

زر E ▼.

ButtonEUp

Controller.ButtonEUp.pressing()

زر E ▲.

ButtonFDown

Controller.ButtonFDown.pressing()

زر F ▼.

ButtonFUp

Controller.ButtonFUp.pressing()

زر F ▲.

ButtonLDown

Controller.ButtonLDown.pressing()

زر L ▼.

ButtonLUp

Controller.ButtonLUp.pressing()

زر L ▲.

ButtonRDown

Controller.ButtonRDown.pressing()

زر R ▼.

ButtonRUp

Controller.ButtonRUp.pressing()

زر R ▲.

ButtonL3

Controller.ButtonL3.pressing()

زر عصا التحكم اليسرى. خاص بوحدة تحكم IQ (الجيل الثاني) فقط.

ButtonR3

Controller.ButtonR3.pressing()

زر عصا التحكم اليمنى. خاص بوحدة تحكم IQ (الجيل الثاني) فقط.

ملحوظات#

  • قبل استخدام دالة العضو button ، قم بإنشاء كائن controller.

  • ButtonL3 و ButtonR3 متاح فقط عند توصيل وحدة تحكم IQ (الجيل الثاني).

// Create a controller object
controller Controller = controller();

الدوال الأعضاء#

تتضمن فئة الزر button الدوال الأعضاء التالية:

دالة الوصول — قراءة حالة الزر.

  • pressing — تُرجع ما إذا كان الزر قيد الضغط.

الوظائف المستدعاة — تشغيل الوظائف عند وقوع أحداث الزر.

  • pressed — يسجل دالة لتشغيلها عند الضغط على الزر.

  • released — يسجل دالة لتشغيلها عند تحرير الزر.

المحصل#

pressing#

الضغط على pressing يُظهر ما إذا كان الزر مضغوطًا حاليًا أم لا.

الوظائف المتاحة

bool pressing() const;

حدود

هذه الدالة لا تحتوي على معلمات.

القيمة المُعادة

يُرجع قيمة منطقية (Boolean).

  • true — يتم الضغط على الزر.

  • false — الزر غير مضغوط.

مثال

// Turn right while R Up is pressed
while (true) {
  if (Controller.ButtonRUp.pressing()) {
    Drivetrain.turn(right);
  }
  else {
    Drivetrain.stop();
  }

  wait(20, msec);
}

معاودة الاتصال#

pressed#

pressed يسجل وظيفة يتم تشغيلها عند الضغط على الزر.

الوظائف المتاحة

void pressed(void (* callback)(void)) const;

المعلمة

يكتب

وصف

callback

void (*)(void)

دالة يتم تشغيلها عند الضغط على الزر.

القيمة المُعادة

هذه الدالة لا تُرجع قيمة.

مثال

قم بتعريف دالة الاستدعاء خارج الدالة الرئيسية main.

// Drive forward when F Up is pressed
void driveForward() {
  Drivetrain.driveFor(forward, 100, mm);
}

قم بتسجيل رد الاتصال داخل main.

int main() {
  vexcodeInit();

  // Run driveForward when F Up is pressed
  Controller.ButtonFUp.pressed(driveForward);
}

released#

released يسجل وظيفة يتم تشغيلها عند تحرير الزر.

الوظائف المتاحة

void released(void (* callback)(void)) const;

المعلمة

يكتب

وصف

callback

void (*)(void)

دالة يتم تشغيلها عند تحرير الزر.

القيمة المُعادة

هذه الدالة لا تُرجع قيمة.

مثال

قم بتعريف دالة الاستدعاء خارج الدالة الرئيسية main.

// Stop the drivetrain when F Up is released
void stopDriving() {
  Drivetrain.stop();
}

قم بتسجيل رد الاتصال داخل main.

int main() {
  vexcodeInit();

  // Run stopDriving when F Up is released
  Controller.ButtonFUp.released(stopDriving);
}