开源工具can-utils的使用
for ((i=1;i<=1000;i++))
do./cangen -g 0 -L 8 -n 100 -I 0x1 can0sleep 0.01
done
cansend 发送 帧 id和内容
cangen发送随机帧内容
cansend发送比如:
#!/bin/bash# 初始值
value=1# 循环 1,000,000 次
for ((i=1; i<=1000000; i++)); do# 转成 64 位 16 进制(大端字节序)data=$(printf "%016X" "$value")# 发送到 can0,ID = 0x123./cansend can0 123#${data}echo "发送第 $i 条: value=$value, hex=$data"# 自增value=$((value + 1))# 间隔 0.5 秒sleep 0.5
done
这里的 {}
是 Bash 的变量替换语法,用来明确变量的边界。
在 Bash 里:
-
写成
$data
也能取变量值 -
但有时候变量名后面会接别的字符,如果不用
{}
,Bash 可能会把它当成变量名的一部分
举个例子:
data=ABC
echo "$dataXYZ" # 结果是空,因为它会找名叫 dataXYZ 的变量
echo "${data}XYZ" # 结果是 ABCXYZ,因为 {} 明确了 data 的边界
cangen用法如下:
for ((i=1;i<=1000;i++))
do./cangen -g 0 -L 8 -n 100 -I 0x1 can0sleep 0.01
done
for ((i=1;i<=1000;i++))
do./cangen -g 0 -L 8 -n 100 -I 0x1 -D i can0sleep 0.01
done