C++#

เอกสารอ้างอิง API ของ VEX IQ (รุ่นที่ 2) ในภาษา C++ อธิบายเกี่ยวกับคลาส อ็อบเจ็กต์ คอนสตรัคเตอร์ ฟังก์ชันสมาชิก และตัวแปรที่ใช้ในโปรเจ็กต์ VEXcode IQ ในภาษา C++

ใช้เอกสารอ้างอิงนี้เมื่อคุณต้องการทำความเข้าใจวิธีการสร้างอุปกรณ์หรือฟีเจอร์ ตรวจสอบว่าควรใช้รูปแบบการเรียกใช้ฟังก์ชันใด หรือเปรียบเทียบฟังก์ชันสมาชิกที่เกี่ยวข้องในคลาสเดียวกัน

คำสั่ง C++ ถูกใช้ในโปรเจ็กต์ C++ ของ VEXcode IQ ข้อมูล API ของ C++ ยังสามารถสนับสนุนโปรเจ็กต์ที่เขียนใน Visual Studio Code โดยใช้ส่วนขยาย VEX Visual Studio Code ได้อีกด้วย

วิธีการอ่านหน้าข้อมูลคลาสของภาษา C++#

โดยทั่วไปแล้ว หน้าแสดงโครงสร้างคลาสของภาษา C++ จะมีลำดับดังนี้:

  1. บทนำ - อธิบายว่าคลาสนี้หมายถึงอะไรและมีประโยชน์เมื่อใด

  2. คลาสที่สืบทอด - แสดงรายการคลาสใดๆ ที่อิงตามคลาสนี้ หากมี

  3. ตัวสร้างคลาส - แสดงไวยากรณ์ที่ใช้ในการสร้างอ็อบเจ็กต์จากคลาส

  4. ตัวทำลายคลาส - แสดงไวยากรณ์ที่ใช้ในการทำลายวัตถุและปล่อยทรัพยากรของวัตถุนั้น หากมี

  5. พารามิเตอร์ - อธิบายพารามิเตอร์ของคอนสตรัคเตอร์ที่ใช้ในการสร้างอ็อบเจ็กต์

  6. ตัวอย่าง - แสดงวิธีการสร้างอ็อบเจ็กต์ในโค้ด

  7. ฟังก์ชันสมาชิก - แสดงรายการฟังก์ชันที่อยู่ในคลาส โดยมักจัดกลุ่มตามวัตถุประสงค์

  8. คำอธิบายฟังก์ชัน - อธิบายฟังก์ชันสมาชิกแต่ละตัว รวมถึงฟังก์ชันที่มีให้ใช้งาน พารามิเตอร์ ค่าที่ส่งคืน หมายเหตุ และตัวอย่าง

ไม่ใช่ทุกหน้าจะมีทุกส่วน ตัวอย่างเช่น บางหน้าไม่มีคลาสที่สืบทอดมา และบางฟังก์ชันไม่มีพารามิเตอร์หรือค่าส่งคืน

องค์ประกอบ API ทั่วไปของ C++#

องค์ประกอบ

มันหมายความว่าอย่างไร

ระดับ

ประเภท C++ สำหรับอุปกรณ์หรือคุณลักษณะ เช่น motor หรือ drivetrain

วัตถุ

อินสแตนซ์ที่มีชื่อซึ่งสร้างขึ้นจากคลาส เช่น motor Motor1 หรือ drivetrain myDrivetrain

ผู้สร้าง

โค้ดที่ใช้สร้างอ็อบเจ็กต์จากคลาส

ฟังก์ชันสมาชิก

คำสั่งที่เรียกใช้กับวัตถุ เช่น myDrivetrain.drive(…).

ฟังก์ชันที่มีให้ใช้งาน

รูปแบบฟังก์ชันที่แน่นอนเพียงรูปแบบเดียวที่สามารถใช้สำหรับฟังก์ชันสมาชิกได้ ฟังก์ชันสมาชิกบางฟังก์ชันอาจมีฟังก์ชันให้เลือกใช้มากกว่าหนึ่งแบบ

พารามิเตอร์

ค่าที่ส่งเข้าไปในคอนสตรัคเตอร์หรือฟังก์ชันเพื่อควบคุมการทำงานของมัน

ค่าที่ส่งคืน

ค่าที่ฟังก์ชันส่งคืน เช่น bool, int32_tหรือ double

คำศัพท์พื้นฐานของภาษา C++#

ภาคเรียน

มันหมายความว่าอย่างไร

ตัวแปร

ชื่อที่เก็บค่า เช่น int speed = 50;.

พิมพ์

ประเภทของข้อมูลที่จัดเก็บ เช่น int, double, หรือ bool

สตริง

ข้อความภายในเครื่องหมายคำพูด เช่น “Hello”.

ภายใน

ประเภทจำนวนเต็มบวกหรือลบ เช่น 90

สองเท่า

ประเภทตัวเลขที่สามารถมีจุดทศนิยมได้ เช่น 25.5

บูล

ค่าที่เป็น true หรือ false)

การโต้แย้ง

ค่าที่ส่งผ่านเข้าไปในฟังก์ชันสมาชิกหรือการเรียกฟังก์ชัน เช่น forward in myDrivetrain.drive(forward).

ตัวสร้างและวัตถุ#

ก่อนที่จะใช้ฟังก์ชันสมาชิกจากคลาส C++ หลายๆ คลาส จำเป็นต้องมีอ็อบเจ็กต์อยู่ก่อนแล้ว โดยคอนสตรัคเตอร์จะแสดงวิธีการสร้างอ็อบเจ็กต์นั้น

