บันทึกข้อมูลดิบในพอร์ต COM


11

ฉันมีอุปกรณ์ส่งสัญญาณบลูทู ธ และพีซีของฉัน (Windows 7) เชื่อมต่ออยู่และกำหนดค่าราวกับว่าเชื่อมต่อผ่านพอร์ตอนุกรม RS232 (COM4) ฉันจะจับข้อมูลดิบที่ส่งจากอุปกรณ์บลูทู ธ หรือข้อมูลดิบที่ได้รับใน COM4 อย่างไร


ไม่ใช่คำถามอิเล็กทรอนิกส์เท่าที่ฉันสามารถบอกได้
ไบรอันคาร์ลตัน

5
ฉันคิดจริงๆว่านี่เป็นหัวข้อ มีซอฟต์แวร์บางส่วนที่สามารถจับข้อมูลอนุกรมจากพอร์ต COM (บางส่วนของพวกเขาแม้ในขณะที่แอพพลิเคชั่นอื่นกำลังใช้พอร์ต) และซอฟต์แวร์นั้นมีความพิเศษพอที่คนส่วนใหญ่ไม่รู้ว่ามีอยู่จริง ข้อเสียคือหลังจากใช้เวลาในการค้นหาซอฟต์แวร์ฉันไม่พบสิ่งใดที่ทำงานได้ดีบนคอมพิวเตอร์ที่ติดตั้ง XP
AndrejaKo

คุณกำลังมองหาเครื่องมือเช่นนี้หรือไม่? com0com.cvs.sourceforge.net/viewvc/com0com/hub4com/…
kenny

ที่เกี่ยวข้องกับ: "แสดง Hex ในฉาบสำหรับอนุกรม"
davidcary

คำตอบ:


9

คุณสามารถใช้โปรแกรม terminal มาตรฐานเพื่อเก็บข้อมูลในรูปแบบที่แตกต่างกัน ฉันแนะนำให้ใช้เทอร์มินัลของเบรย์เป็นเรื่องง่ายและมีตัวเลือกมากมาย!

หรือคุณต้องการรวบรวมและตีความข้อมูลในแอปพลิเคชันของตัวเองบางประเภท


ขอขอบคุณ! ฉันไม่ต้องการตีความข้อมูล ทั้งหมดที่ฉันต้องการคือการรับข้อมูลดิบและสามารถบันทึกไว้ในไฟล์ ฉันพยายามค้นหาว่าอุปกรณ์ Bluetooth ของฉันส่งสัญญาณจริงหรือไม่ เทอร์มินัลของเบรย์จะทำเพื่อฉันหรือไม่
user11395

@ user11395 - ใช่ซอฟต์แวร์เทอร์มินัลใด ๆ ที่เหมาะสมจะทำสิ่งนี้ฉันใช้ Terminal ของ Bray ด้วย - Putty เป็นอีกตัวเลือกที่ดี ... คำแนะนำ - ถ้าคุณมีปัญหาในการเชื่อมต่อใน Terminal ของ Bray ไปที่คุณสมบัติอุปกรณ์โมดูล BT ในหน้าต่าง แผง -> อุปกรณ์บลูทู ธ คลิกขวาและเลือก "คุณสมบัติ") และยกเลิกการเลือกและเลือกบริการ SPP อีกครั้ง
Oli Glaser

ขอบคุณ Oli ฉันกำลังเรียกใช้ Terminal ของ Bray แต่มีบางอย่างผิดปกติ ฉัน "สแกน" พอร์ตอีกครั้งฉันค้นหาพอร์ต COM4 ฉันเชื่อมต่อกับ COM4 แล้วฉันจะเห็นข้อมูลที่ถูกจับ อย่างไรก็ตามฉันไม่คิดว่ามันถูกต้อง ฉันไม่แน่ใจเกี่ยวกับค่าของ Baud Rate / Data bits / Parity Stop Bits / Handshaking ที่ฉันควรเลือก ข้อเสนอแนะใด ๆ
user11395

