คุณสามารถใช้การรวมกันของและser2net
socat
ตัวอย่างเช่นฉันมีหุ่นยนต์ที่เชื่อมต่อกับราสเบอร์รี่ pi ผ่านพอร์ตอนุกรม ราสเบอร์รี่ pi เชื่อมต่อกับเครือข่ายท้องถิ่นของฉัน (เทียบเท่ากับพีซีเครื่องที่สองของคุณ) และแล็ปท็อปของฉันเชื่อมต่อกับเครือข่ายท้องถิ่นเดียวกัน (เทียบเท่ากับพีซีเครื่องที่ 1 ของคุณ) จากนั้นฉันใช้ ser2net เพื่อส่งต่อพอร์ตอนุกรมผ่าน TCP จากพีซีเครื่องที่สองและสร้างไฟล์อุปกรณ์พร็อกซีอนุกรมที่ใช้socat
บนพีซีเครื่องที่ 1
การตั้งค่านี้อาจใช้ได้สำหรับคุณเช่นกัน โซลูชันที่เสนอ:
ขั้นตอนที่ 1: ติดตั้งแพ็คเกจ ser2net บนพีซีเครื่องที่ 2 ของคุณ (ตามแผนภาพ)
sudo apt-get install ser2net
ser2net ฟังพอร์ต TCP และสามารถไพพ์ข้อมูลเข้าและออกจากพอร์ตอนุกรมผ่านพอร์ต TCP คุณสามารถตั้งค่าซึ่งพอร์ตอนุกรมคุณต้องการที่จะสร้าง "ผู้รับมอบฉันทะ" /etc/ser2net.conf
ผ่านทางไฟล์การกำหนดค่าของมัน
ขั้นตอนที่ 2: กำหนดค่า ser2net ในพีซีเครื่องที่สอง
ตัวอย่างเช่นหากคุณมีอุปกรณ์ที่เชื่อมต่อ/dev/ttyACM0
ด้วย baudrate 115200
และต้องการให้บริการจาก localhost พอร์ต 3333 จากนั้นคุณสามารถเพิ่มบรรทัดต่อไปนี้/etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
หลังจากสร้างไฟล์การกำหนดค่าแล้วเริ่ม ser2net โดยรันบนพีซีเครื่องที่สอง:
ser2net
หรือ (ถ้ามันยังทำงานอยู่ให้รีสตาร์ทดังด้านล่าง)
/etc/init.d/ser2net restart
สิ่งสำคัญอย่างหนึ่งที่นี่คือตัวเลือก remctl ช่วยให้ฝั่งไคลเอ็นต์ (พีซีเครื่องที่ 1 ในแผนภาพของคุณ) เชื่อมต่อกับอุปกรณ์และเลือกตัวเลือกการเชื่อมต่อแบบอนุกรมได้อย่างอิสระ ฉันคิดว่าวิธีนี้การสื่อสารแบบอนุกรมนั้นโปร่งใสอย่างสมบูรณ์จากมุมมองเวิร์กสเปซการรวบรวมข้อมูล ดูรายละเอียดเพิ่มเติมได้ที่นี่
ขั้นตอนที่ 3: ตั้งค่าไฟล์อุปกรณ์อนุกรมพร็อกซีบนเวิร์กสเตชันการรวบรวมข้อมูล (พีซีที่ 1)
(ถ้าคุณไม่มี socat sudo apt-get install socat
)
สุดท้ายในเทอร์มินัลบนพีซีเครื่องที่ 1 ให้socat
สร้างพอร์ตอนุกรมของพร็อกซี่ที่จะรับฟังจากพอร์ต tcp:
socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
ในตัวอย่างนี้ip=<2nd-PC-IP-address>
และport=3333
(หรืออะไรก็ตามที่คุณเลือกเมื่อติดตั้ง/etc/ser2net.conf
บนพีซีเครื่องที่สอง)
ขั้นตอนที่ 4: เชื่อมต่อกับ MyProxySerialPort
ตอนนี้คุณควรจะสามารถเปิดการเชื่อมต่อแบบอนุกรมกับอุปกรณ์ที่อยู่$HOME/MyProxySerialPort
บนพีซีเครื่องที่ 1 ได้แล้ว
โพสต์บล็อกนี้มีข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่านี้ด้วย: http://techtinkering.com/2013/04/02/connecting-to-a-remote-serial-port-over-tcpip/