【问题标题】:Concurrent UART Output with Line Buffered带线路缓冲的并发 UART 输出
【发布时间】:2012-05-03 10:22:02
【问题描述】:

我有 4 个 UART 设备,我想同时观察它们的输出。我使用以下脚本来完成这项工作:

# first kill the cat process from last run
killall -v cat

for i in `seq 0 3`; do
    cat /dev/crbif0rb0c$(i}ttyS0 | grep . --line-buffered &
    # cat /dev/crbif0rb0c$(i)ttyS0 &
done

但是我没有从这个脚本中得到任何输出,除了许多空行。当我删除 grep 的东西并使用 for 循环中的第二行时,我得到了很多输出,但由于所有输出都搞砸了,所以不可读。

所以我的问题是为什么我使用 grep 时没有输出(除了空行)?或者任何人都可以为我的场景提供更好(和可行)的解决方案?

提前致谢!

[UPDATE] 我突然发现cat /dev/crbif0rb0c${i}ttyS0 | grep ^ --line-buffered & 可以工作。不知道为什么……

【问题讨论】:

    标签: linux concurrency grep cat


    【解决方案1】:

    tail -f /dev/crbif0rb0c{0,1,2,3} 怎么样?

    【讨论】:

    • 您的 UART 是否打印 CR 和/或 LF?因为在他们完成一行之前不会打印输出。
    • 他们正在打印“\n”。但没关系,问题通过将grep 中的^ 替换为. 解决。
    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多