c# Bluetooth Serial Port เป็นระยะไม่ได้รับข้อมูล

ฉันมีแอปพลิเคชัน c#/unity ซึ่งใช้พอร์ตอนุกรมเพื่อสร้างการเชื่อมต่อบลูทูธกับอุปกรณ์เครื่องหนึ่ง จากนั้นจะส่งข้อมูลบางส่วนกลับไปยังแอปพลิเคชันแบบเรียลไทม์ ปัญหาคือว่าบางครั้งดูเหมือนเป็นการสุ่มโดยสิ้นเชิง แต่อย่างน้อยนาทีละครั้ง ความเร็วการเชื่อมต่อพอร์ตอนุกรม/การถ่ายโอนข้อมูลลดลงอย่างมาก บัฟเฟอร์ของอุปกรณ์ถูกเติมเต็ม ข้อมูลจึงสูญหาย การเปิด wifi ทำให้เรื่องแย่ลงแต่คาดเดาได้ เมื่อฉันเปิดใช้งานความเร็วการถ่ายโอนข้อมูล wifi ลดลงอย่างเห็นได้ชัด แต่ใน cca 3 วินาทีก็จะกลับมาเป็นปกติ ลองใช้แอปพลิเคชันเดียวกันบนคอมพิวเตอร์เครื่องอื่นที่คล้ายคลึงกันและดีขึ้นเล็กน้อย - ความเร็วลดลงน้อยลงและบนอุปกรณ์ Android ที่มีการลดลงบ่อยขึ้น แต่ก็เริ่มหย่อนยานเกือบจะในทันที มีการตั้งค่าพอร์ตอนุกรมหรือการตั้งค่าระบบใดบ้างที่ฉันควรคำนึงถึง มีวิธีแก้ไขปัญหานี้ในโค้ดหรือไม่

ขอบคุณ


person jib fashr    schedule 19.10.2017    source แหล่งที่มา
comment
คุณแชร์รหัสของคุณได้ไหม?   -  person Nika Kasradze    schedule 19.10.2017
comment
ไม่ มันเป็นกรรมสิทธิ์ ขออภัย   -  person jib fashr    schedule 19.10.2017


คำตอบ (1)


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

แต่จากเสียงนั้น คุณอาจได้รับการรบกวนจากความถี่วิทยุ 2.4GHz ที่อุปกรณ์บลูทูธของคุณเปิดอยู่

Wi-Fi อาจเป็น Wi-Fi ที่ใหญ่ที่สุดและเป็นปัญหามากที่สุด เช่นเดียวกับเครื่องรับและอุปกรณ์ Bluetooth อื่นๆ ซึ่งอาจรบกวนซึ่งกันและกัน

ไมโครเวฟ บริการดาวเทียมโดยตรง โทรศัพท์ 2.4GHz และ 5GHz ลำโพงไร้สาย จอภาพภายนอก อุปกรณ์เฝ้าดูเด็ก และอุปกรณ์ไร้สายใดๆ ที่พูดผ่านความถี่วิทยุ 2.4GHz อาจรบกวนสัญญาณของคุณได้

สิ่งที่คุณสามารถทำได้

1) ทำงานในสภาพแวดล้อมที่ค่อนข้าง RF โดยไม่มีอุปกรณ์อื่นๆ มากมายในการสื่อสาร

2) วัสดุทางกายภาพอาจทำให้เกิดปัญหา RF ได้ทุกประเภท การสะท้อน/การชนกัน พยายามกำจัดสิ่งกีดขวางทางกายภาพที่คุณกำลังสื่อสารออกไป อยู่ห่างจากแสงฟลูออเรสเซนต์และไมโครเวฟ (ทั้งสองปล่อย 2.4 GHz)

3) ย้ายอุปกรณ์ของคุณให้ใกล้กันมากขึ้น

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

person nate_weldon    schedule 01.11.2017
comment
ใช่ ฉันคิดสิ่งเดียวกันขึ้นมาโดยทำการค้นหาและทดสอบซ้ำ ดังนั้นฉันควรโพสต์การอัปเดตเหล่านี้สำหรับคำถามของฉัน: - person jib fashr; 02.11.2017
comment
จากการทดสอบ ฉันพบว่าบน Android และ Windows หากฉันเพิ่มปริมาณข้อมูลที่สตรีมผ่านการเชื่อมต่อ บัฟเฟอร์ของอุปกรณ์จะเต็มเป็นระยะและจะทิ้งข้อมูล ดูเหมือนว่าโปรโตคอลของระบบบางตัวจะรบกวนความสามารถในการบันทึกข้อมูลที่ได้รับในบัฟเฟอร์ของคอมพิวเตอร์และแท็บเล็ตสำหรับพอร์ตอนุกรมเสมือน Bluetooth ราวกับว่าคอมพิวเตอร์ไม่เร็วพอที่จะรับข้อมูลที่ส่งทั้งหมด ถ้าฉันลดความเร็วในการส่งแพ็กเก็ตลงเหลือประมาณ 150 เฮิร์ตซ์ หรือถ้าฉันลดจำนวนแพ็กเก็ตที่ส่งในเวลาที่กำหนด ปัญหาก็จะหมดไป - person jib fashr; 02.11.2017
comment
นอกจากนี้บัฟเฟอร์ที่เกิดขึ้นจะไม่เกิดขึ้นทันทีที่ฉันเริ่มส่งข้อมูล มีความล่าช้าอยู่บ้าง (30 วินาทีที่ 200 เฮิร์ต) ซึ่งขึ้นอยู่กับความเร็วด้วย แต่เมื่อสตาร์ทแล้ว บัฟเฟอร์จะเต็มทุกๆ สองวินาที - person jib fashr; 02.11.2017
comment
ฉันเชื่อว่าสิ่งนี้เกี่ยวข้องกับการลองใหม่ที่เกิดขึ้นที่เลเยอร์ bluetooth rf - person nate_weldon; 02.11.2017
comment
คุณหมายถึงอะไรโดยการลองอีกครั้ง? PS: เพิ่งทำการทดสอบเพิ่มเติมด้วยความเร็วที่ช้าลงและปัญหายังคงมีอยู่ แต่พบได้น้อย ที่ 90 เฮิร์ต มันเกิดขึ้นทุกๆ สองสามนาที แต่จะคงอยู่ตราบเท่าที่ 200 เฮิร์ต ซึ่งก็คือประมาณสองวินาที อัตราที่บัฟเฟอร์ของอุปกรณ์ bt เต็มก็ช้ากว่าเล็กน้อยแน่นอน ปริมาณการถ่ายโอนข้อมูลที่ 450hz คือ 500b/s ซึ่งน้อยกว่าที่ระบุไว้ในเอกสารฮาร์ดแวร์ BT 300b/s ฉันคิดว่ามันเกี่ยวข้องกับบัฟเฟอร์พอร์ตอนุกรมที่เต็มใช่ไหม - person jib fashr; 02.11.2017