โดยทั่วไปโมดูลจะตั้งค่าเป็น 9600,1, N (1 สต็อปบิตไม่มีพาริตี้) แต่ 115200 นั้นก็เป็นเรื่องปกติ (อาจพูดได้ว่าค่าเริ่มต้นคือทุกที่ที่คุณซื้อจาก) ตั้งค่าเป็นไม่จับมือ คุณสามารถตั้งค่าอัตรารับส่งข้อมูลด้วยคำสั่ง AT (ไม่เกินลิงก์ไร้สายคุณต้องเชื่อมต่อโดยตรงกับโมดูล Rx / Tx หมุด) ก่อนที่จะลองทำสิ่งนี้ส่งตัวละครที่รู้จักซ้ำแล้วซ้ำอีกและเริ่มจาก baud ที่ช้าที่สุด หนึ่งในนั้นควรสร้างข้อมูลที่ถูกต้อง
Oli Glaser

ฉันจัดการเพื่อเก็บข้อมูลด้วยเทอร์มินัลของเบรย์ ไม่ว่าฉันจะเลือกอัตรารับส่งข้อมูลเป็น 9600 หรือ 115200 บนเทอร์มินัลของเบรย์ฉันจะได้รับข้อมูลเดียวกัน (ซึ่งดูเหมือนจะถูกต้อง) เหตุใดตัวเลือกทั้งสองจึงให้ผลลัพธ์เหมือนกัน นอกจากนี้ฉันพบว่าอุปกรณ์ของฉันมีอัตรารับส่งข้อมูลเป็น 115200 แต่เท่าที่ฉันเห็นในเครื่องมือจัดการอุปกรณ์พอร์ต COM นี้ถูกตั้งค่าเป็นอัตรารับส่งข้อมูลเป็น 9600 (ฉันเดาตามค่าเริ่มต้น) ฉันควรเปลี่ยนสิ่งนั้นหรือไม่
user11395

2

ทางออกที่ดีที่สุดที่ฉันได้พบแม้จะค่อนข้างหยาบคือ Tera Term http://ttssh2.sourceforge.jp/index.html.en

เบรย์ไม่ได้เล่นกับ Windows 8 อย่างดีในขณะที่มันเป็นไปไม่ได้ที่จะบอกว่ามันทำอะไรโดยไม่มีแหล่งที่มาดูเหมือนว่ามันกำลังทำการตั้งสมมติฐานบางอย่างเกี่ยวกับตำแหน่งของการตั้งค่ารีจิสทรี

portmon ยังไม่ได้ผลสำหรับฉันใน Windows 8


ฉันใช้งานเบรย์ใน Win 10 เวอร์ชันล่าสุดดังนั้นจึงยังทำงานได้เป็นอย่างน้อยในบางกรณี คอมพิวเตอร์ของฉันติดตั้ง COM3 เท่านั้น
Chris Dragon

2

เทอร์มินัลอีมูเลเตอร์ส่วนบุคคลที่ฉันโปรดปรานสำหรับการดีบักคือRealTermซึ่งมีตัวเลือกการแสดงผลที่ดีสำหรับระบบฝังตัว ทั้ง RS-232 และ TCP / IP ทำงานได้ดีภายใต้ Windows 7 x64 และต่ำกว่า (ฉันไม่ได้ลองภายใต้ Win 8 แต่ไม่มีเหตุผลที่จะคิดว่ามันไม่ทำงาน) คุณสมบัติบางอย่างที่ฉันพบว่ามีประโยชน์เป็นพิเศษคือ:

  • มุมมองข้อมูล ASCII / HEX
  • ไฟล์จับภาพสามารถรวมเวลาประทับ
  • มีวิธีง่ายๆในการส่งลำดับข้อมูลไบนารี
  • พินการควบคุมการไหลของฮาร์ดแวร์สามารถตรวจสอบ / เปลี่ยนแปลงได้อย่างง่ายดาย

นอกจากนี้ยังมีตัวเลือกอื่น ๆ อีกมากมายสำหรับ I2C, SPI, Dallas 1-wire และ GPIB ฉันไม่ได้ใช้คุณสมบัติเหล่านั้นเป็นการส่วนตัว แต่มีบทสรุปที่ดีในหน้า SourceForge ด้านบน นี่คือการดักจับหน้าจอของมุมมองแท็บการแสดงผลหลัก:

ป้อนคำอธิบายรูปภาพที่นี่


1

ฉันขอแนะนำ bray เช่นกันหากคุณไม่แน่ใจเกี่ยวกับอัตรา baud ที่เปิดขึ้นตัวจัดการฮาร์ดแวร์เรียกดูพอร์ต COM และเลือกคุณสมบัติมันแสดงอยู่ที่นั่นแม้ว่าจะไม่ถูกต้องเสมอไป


