زر#

مقدمة#

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

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

الجانب الأمامي والعلوي لوحدة تحكم EXP مع تمييز عصا التحكم وأزرار الأسهم وأزرار الحركة باللون الأصفر. يوجد على سطح وحدة التحكم عصا تحكم على اليسار واليمين، مع أزرار أسهم لأعلى ولأسفل على اليسار وزرّي A وB على اليمين. يوجد في الجزء العلوي من وحدة التحكم زرّي L1 وL2 على الجانب الأيسر وزرّي R1 وR2 على الجانب الأيمن.

وصول#

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

هدف

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

وصف

ButtonA

Controller.ButtonA.pressing()

زر A.

ButtonB

Controller.ButtonB.pressing()

زر B.

ButtonDown

Controller.ButtonDown.pressing()

زر الأسفل.

ButtonUp

Controller.ButtonUp.pressing()

زر الأعلى.

ButtonL1

Controller.ButtonL1.pressing()

زر L1.

ButtonL2

Controller.ButtonL2.pressing()

زر L2.

ButtonL3

Controller.ButtonL3.pressing()

زر L3.

ButtonR1

Controller.ButtonR1.pressing()

زر R1.

ButtonR2

Controller.ButtonR2.pressing()

زر R2.

ButtonR3

Controller.ButtonR3.pressing()

زر R3.

ملحوظات#

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

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

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

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

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

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

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

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

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

المحصل#

pressing#

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

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

bool pressing() const;

حدود

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

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

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

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

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

مثال

// Turn right while L1 is pressed
while (true) {
  if (Controller.ButtonL1.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 R1 is pressed
void driveForward() {
  Drivetrain.driveFor(forward, 200, mm);
}

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

int main() {
  vexcodeInit();

  // Run driveForward when R1 is pressed
  Controller.ButtonR1.pressed(driveForward);
}

released#

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

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

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

المعلمة

يكتب

وصف

callback

void (*)(void)

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

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

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

مثال

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

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

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

int main() {
  vexcodeInit();

  // Run stopDriving when R1 is released
  Controller.ButtonR1.released(stopDriving);
}