背景
前回はCAN送受信テストができたので、今回はCAN定期送信してみる。前回の記事はこちら。
ラズパイ内にシェルスクリプトを実装
以下サイトを参考にさせていただき、ラズパイ内にシェルスクリプトを実装。
https://qiita.com/h-kiyo/items/d8583af13768ad67bcd0
/bin $ sudo vi cansend.sh ← VIエディタで”cansend.sh”を作成
/bin $ bash cansend.sh ← シェルスクリプトを実行
CANID=0x100のCANフレームが流れ始めた。受信側を確認。
受信できている!
CANID=0x400に変更し、送信間隔を1秒間隔に変更。左が送信側(ラズパイ)で、右が受信側(USB2CAN)。
CAN定期送信対象を増やす
CAN定期送信対象を1つから2つにしてみた。
CANフレーム①:CANID=100、DATA=11 22 33 44 55 66 77 88
CANフレーム②:CANID=200、DATA=88 77 66 55 44 33 22 11
#!/bin/bash
while true; do
echo 100"#"1122334455667788
cansend can0 100"#"1122334455667788
sleep 0.1
echo 200"#"8877665544332211
cansend can0 200"#"8877665544332211
sleep 1.0
done
CAN定期送信間隔をそれぞれ設定する
CANフレームを2つにできたが、これではCANフレーム単位で送信周期を変更できない。
コードを以下のように修正。
#!/bin/bash
can1 () {
while true; do
echo "100#1122334455667788"
cansend can0 "100#1122334455667788"
sleep 0.1
#echo "200#8877665544332211"
#cansend can0 "200#8877665544332211"
sleep 1.0
done
}
can2 () {
while true; do
#echo "100#1122334455667788"
#cansend can0 "100#1122334455667788"
sleep 0.1
echo "200#8877665544332211"
cansend can0 "200#8877665544332211"
sleep 0.5
done
}
# can1 をバックグラウンドで実行
can1 &
# can2 をバックグラウンドで実行
can2 &
# バックグラウンドで実行したプロセスの待機
wait
sleepの変数時間を別々にして関数をバックグラウンドで実行する形にしてみた。一応動作している。
CANID=200の送信周期が早い様子がわかる。
[…] Raspberry PI 4 Model B(ラズパイ)でCAN定期送信してみる […]
[…] Raspberry PI 4 Model B(ラズパイ)でCAN定期送信してみる SHARE […]