3

我正在使用 socat 创建几个虚拟串行端口。一个我使用一个简单的 C 程序(使用 termios)连接,另一个我想使用一个名为 Ardupilot Mega Planner 的程序(用于 RC 东西)连接。但是,Planner 无法识别虚拟端口(在 /dev/pts 下列出),只能识别 tty 设备和 /dev/serial 设备。我需要做一些特殊的安装才能让它工作吗?或者有没有我可以尝试的解决方法?我尝试“链接”现有的串行端口(例如 ttyS0),但如果我尝试任何类似的操作(虚拟端口到真实端口,真实端口到真实端口),我会收到“不适当的 ioctl”错误。有任何想法吗?

编辑:查看程序的源代码(Mission Planner)后,它似乎只“识别”(或添加了)所有 /dev/ttyS* 设备的端口,即 /dev/serial/by-id/*设备、/dev/USB0 和 /dev/ACM0。所以要么我需要编辑源代码,要么找到一种方法来“验证”一个 ttyS* 端口。Mission Planner 似乎仍然不会连接到除 S1 或 S0 之外的任何 ttyS* 设备。有任何想法吗?我有一种感觉,这是因为它们配置不正确,不知何故。

编辑 2:我终于掌握了 ArdupilotMega Planner 源代码并对其进行了更改,使其包含来自 /dev/pts/ 的设备。但是,我仍然遇到同样的问题。Planner 在打开端口时遇到了一些问题。是否有一些设置需要立即检查/更改才能使程序能够连接到它?去研究一下,尝试更彻底的了解串口通信...

4

3 回答 3

2

对,刚刚发现我无法评论我的答案,因为我没有帐户。无论如何,试试这个命令:

socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11

并将您的程序链接到 ttyS10 和 ttyS11。

于 2012-07-25T18:26:39.013 回答
2

我遇到了同样的问题,并通过 tcp 发送串行内容解决了这个问题:

socat tcp-l:5760 /dev/YOURPORT,raw,echo=0,bHEREBAUDRATE

然后在 Misson planner 中选择“TCP”,服务器:127.0.0.1,端口:5760

我可以通过这种方式成功连接到模拟串行端口。

于 2013-12-18T07:39:28.557 回答
0

您是否尝试过链接到更高的 ttyS,例如 ttyS10 或更高。这些通常不分配给任何东西。编辑:您还使用什么命令来创建串行端口

于 2012-07-25T14:51:05.093 回答