全网唯一OpenCyphal/UAVCAN教程(11)用candump和gawk工具写一个Cyphal协议解析小工具

Posted 奇妙之二进制

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全网唯一OpenCyphal/UAVCAN教程(11)用candump和gawk工具写一个Cyphal协议解析小工具相关的知识,希望对你有一定的参考价值。

经常需要调试Cyphal协议,yakut的安装比较麻烦,所以就用candump和gawk实现了一个协议解析工具。

这个candump导出的数据,很明显这是一条心跳广播,7D55是心跳广播的id,而且还是条单帧消息。

can1 107D552A [8] 00 00 00 00 00 01 A1 E0
can1 107D552A [8] 01 00 00 00 00 01 A1 E1
can1 107D552A [8] 02 00 00 00 00 01 A1 E2
can1 107D552A [8] 03 00 00 00 00 01 A1 E3

解析的依据参考这个图片:

贴上我们的awk脚本:

#!/usr/bin/gawk

BEGIN 

id_name[7509] = "heart_beat";
# add your id and name map here

can_id_index = 2;

getline
#line example: (001.000) can0 11111 [8] 55555
if($1 ~/^\\(/)
	 can_id_index = 3;

while (getline) 

	# have timestamp
	if(can_id_index == 3) 
		timestamp = strtonum(substr($1, 2));
	

	#line example: can0 1122233 [8] 5555555
	can_id = strtonum("0x"$can_id_index);
	source_id = and(can_id, 0x0000007F);

	# 0 message

以上是关于全网唯一OpenCyphal/UAVCAN教程(11)用candump和gawk工具写一个Cyphal协议解析小工具的主要内容,如果未能解决你的问题,请参考以下文章

全网唯一OpenCyphal/UAVCAN教程libcanard介绍

全网唯一OpenCyphal/UAVCAN教程libcanard介绍

全网唯一OpenCyphal/UAVCAN教程(11)用candump和gawk工具写一个Cyphal协议解析小工具

全网唯一OpenCyphal/UAVCAN教程(11)用candump和gawk工具写一个Cyphal协议解析小工具

全网唯一UAVCAN中文教程(21)libcanard简介

全网唯一UAVCAN中文教程(23)libcanard源码分析