问题标签 [socat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
10317 浏览

c++ - Emulate serial port

Is it possible to create a "virtual" serial device that sends data through a "virtual" serial port? I need to develop some code to interact with an Arduino but don't have it with me. Can it be done with socat, or some code that writes to a dev/ttyXXX file?

EDIT: I'm running Arch Linux

0 投票
1 回答
2024 浏览

linux - 删除虚拟串口(socat)

我在我的 ubuntu-notebook 上创建了两个虚拟串行端口。

-> sudo socat /dev/ttyUSB7 /dev/ttyUSB8

现在我想删除串口和它们之间的连接。

我找不到执行此操作的命令。

http://www.dest-unreach.org/socat/

谢谢!

0 投票
2 回答
1364 浏览

serial-port - 通过socat创建的虚拟串口对二进制数据时缺少0xF和0x16

我使用以下命令为串行端口创建一对并尝试通过它们发送二进制数据。

但是,即使我尝试发送后续二进制文件

数据.bin

(基本上只是一个有 6 个字节的文件,每个字节的值为 0x16)

经过

我得到的只是 3 个字节的 0x16 而不是 6 个。

类似的事情发生在字节 0xF 上。如果我发送一个包含 6 字节 0xF 的二进制文件,我将收不到任何单个字节。

任何人都知道是什么导致缺少 0x16 和 0xF?如何传输包含 0x16 和 0xF 的二进制数据?

其他测试用例:

测试用例 1

发送:

收到:

测试用例 2

发送:

收到:

我在 socat 命令中添加了 -x 选项,我可以看到显示的数据正确,所以应该是接收端的问题。

PS 以上所有测试均在 Mac OS X 10.9.2 上进行

0 投票
1 回答
4500 浏览

socat - Socat 和 systemd

我需要运行一个脚本,其中包括运行 socat 的许多东西。从命令行运行脚本工作正常,现在我想要的是这个脚本作为服务运行。

这是我的脚本:

和服务文件:

当我启动服务时,该过程会快速启动和结束。

有任何想法吗?

谢谢你的时间

0 投票
1 回答
199 浏览

bash - socat 忽略 -v -x

我正在尝试使用 socat 使用此脚本捕获 USB 到串行适配器上的串行流量:

但是,socat 似乎忽略了“-v -x”。

我的 socat 选项基于此站点上的示例:

http://mmdolze.users.sourceforge.net/serial-port-monitoring.html

0 投票
1 回答
11640 浏览

linux - 用于 linux 的空调制解调器模拟器 (com0com)

我有一个项目,其中包含一些用于测试使用 COM 端口(在 Windows 中)的串行通信的单一测试。我使用 com0com 创建一对虚拟的有界端口并执行测试。

但是我不知道如何在 Linux 和 MACOS 中做到这一点。我读过这个话题:Linux中有像COM0COM这样的程序吗?答案建议使用socat。我已经尝试过这种方法,但它不起作用,我的应用程序没有检测到我刚刚在 socat 中定义的端口。

我的理论是 socat 不能创建虚拟端口,它只能绑定现有端口。

我该如何解决这个问题?

谢谢!

编辑:

这是我在运行上一个 socat 命令后得到的。如果仔细观察,您会发现 COM98 和 COM99 端口位于 /dev/ 中。但是,如果我写入 /dev/COM98 并使用tail -f跟踪 COM99,我不会从中得到任何输出。

在此处输入图像描述

编辑2:

好吧,如果我使用 cat 而不是 tail 我可以看到输出(为什么?!)

在此处输入图像描述

'

'

'

编辑3:

解决方案:不要将端口命名为 COMxx 而是 ttySxx!

例子:

原因:一些串行通信库可能不支持其他命名法,例如 RXTX 2.XX 和以前的版本。

0 投票
0 回答
468 浏览

python - Python 的 raw_input 会干扰 socat 吗?

我正在尝试使用这个程序加上 socat 来模拟串行设备。

当我尝试将程序链接到假串口时

从端口读取或写入时,我什么也得不到。如果我使用 READLINE 而不是 EXEC,串行数据可以毫无问题地传入和传出 socat 终端。是否raw_input在幕后做某事阻止 socat 为其提供正常的标准输入?

0 投票
1 回答
1255 浏览

ssl - 通过单一安全连接的 Socat 转发器

我想用 socat 创建一个端口转发器,以便通过单个 openssl 通道重定向多个分叉连接。我可以在 socat 中做到这一点而不使用任何 tun 或 vpn 吗?

到目前为止,我已经建立了一个安全连接(例如,使用 socat)

服务器:

客户:

然后我使用 socat 在 ssl 客户端创建一个端口转发器:

但是使用此配置,我只能通过 ssl 客户端(端口 5555)建立到 MYSERVERIP:MYPORT 的单个连接。

我只想要一个传出连接,所以我不想每次接受时都分叉一个新的 ssl 连接:

有什么建议吗?

0 投票
1 回答
789 浏览

virtual-serial-port - c#打开socat创建的串口

创建两个虚拟串口

cat /home/user/ttyS110 echo "hello" > /home/user/ttyS111 有效!

尝试打开:

捕获异常“无效参数”。

如何从 c# (Mono) 打开虚拟端口?

0 投票
2 回答
9984 浏览

linux - 使用 socat 进行原始串行连接

embedded目标是使用serial接口连接到设备。到目前为止,我已经使用过:

它工作得很好,但后来我发现在此期间有一些选项system boot要求您按一个键而不按enter,并readline在那里失败。所以我的想法是绑定ttyS2to cons0,但后来我发现了多个问题,比如无法退出(ctr+cctr+q ctr+]甚至esc不起作用),backspace并且delete不起作用,字母输入两次等。所以经过一些试验和错误,我想出了这个:

  • raw在双方允许一个单一key press的触发一个boot option
  • echo=0两侧防止key press翻倍
  • crnl两边防止enter key press翻倍
  • escape=0x03允许我quitctr+c

问题是,当我退出时,我cons0的一切都搞砸了,好像它以某种方式保留了raw,echo=0,crnl设置。我知道这个问题对于我的场景来说可能太具体了,但我只需要一种简单的方法来像我一样将击键发送到串行putty(这在我的平台上不可用)。我使用socat它是因为它非常轻量级,不需要任何额外的库,而且显示的命令是使用expect.

非常感谢任何想法和建议。