การสัมผัสหลายนิ้ว (Multi-touch)

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

ข้อควรสนใจ

อินเทอร์เฟซการสัมผัสหลายนิ้วต้องการให้คุณอัปเกรดไคลเอนต์เป็นเวอร์ชัน 9.22 เป็นอย่างต่ำ เพื่อความเข้ากันได้ที่ดีที่สุด ขอแนะนำให้อัปเกรดฝั่งเซิร์ฟเวอร์ด้วย

เพื่อให้คุณเข้าใจวิธีการใช้งานได้เร็วที่สุด ขอแนะนำให้คุณเปิด 'แสดงการตอบสนองเมื่อแตะ' และ 'ตำแหน่งตัวชี้' ใน ตัวเลือกสำหรับนักพัฒนา - การป้อนข้อมูล (หากไม่ได้เปิดใช้งาน คุณอาจไม่เห็นการตอบสนองใดๆ) โค้ดตัวอย่างต่อไปนี้จะแสดงวิธีการวาดสัญลักษณ์ X ที่มุมซ้ายบนของหน้าจอ

touch = d.touch()
finger0 = touch.contact(0)
finger1 = touch.contact(1)

# --- 1. กดลงที่จุดเริ่มต้น ---
finger0.down(150, 320)
finger1.down(450, 320)
touch.wait(20)

# --- 2. เคลื่อนที่ตามเส้นทาง (10 จุดพิกัด) ---
finger0.move(180, 350)
finger1.move(420, 350)
touch.wait(20)

finger0.move(210, 380)
finger1.move(390, 380)
touch.wait(20)

finger0.move(240, 410)
finger1.move(360, 410)
touch.wait(20)

finger0.move(270, 440)
finger1.move(330, 440)
touch.wait(20)

finger0.move(300, 470) # จุดตัดกลาง
finger1.move(300, 470)
touch.wait(20)

finger0.move(330, 500)
finger1.move(270, 500)
touch.wait(20)

finger0.move(360, 530)
finger1.move(240, 530)
touch.wait(20)

finger0.move(390, 560)
finger1.move(210, 560)
touch.wait(20)

finger0.move(420, 590)
finger1.move(180, 590)
touch.wait(20)

finger0.move(450, 620) # จุดสิ้นสุด
finger1.move(150, 620)
touch.wait(20)

# --- 3. ยกนิ้วขึ้น ---
finger0.up()
finger1.up()

# ดำเนินการ
touch.perform()

การบันทึกเส้นทาง

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

# รับเซสชัน multi-touch
touch = d.touch()

# บันทึกเส้นทาง หลังจากเรียกใช้ จะรอให้คุณใช้งานหน้าจออุปกรณ์จริงภายในเวลาที่กำหนด (120 วินาที) และจะคืนค่ากลับมาเมื่อคุณยกนิ้วขึ้น
touch.record()

# คุณสามารถบันทึกเส้นทางเป็นไฟล์ไบนารีได้
touch.save("/sdcard/touch/bin")

# คุณยังสามารถเล่นซ้ำเส้นทางได้โดยตรง
touch.perform()

การบันทึกเส้นทาง

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

# รับเซสชัน multi-touch
touch = d.touch()

# คุณสามารถบันทึกเส้นทางที่เพิ่งสร้างขึ้นเพื่อใช้โหลดในภายหลังได้
touch.save("/sdcard/track0.bin")

การโหลดเส้นทาง

คุณสามารถโหลดเส้นทางจากไฟล์ที่จัดเก็บไว้ในดิสก์เข้ามาในเซสชันได้โดยตรง

# รับเซสชัน multi-touch
touch = d.touch()

# โหลดเส้นทางจากไฟล์
touch.load("/sdcard/track0.bin")

การสร้างเส้นทาง

นอกจากการสร้างเส้นทางผ่านการบันทึกแล้ว คุณยังสามารถเลือกที่จะสร้างเส้นทางการสัมผัสด้วยโค้ดได้ด้วยตนเอง ด้านล่างนี้เราจะแนะนำวิธีการสร้างด้วยตนเองและฟังก์ชันอื่นๆ ที่มีให้ใช้งาน การดำเนินการสัมผัสที่ถูกต้องจะประกอบด้วย 3 เหตุการณ์ คือ การกดลง, การเคลื่อนที่ และการยกขึ้น ซึ่งสามารถตั้งค่าพารามิเตอร์แรงกดสำหรับเหตุการณ์ต่างๆ เช่น การกดลงและการเคลื่อนที่ได้

# รับเซสชัน multi-touch
touch = d.touch()

# รับอินพุตจากปลายนิ้วสองนิ้ว (หรือมากกว่า)
finger0 = touch.contact(0)
finger1 = touch.contact(1)

# นิ้วที่ 0 กดลงที่พิกัด 150 320
# พารามิเตอร์ z แทนแรงกดของนิ้ว ค่าที่ใช้ได้คือ 1-255 ค่าเริ่มต้นคือ 128
finger0.down(150, 320, z=128)

# นิ้วที่ 0 เคลื่อนที่จาก 150 320 ไปยัง 180 350
finger0.move(180, 350, z=128)

# รอ 20 มิลลิวินาที (เทียบเท่ากับ finger0.wait(20))
touch.wait(20)

# นิ้วที่ 0 ยกขึ้น
finger0.up()

# ล้างเส้นทางทั้งหมด
touch.reset()

# ดำเนินการ (wait คือการรอให้เสร็จสิ้นหรือไม่)
touch.perform(wait=True)