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

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

по какой-то причине я не буду получать никаких сообщений при отправке данных в 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
19
задан david114
28.04.2023 1:25 Количество просмотров материала 3240
Распечатать страницу

1 ответ

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

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

( # 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
1
отвечен Alex 2023-04-29 09:13

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх