พฤศจิกายน 18, 2019, 07:26:43 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: Labview vision มีปัญหาต่อกล้อง (webcam) 2 กล้องพร้อมก้ัน เกิดปํญหา Timeout  (อ่าน 11981 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
วิสิทธิ์ แผ้วกระโทก
Global Moderator
Sr. Member
*****
ออฟไลน์ ออฟไลน์

กระทู้: 307



| |
« เมื่อ: กรกฎาคม 29, 2013, 04:49:56 pm »

ผมใช้กล้อง Webcam Oker 177 ต่อเข้ากับ Port USB มีอยู่ 2 กล้อง ผมทำการดึงภาพเข้ามาพร้อมกัน มาประมวลผลใน while loop ปัญหาที่เจอ ก็คือ

ถ้ามันจะได้ มันก็ได้ตอนเปิดโปรแกรมเลย แต่ ถ้ามันไม่ได้ มันก็ไม่ได้ จะเกิดปัญหาว่า Timeout กล้องใด กล้องหนึ่ง ผมเข้าใจว่า ขึ้นอยู่กับว่ากล้องไหน ดึงภาพมาได้ก่อน หน่ะครับ

อาการมัน ได้บ้าง ไม่ได้บ้าง แต่จะเป็นแค่ตอนเปิดโปรแกรมที่เขียนขึ้นมาเท่านั้น ถ้าได้ ก็ได้เลย แต่ ถ้าไม่ได้ ผมก็จะรีสตาร์ทเครื่องคอมพิวเตอร์ใหม่ ผมลองทดสอบโปรแกรมง่ายๆ มันก็มีปัญหาเหมือนกัน แค่ เป็นปัญหาตอนดึงภาพนี่แหละครับ




ผมใช้ Labview 2011 และชุด Vision Developement 2011 รวมทั้ง ImaqDx ก็เวอร์ชั่น 2011 เหมือนกัน

พอจะแนะนำสมมุติฐานที่เป็นไปได้บ้างไหมครับ ว่าต้องลองแก้ไขอย่างไร

ตอนแรก ผมคิดว่า RAM คงไม่พอ แต่ ลองเปลี่ยนเครื่องแล้ว ก็เป็นปัญหาเดิม ลองเปลี่ยนจากเสียบ port USB ตรงๆ มาเสียบที่ HUB USB ที่มี Power แบบต่อแยก เพิ่ม ก็ยังเจอปํญหาเดิม ลองๆ ค้นดูในอินเตอร์เนต ก็ดูเหมือนจะยังแก้กันไม่ได้

รบกวนด้วยครับ

บันทึกการเข้า

ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #1 เมื่อ: กรกฎาคม 29, 2013, 07:34:50 pm »

ปัญหาดังกล่าว ผมเจออยู่เป็นประจำ และมากกว่า 98% แก้ได้โดยวิธีการเดียวกัน นั่นคือการใช้ Thread + Synchronization Techniques

การเชื่อมต่อไปยัง Device มากกว่า 1 ตัวควรแยก Loop หรือ Thread และต้องใช้การ Synchronization เข้ามาช่วย เช่น Event, Semaphore หรือ Mutex ครับ ในกรณีที่ต้องการความเป็น Real Time สูงๆ  ควรใช้ Queue (Queue ของ Frame) เข้ามาช่วย และเพื่อให้ภาพจากกล้องทั้งสองตัวไม่เหลื่อมล้ำกัน จะต้องทำการ Tag ลำดับของภาพแต่ละเฟรมด้วย

การเชื่อมต่อไปยัง Device ใดๆ ไม่ได้การันตีว่า การเชื่อมต่อนั้นจะสำเร็จ 100% มีความจำเป็นต้องตรวจสอบ return value เพื่อให้โปรแกรมทำการ เชื่อมต่อใหม่ ครั้งที่ 2 3 4 เมื่อถึงครั้งที่ N แล้วถ้ายังไม่ได้ นั่นอาจจะสรุปได้ว่าปัญหาเกิดจากระบบ ไม่ใช่ code ของเรา

ปัญหาดังกล่าว ไม่ได้เป็นเฉพาะใน LabVIEW แต่เป็นในระบบคอมพิวเตอร์ในระดับ OS
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
วิสิทธิ์ แผ้วกระโทก
Global Moderator
Sr. Member
*****
ออฟไลน์ ออฟไลน์

กระทู้: 307



| |
« ตอบ #2 เมื่อ: กรกฎาคม 29, 2013, 08:41:06 pm »

เดี๋ยวจะลองหาวิธี Loop รอจนกว่าจะเชื่อมต่อสำเร็จดูครับ น่าจะง่าย สำหรับผม

ขอบคุณมากครับ  azn
บันทึกการเข้า

ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #3 เมื่อ: กรกฎาคม 30, 2013, 08:38:49 am »

ตรวจสอบ return value/message นั่นเป็นสิ่งที่จำเป็นใน application ลักษณะนี้ครับ

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

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: