زر#

مقدمة#

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

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

صورة أمامية وخلفية لجهاز التحكم IQ من الجيل الثاني، مع تمييز جميع الأزرار باللون الأصفر. يحتوي سطح جهاز التحكم على زرين للتحكم في عصا التحكم في الزاويتين العلويتين اليسرى واليمنى، مع زر E للتحرك لأعلى ولأسفل أسفل عصا التحكم اليسرى، وزر F للتحرك لأعلى ولأسفل أسفل اليمنى. أما في الجزء الخلفي من جهاز التحكم، فيوجد زر L للتحرك لأعلى ولأسفل، وزر R للتحرك لأعلى ولأسفل على الجانبين الأيسر والأيمن على التوالي.

وصول#

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

هدف

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

وصف

ButtonEDown

Controller.ButtonEDown.pressing()

زر E ▼.

ButtonEUp

Controller.ButtonEUp.pressing()

زر E ▲.

ButtonFDown

Controller.ButtonFDown.pressing()

زر F ▼.

ButtonFUp

Controller.ButtonFUp.pressing()

زر F ▲.

ButtonL3

Controller.ButtonL3.pressing()

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

ButtonLDown

Controller.ButtonLDown.pressing()

زر L ▼.

ButtonLUp

Controller.ButtonLUp.pressing()

زر L ▲.

ButtonR3

Controller.ButtonR3.pressing()

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

ButtonRDown

Controller.ButtonRDown.pressing()

زر R ▼.

ButtonRUp

Controller.ButtonRUp.pressing()

زر R ▲.

ملحوظات#

  • قبل استخدام دالة العضو 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);
}