Socat虚拟串口无法识别

时间:2012-07-24 15:56:07

标签: virtual-serial-port socat

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

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

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

3 个答案:

答案 0 :(得分:2)

是的,刚发现由于我没有帐户,我无法对我的回答发表评论。无论如何,请尝试以下命令:

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

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

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:0)

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

相关问题