首页 > 解决方案 > 无法使用 socat 和 rawer 选项从串行端口读取

问题描述

我正在尝试使用 socat 从串口读取数据;rawer但是,当通过该选项时,它似乎无法正确地从端口读取。

如果我从端口读取,socat /dev/ttyTHS1,b9600 -或者socat /dev/ttyTHS1,b9600,raw -我看到预期的数据,但是当我运行时,socat /dev/ttyTHS1,b9600,rawer -我没有得到任何输出。

我在内核版本 4.9.140 的 aarch64 处理器上的 Ubuntu 18.04 上运行它。我已经尝试过使用 apt (1.7.3.2-2ubuntu2) 的“stock”socat 以及我从源代码构建的 socat 版本 1.7.4.1。

我注意到的一件事是,当我在工作配置中运行 socat(例如,使用raw选项)然后检查串行端口时,stty -F /dev/ttyTHS1它看起来像

speed 9600 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon 

而当 socat 使用该rawer选项运行时,它看起来像:

speed 0 baud; line = 0;
min = 1; time = 0;
-cread
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

并且当在不同平台上使用该rawer选项运行相同的命令时(socat 1.7.3.2-2ubuntu2,在 Ubuntu 18.04 x86_64、5.4.0-84-generic 上,打开 USB 串行设备),speed似乎可以正确填充。

有没有理由rawer在我使用它时不起作用?

标签: socat

解决方案


推荐阅读