ตัวอย่างเช่น สามารถสร้างอ็อบเจ็กต์อุปกรณ์ได้โดยการระบุพอร์ตหรือข้อมูลการกำหนดค่าที่จำเป็นให้กับคอนสตรัคเตอร์:

motor Motor1 = motor(PORT1, false);

หลังจากสร้างอ็อบเจ็กต์แล้ว สามารถเรียกใช้ฟังก์ชันสมาชิกของอ็อบเจ็กต์นั้นได้:

Motor1.spin(forward);

ใน VEXcode การกำหนดค่าอุปกรณ์มักจะถูกสร้างขึ้นโดยอัตโนมัติโดยเมนูอุปกรณ์ ใน Visual Studio Code ที่ใช้ส่วนขยาย VEX นั้น อาจจำเป็นต้องเขียนคอนสตรัคเตอร์ด้วยตนเอง

การเลือกฟังก์ชันที่เหมาะสมที่มีอยู่#

ฟังก์ชันสมาชิกบางฟังก์ชันมีฟังก์ชันให้เลือกใช้มากกว่าหนึ่งฟังก์ชัน แต่ละฟังก์ชันใช้ชุดพารามิเตอร์ที่แตกต่างกัน ดังนั้นให้เลือกฟังก์ชันที่ตรงกับค่าที่โครงการของคุณต้องการ

ตัวอย่างเช่น ฟังก์ชันระบบขับเคลื่อนอาจมีเวอร์ชันหนึ่งที่ใช้ความเร็วปัจจุบัน และอีกเวอร์ชันหนึ่งที่ให้โปรเจ็กต์เลือกความเร็วได้:

void drive(directionType dir);

void drive(directionType dir, double velocity, velocityUnits units);

ทั้งสองฟังก์ชันเรียกใช้คำสั่ง driveกัน แต่ฟังก์ชันที่สองให้การควบคุมมากกว่าเพราะมีพารามิเตอร์ความเร็วรวมอยู่ด้วย

ตัวอย่างการป้อนฟังก์ชัน#

ขับ#

คำสั่ง drive จะทำให้หุ่นยนต์เคลื่อนที่ไปข้างหน้าหรือถอยหลังอย่างไม่มีที่สิ้นสุด หุ่นยนต์จะเคลื่อนที่ต่อไปจนกว่าจะได้รับคำสั่งอื่น เช่น การเลี้ยวหรือการหยุด

ฟังก์ชันที่มีให้ใช้งาน

void drive(directionType dir);

void drive(directionType dir, double velocity, velocityUnits units);

พารามิเตอร์

พิมพ์

คำอธิบาย

dir

directionType

ทิศทางการเคลื่อนที่ของหุ่นยนต์: forward หรือ reverse

velocity

double

ความเร็วในการขับเคลื่อนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ velocityUnits::pct, ตั้งแต่ 0 ถึง 120 รอบต่อนาทีเมื่อใช้ rpm rpmหรือตั้งแต่ 0 ถึง 720 องศาต่อวินาทีเมื่อใช้ dps dpsหากไม่ได้ระบุความเร็ว หุ่นยนต์จะขับเคลื่อนด้วยความเร็วในการขับเคลื่อนปัจจุบัน

units

velocityUnits

หน่วยความเร็ว: velocityUnits::pct (เปอร์เซ็นต์), rpm (รอบต่อนาที), หรือ dps (องศาต่อวินาที)

ค่าที่ส่งคืน

ฟังก์ชันนี้ไม่ส่งค่ากลับ

หมายเหตุ

  • drive คือคำสั่งที่ไม่รอ โปรเจ็กต์จะรันโค้ดบรรทัดถัดไปทันที

  • หุ่นยนต์จะเคลื่อนที่ต่อไปจนกว่าจะมีการเรียกใช้คำสั่ง stop หรือจนกว่าจะมีการทำงานของฟังก์ชันการเคลื่อนที่ของระบบขับเคลื่อนอื่นๆ

  • isDone และ isMoving ไม่ได้ใช้กับ drive เพราะ drive ไม่มีระยะเป้าหมาย

ตัวอย่าง

// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();

พฤติกรรมการรอคอยและการไม่รอคอย#

ฟังก์ชันการเคลื่อนที่บางฟังก์ชันใน C++ จะรอจนกว่าการกระทำจะเสร็จสิ้นก่อนที่โปรเจ็กต์จะย้ายไปยังบรรทัดโค้ดถัดไป ในขณะที่ฟังก์ชันอื่นๆ จะเริ่มการกระทำและอนุญาตให้บรรทัดถัดไปทำงานได้ทันที

  • กำลังรอ - โปรเจ็กต์จะรอจนกว่าฟังก์ชันจะทำงานเสร็จสิ้น

  • ไม่ต้องรอ - โปรเจ็กต์จะเริ่มฟังก์ชันและดำเนินการต่อในบรรทัดถัดไปทันที

ฟังก์ชันบางฟังก์ชันมีพารามิเตอร์ เช่น waitForCompletion สำหรับฟังก์ชันเหล่านั้น true จะทำให้โปรเจ็กต์รอ ในขณะที่ false จะทำให้บรรทัดถัดไปทำงานทันที

คำสั่งในหัวข้อย่อย#

คำสั่ง C++ ถูกจัดระเบียบตามอุปกรณ์หรือหัวข้อ ตัวอย่างเช่น คำสั่งสำหรับระบบขับเคลื่อน ระบบการเคลื่อนไหว สมอง ตัวควบคุม อุปกรณ์ Smart Port เซ็นเซอร์วัดแรงเฉื่อย คอนโซล และตรรกะ จะถูกจัดกลุ่มไว้ในหมวดหมู่ย่อยของตนเอง