2012-05-03 5 views
0

У меня есть 4 устройства UART, и я хочу смотреть их вывод одновременно. Для выполнения этой работы я использую следующий скрипт:Параллельный выход 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 & будет работать. Не знаю, почему ...

ответ

1

Как насчет tail -f /dev/crbif0rb0c{0,1,2,3}?

+0

Нет, это не работает. Нет вывода. –

+0

Являются ли ваши UART-ы печатанием CR и/или LF? Поскольку вывод не будет напечатан до тех пор, пока он не закончит линию. – artbristol

+0

Они печатают «\ n». Но неважно, проблема решена, заменив '.' на'^'в' grep'. –

Смежные вопросы