ปัญหา
- รอบตัวเรามีอุปกรณ์จำนวนมากที่เชื่อมต่อผ่านพอร์ตอนุกรม (ที่มักเรียกว่า COM port) เช่น โมดูล GPS, IRDA เป็นต้น
- สิ่งที่เราต้องการคือให้อุปกรณ์จริงเชื่อมต่อกับคอมพิวเตอร์เพียงเครื่องเดียว และรันแอปพลิเคชันจากอุปกรณ์ระยะไกลผ่านเครือข่าย
- เนื่องจากแอปพลิเคชันสามารถอ่านข้อมูลได้จากพอร์ตอนุกรมเท่านั้น ฝั่งไคลเอนต์จึงต้องใช้พอร์ตอนุกรมเสมือน
- ดังนั้นสิ่งที่เราต้องมีคือ
- เซิร์ฟเวอร์ที่สื่อสารกับอุปกรณ์ผ่านพอร์ตอนุกรมจริง และให้บริการผ่านเครือข่าย
- ไคลเอนต์ที่เชื่อมต่อกับเซิร์ฟเวอร์
- พอร์ตอนุกรมเสมือน
วิธีแก้ปัญหา
- หนึ่งในวิธีแก้คือใช้ Telnet ร่วมกับ RFC2217 - ตัวเลือกควบคุม COM port ของ Telnet
- วิธีนี้แก้ปัญหาข้างต้นได้อย่างสมบูรณ์
- มีซอฟต์แวร์จำนวนมากที่รองรับการทำ serial port forwarding ด้วย Telnet+RFC2217 (ทั้งเซิร์ฟเวอร์และไคลเอนต์ที่รองรับ Windows และ Linux)
- หากจำเป็น ยังสามารถทำ COM port multiplexing หรือเข้ารหัสข้อมูลที่ส่งได้
ตัวอย่างการใช้งาน
Windows
- เซิร์ฟเวอร์สร้างด้วย hub4com
- ไคลเอนต์ใช้ hub4com และไดรเวอร์พอร์ตอนุกรมเสมือน com0com
Linux
5 ความคิดเห็น
หากเชื่อมต่อพอร์ตซีเรียล 2 พอร์ตด้วย com0com ก็สามารถพัฒนาและทดสอบซอฟต์แวร์สื่อสารผ่านซีเรียลได้โดยไม่ต้องมีฮาร์ดแวร์แยกต่างหาก
ที่บ้านยังมีโมเด็มภายนอกเหลืออยู่ แต่ไม่มีสายโทรศัพท์อีกต่อไปแล้ว
เมื่อก่อนผมทำงานพัฒนา CTI อยู่พักใหญ่ เลยหาซื้อชุมสายโทรศัพท์รุ่นเก่ามือสองมาเครื่องหนึ่งไว้ที่ออฟฟิศ
ส่วนบอร์ด Dialogic ก็ซื้อจาก eBay ด้วยครับ ฮ่าๆ
พอ OpenAI Realtime API ออกมาแล้ว ก็เลยคิดอยากลองพัฒนา GeekNews เวอร์ชันฟังทางโทรศัพท์ดูสักหน่อย.. แต่โอย งานมีเยอะมาก เลยผัดไปเรื่อยๆ ครับ
ไม่ได้ยินคำว่า COM port มานานมากแล้วเลยนะครับ 555
เดี๋ยวนี้ก็มีคนจำนวนมากที่ไม่ใช้เดสก์ท็อปกันแล้ว เลยอาจจะไม่รู้จักไปเลยก็ได้
ในทำนองเดียวกัน USB ก็สามารถเข้าถึงผ่านเครือข่ายได้เช่นกัน