Bạn có thể sử dụng kết hợp ser2net
và socat
. Ví dụ, tôi có một robot được kết nối với một quả mâm xôi pi thông qua một cổng nối tiếp. Raspberry pi được kết nối với mạng cục bộ của tôi (tương đương với PC thứ 2 của bạn). Và máy tính xách tay của tôi được kết nối với cùng một mạng cục bộ (tương đương với PC đầu tiên của bạn). Sau đó, tôi sử dụng ser2net để chuyển tiếp cổng nối tiếp qua TCP từ PC thứ 2 và tạo tệp thiết bị nối tiếp proxy bằng cách sử dụng socat
trên PC thứ nhất.
Thiết lập này có thể làm việc cho bạn là tốt. Giải pháp đề xuất:
Bước 1: Cài đặt gói ser2net trên PC thứ 2 của bạn (theo sơ đồ của bạn)
sudo apt-get install ser2net
ser2net lắng nghe một cổng TCP và có thể dẫn dữ liệu đến và đi từ một cổng nối tiếp qua cổng TCP. Bạn có thể thiết lập cổng nối tiếp nào bạn muốn tạo "proxy" thông qua tệp cấu hình của nó /etc/ser2net.conf
.
Bước 2: cấu hình ser2net trong PC thứ 2
Ví dụ: nếu bạn có một thiết bị được kết nối /dev/ttyACM0
với baudrate 115200
và muốn phục vụ nó từ cổng localhost 3333, thì bạn có thể thêm dòng sau vào/etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
Đã tạo tệp cấu hình, sau đó khởi động ser2net bằng cách chạy trên PC thứ hai:
ser2net
hoặc (nếu nó đã chạy, thì chỉ cần khởi động lại như bên dưới)
/etc/init.d/ser2net restart
Một điều quan trọng ở đây là tùy chọn remctl. Nó cho phép phía máy khách (PC thứ 1 trong sơ đồ của bạn) kết nối với thiết bị và chọn các tùy chọn kết nối nối tiếp một cách tự do. Tôi nghĩ theo cách này giao tiếp nối tiếp hoàn toàn minh bạch từ phối cảnh không gian làm việc thu thập dữ liệu. Xem thêm chi tiết tại đây .
Bước 3: Thiết lập tệp thiết bị nối tiếp proxy trên máy trạm thu thập dữ liệu (PC thứ 1)
(nếu bạn không có socat, thì sudo apt-get install socat
)
Cuối cùng, trong một thiết bị đầu cuối trên PC đầu tiên, hãy socat
tạo một cổng nối tiếp proxy sẽ lắng nghe từ cổng tcp:
socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
Ở đâu, trong ví dụ này ip=<2nd-PC-IP-address>
và port=3333
(hoặc bất cứ điều gì bạn đã chọn khi thiết lập /etc/ser2net.conf
trên PC thứ 2).
Bước 4: Kết nối với MyProxySerialPort
Bây giờ bạn sẽ có thể mở một kết nối nối tiếp bình thường đến thiết bị được đặt tại $HOME/MyProxySerialPort
PC thứ 1.
Bài đăng trên blog này cũng có một số thông tin về thiết lập này: http://techtinkering.com/2013/04/02/connecting-to-a-remote-serial-port-over-tcpip/