ฉันจัดการเพื่อเก็บข้อมูลด้วยเทอร์มินัลของเบรย์ ไม่ว่าฉันจะเลือกอัตรารับส่งข้อมูลเป็น 9600 หรือ 115200 บนเทอร์มินัลของเบรย์ฉันจะได้รับข้อมูลเดียวกัน (ซึ่งดูเหมือนจะถูกต้อง) เหตุใดตัวเลือกทั้งสองจึงให้ผลลัพธ์เหมือนกัน นอกจากนี้ฉันพบว่าอุปกรณ์ของฉันมีอัตรารับส่งข้อมูลเป็น 115200 แต่เท่าที่ฉันเห็นในเครื่องมือจัดการอุปกรณ์พอร์ต COM นี้ถูกตั้งค่าเป็นอัตรารับส่งข้อมูลเป็น 9600 (ฉันเดาตามค่าเริ่มต้น) ฉันควรเปลี่ยนสิ่งนั้นหรือไม่
user11395

1

มีportmon : เครื่องมือ sysinternals ที่ทำหน้าที่เป็นดาต้าสโคปสำหรับพอร์ต COM


1
ไม่ทำงานบนระบบ x64 windows ในประสบการณ์ของฉัน
JonCage

1

อาจมีประโยชน์ในการใช้ไมโครคอนโทรลเลอร์ที่สามารถจับภาพและประทับเวลาข้อมูลจากนั้นส่งต่อไปยังพีซีได้ทั้งนี้ขึ้นอยู่กับข้อกำหนดที่แน่นอนของคุณ ประวัติความเป็นมาของ UART ที่พบในพีซีทั่วไปนั้นสามารถบันทึกข้อมูลเวลาได้อย่างแม่นยำหรือเก็บข้อมูล 9 บิตโดยให้หน่วยประมวลผลจับแต่ละไบต์เมื่อมาถึงโดยไม่มีบัฟเฟอร์ ระบบปฏิบัติการและไดรเวอร์ในภายหลังโดยทั่วไปไม่พร้อมที่จะทำเช่นนั้นและชิป UART-to-USB จะสิ้นหวังในเรื่องนั้น หากพีซีของคุณสามารถรับข้อมูลได้สองเท่าของอัตราข้อมูลที่คุณต้องการคุณสามารถให้ไมโครคอนโทรลเลอร์รับข้อมูลเป็นไบต์และแต่ละไบต์จะส่งข้อมูลสองไบต์ ไบต์แรกจะมีชุด MSB รายงาน MSB (หรือสอง MSB ถ้า 9 บิต) ของข้อมูลที่เข้ามาในบิตถัดไป และใช้บิต 5 (หรือ 4) ด้านล่างเพื่อรายงานระยะเวลา (0-30 หรือ 0-14) ตั้งแต่ช่วงกลางของบิตหยุดก่อนหน้าของไบต์ (วัดเป็นหน่วยของเวลาเช่นหนึ่งบิต) ไบต์ที่สองจะทำให้ MSB ชัดเจนและมีข้อมูลที่เหลืออีก 7 บิต เมื่อไม่มีการส่งข้อมูลอักขระ pacing ของ FF จะถูกส่งทุก ๆ 30 (หรือ 14) บิต ซอฟต์แวร์ที่ได้รับรายงานเหล่านี้จะสามารถสร้างใหม่ได้อย่างแม่นยำมาก (ภายในเวลาหนึ่งบิต) เวลาที่แน่นอนของข้อมูลขาเข้า หากอัตราการส่งข้อมูลพีซีเป็นอัตราการตรวจสอบข้อมูลเป็นสี่เท่าคุณสามารถใช้รูปแบบทั่วไปนี้เพื่อมัลติเพล็กซ์สองช่องรับสัญญาณเข้าในพอร์ตพีซีหนึ่งพอร์ต (ใช้บิตของส่วนหัวไบต์เพื่อระบุว่ามีข้อมูลเป็นครั้งแรกหรือครั้งที่สอง ท่าเรือ). ในขณะที่เวลาที่สิ่งต่าง ๆ มีความแม่นยำจนถึงบิตหนึ่งอาจดูเหมือนมากเกินไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.