Bash: получать сообщения из фонового процесса

216
david114

Я отправляю данные через cansendк vcan0, в то же время я слушал сообщения, которые были отправить в vcan0использовании candump vcan0команды

По какой-то причине я не получаю никаких сообщений при отправке данных vcan0через скрипт, но когда я отправляю данные через терминал, скрипт каким-то образом получает данные.

cansend vcan0 004#0152FEE400000000 # trying to send data (doesnt work) while true; do msg_candump=$(candump vcan0) # read vcan0 if [[ ${#msg_candump} > 1 ]]; then #received msg echo $msg_candump fi done 
0

1 ответ на вопрос

1
Alex

Вы используете хеш-символ в #качестве данных для отправки, но этот символ зарезервирован для комментариев в оболочках

Попробуйте это так:

( # Let run listener in background before trying to send to CAN while true; do msg_candump="$(candump vcan0 -T 1000)" # read CAN for 1 second if [[ ${#msg_candump} > 1 ]]; then #received msg echo "$msg_candump" fi sleep 0.025 # Give system a little breath done ) & PID=$!  cansend vcan0 '004#0152FEE400000000' # <- quotes are matter  sleep 5 kill -9 $PID 
большое спасибо .. я добавил `msg_candump =" $ (candump vcan0 -T 1000) "` к этому, и теперь это работает. david114 5 лет назад 0
@ david114 Нет проблем, я рад, что это помогло тебе. Я добавил опцию -T 1000 в ответ, так что это может быть полезно для некоторых других Alex 5 лет назад 0

Похожие вопросы