7 คะแนน โดย regentag 2025-02-25 | 5 ความคิดเห็น | แชร์ทาง WhatsApp

ปัญหา

  • รอบตัวเรามีอุปกรณ์จำนวนมากที่เชื่อมต่อผ่านพอร์ตอนุกรม (ที่มักเรียกว่า COM port) เช่น โมดูล GPS, IRDA เป็นต้น
  • สิ่งที่เราต้องการคือให้อุปกรณ์จริงเชื่อมต่อกับคอมพิวเตอร์เพียงเครื่องเดียว และรันแอปพลิเคชันจากอุปกรณ์ระยะไกลผ่านเครือข่าย
  • เนื่องจากแอปพลิเคชันสามารถอ่านข้อมูลได้จากพอร์ตอนุกรมเท่านั้น ฝั่งไคลเอนต์จึงต้องใช้พอร์ตอนุกรมเสมือน
  • ดังนั้นสิ่งที่เราต้องมีคือ
    • เซิร์ฟเวอร์ที่สื่อสารกับอุปกรณ์ผ่านพอร์ตอนุกรมจริง และให้บริการผ่านเครือข่าย
    • ไคลเอนต์ที่เชื่อมต่อกับเซิร์ฟเวอร์
    • พอร์ตอนุกรมเสมือน

วิธีแก้ปัญหา

  • หนึ่งในวิธีแก้คือใช้ Telnet ร่วมกับ RFC2217 - ตัวเลือกควบคุม COM port ของ Telnet
  • วิธีนี้แก้ปัญหาข้างต้นได้อย่างสมบูรณ์
  • มีซอฟต์แวร์จำนวนมากที่รองรับการทำ serial port forwarding ด้วย Telnet+RFC2217 (ทั้งเซิร์ฟเวอร์และไคลเอนต์ที่รองรับ Windows และ Linux)
  • หากจำเป็น ยังสามารถทำ COM port multiplexing หรือเข้ารหัสข้อมูลที่ส่งได้

ตัวอย่างการใช้งาน

Windows

  • เซิร์ฟเวอร์สร้างด้วย hub4com
  • ไคลเอนต์ใช้ hub4com และไดรเวอร์พอร์ตอนุกรมเสมือน com0com

Linux

  • เซิร์ฟเวอร์สร้างด้วย ser4net
  • ไคลเอนต์ใช้คำสั่ง socat

5 ความคิดเห็น

 
helloppfm 2025-02-25

หากเชื่อมต่อพอร์ตซีเรียล 2 พอร์ตด้วย com0com ก็สามารถพัฒนาและทดสอบซอฟต์แวร์สื่อสารผ่านซีเรียลได้โดยไม่ต้องมีฮาร์ดแวร์แยกต่างหาก

 
halfenif 2025-02-25

ที่บ้านยังมีโมเด็มภายนอกเหลืออยู่ แต่ไม่มีสายโทรศัพท์อีกต่อไปแล้ว

 
xguru 2025-02-25

เมื่อก่อนผมทำงานพัฒนา CTI อยู่พักใหญ่ เลยหาซื้อชุมสายโทรศัพท์รุ่นเก่ามือสองมาเครื่องหนึ่งไว้ที่ออฟฟิศ
ส่วนบอร์ด Dialogic ก็ซื้อจาก eBay ด้วยครับ ฮ่าๆ
พอ OpenAI Realtime API ออกมาแล้ว ก็เลยคิดอยากลองพัฒนา GeekNews เวอร์ชันฟังทางโทรศัพท์ดูสักหน่อย.. แต่โอย งานมีเยอะมาก เลยผัดไปเรื่อยๆ ครับ

 
xguru 2025-02-25

ไม่ได้ยินคำว่า COM port มานานมากแล้วเลยนะครับ 555
เดี๋ยวนี้ก็มีคนจำนวนมากที่ไม่ใช้เดสก์ท็อปกันแล้ว เลยอาจจะไม่รู้จักไปเลยก็ได้

 
regentag 2025-02-25

ในทำนองเดียวกัน USB ก็สามารถเข้าถึงผ่านเครือข่ายได้เช่นกัน