文章目录
- 一、匿名助手安装
- 二、通信协议移植
- 1.官方匿名通信协议介绍
- 2.cubemx配置以及串口发送代码编写
- 3.协议代码移植
- 三、匿名助手使用
- 1.数据连接
- 2.添加灵活数据
- 3.添加数据波形
一、软件安装
匿名科创官网:www.anotc.com
二、匿名协议移植
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.添加数据波形
点击添加波形,选择数据源。
参考 :