Bash: recebe mensagens do processo em segundo plano

0

Estou enviando dados via cansend para vcan0 , ao mesmo tempo em que estou ouvindo mensagens que foram enviadas para vcan0 usando o comando candump vcan0

Por alguma razão, eu não receberei nenhuma mensagem, ao enviar dados para vcan0 através do script, mas quando eu enviar dados através do terminal, o script recebe dados, de alguma forma.

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
    
por david114 28.08.2018 / 13:33

1 resposta

1

Você está usando o caractere hash # como dados para enviar, mas este caractere reservado para comentar em shells

Experimente assim:

( # 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
    
por 28.08.2018 / 16:38