Я отправляю данные с помощью 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

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .