匿名助手(匿名上位机)使用与通信协议移植教程

文章目录
  • 一、匿名助手安装
  • 二、通信协议移植
    • 1.官方匿名通信协议介绍
    • 2.cubemx配置以及串口发送代码编写
    • 3.协议代码移植
  • 三、匿名助手使用
    • 1.数据连接
    • 2.添加灵活数据
    • 3.添加数据波形

一、软件安装

匿名科创官网:www.anotc.com

匿名助手开源地址:
匿名助手: 匿名团队打造的调试软件,可以实现串口、UDP方式的数据解析、波形显示等丰富功能,其设计充分考虑了软件的通用性、灵活性,希望能作为一个好用的调试助手帮助到大家的开发、调试工作。icon-default.png?t=N7T8https://gitee.com/anotc/AnoAssistant

二、匿名协议移植

1.官方匿名通信协议介绍

根据匿名科创给的通信协议可以看到帧头为0xAB,源地址和目标地址针对灵活数据可以随意填写。功能码是选择数据源,针对灵活数据可以选择0xF1~0xFA。数据长度是两个字节。

和校验 SUM CHECK 计算方法:从帧头 0xAB 字节开始,一直到 DATA 区结束,对每一字节进行累加操作,只取低 8 位

附加校验 ADD CHECK 计算方法:计算和校验时,每进行一字节的加法运算,同时进行一次 SUM CHECK 的累加操作,只取低 8 位。

校验计算示例: 假设数据帧缓存为 data_buf 数组,0xAB 存放于数组起始位置,那么 data_buf[4]、data_buf[5]存放的是数据长 度,校验程序如下:

2.cubemx配置以及串口发送代码编写

第一步:开启串口 

第二步:配置时钟

第三步:开启定时器实现定时中断10ms (用于定时发送数据)

 注意这里用的是定时器6,根据数据手册可知这个定时器连接的是APB1,所以时钟频率是84MHz。

第四步:发送代码编写 

 __HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
 HAL_TIM_Base_Start_IT(&htim6);

在main.c中使能串口以及开启定时器 

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim == &htim6)
	{ 
//     发送函数

	}
}

开启定时器中断,每10ms发送一次数据

3.协议代码编写

.c文件代码

#define BYTE0(dwTemp) (*(char *)(&dwTemp))
#define BYTE1(dwTemp) (*((char *)(&dwTemp)+1))
#define BYTE2(dwTemp) (*((char *)(&dwTemp)+2))
#define BYTE3(dwTemp) (*((char *)(&dwTemp)+3))
	
uint8_t BUFF[100];
uint16_t flen;
void sent_data1(uint16_t A,float B,int32_t C)
//发送一个二字节uint16类型,四字节float类型,四字节int32类型
{	
		uint8_t _cnt = 0;
		BUFF[_cnt++]=0xAB;//帧头
		BUFF[_cnt++]=0xFF;//源地址
		BUFF[_cnt++]=0xFF;//目标地址
		BUFF[_cnt++]=0xF1;//功能码(ID)
		BUFF[_cnt++]=10;//数据长度(2字节)
		BUFF[_cnt++]=0;//数据长度
		BUFF[_cnt++]=BYTE0(A);//数据内容A(2字节)
		BUFF[_cnt++]=BYTE1(A);
	
		BUFF[_cnt++]=BYTE0(B);//数据内容B(4字节)
		BUFF[_cnt++]=BYTE1(B);
		BUFF[_cnt++]=BYTE2(B);
		BUFF[_cnt++]=BYTE3(B);
	
		BUFF[_cnt++]=BYTE0(C);//数据内容C(4字节)
		BUFF[_cnt++]=BYTE1(C);
		BUFF[_cnt++]=BYTE2(C);
		BUFF[_cnt++]=BYTE3(C);
	
		uint8_t sumcheck = 0;
		uint8_t addcheck = 0;
		uint16_t flen = BUFF[4] + BUFF[5] * 255;
		for(uint16_t i=0; i < (flen+6); i++)//校验计算
		{
			sumcheck += BUFF[i]; 
			addcheck += sumcheck; 
		}
		
		BUFF[_cnt++] = sumcheck;//和校验
		BUFF[_cnt++] = addcheck;//附加校验
		HAL_UART_Transmit(&huart3,BUFF,_cnt,0xffff);//串口发送
}

.h文件代码

#ifndef DEBUG_H_
#define DEBUG_H_
#include "main.h"

void sent_data1(uint16_t A,float B,int32_t C);

#endif

最后在定时器中断中引用函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim == &htim6)
	{ 
 
		sent_data1(100,0.1,-100);
	}
}

三、匿名助手使用

1.数据连接

选择串口连接,对串口进行配置,打开通信连接。如果按钮由红色变成绿色则显示成功连接。

2.添加灵活数据

注意此处选择的帧ID与数据类型,要与发送的协议相一致。

3.添加数据波形

点击添加波形,选择数据源。

参考 :

http://t.csdnimg.cn/3pTpl

http://t.csdnimg.cn/Tlp9Q

  • 14
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值