前言
在开发过程中,将采集的数据通过串口形式打印出来,且可以描绘成图像,这样可视化的操作对于工程师开发无疑是巨大的帮助,匿名助手正好具备此功能。
一、匿名助手
1 安装
打开匿名助手官方仓库,里面有网盘链接下载并安装。
2 协议
匿名助手的使用,莫非就是按照提供的协议上传数据,即可在上位机上显示。
交互协议如下:
*数据长度LEN的单位是byte
*针对源地址和目标地址说明:
源ID是给每个设备分配的ID,即发送设备的ID号;
目标ID是数据发送给哪个设备ID号,即接收设备的ID号。
匿名助手提供了1-199给用户自定的ID范围,其余是分配给匿名产品的ID号。
和校验与附加校验说明:
uint8_t sumcheck = 0;
uint8_t addcheck = 0;
uint16_t flen = BUFF[4] + BUFF[5] * 256;
for(uint16_t i = 0; i < (flen+6); i++)//校验计算
{
sumcheck += BUFF[i];
addcheck += sumcheck;
}
BUFF[flen+6] = sumcheck;//和校验
BUFF[flen+7] = addcheck;//附加校验
匿名助手的用途:
匿名助手数据帧类型主要为以下三种:
- 数据校验帧
- 灵活格式帧
- 基本信息类帧
二、应用举例说明
1.利用灵活格式帧上传数据查看
灵活格式帧:功能码ID为0xF1~0xFA
数据长度:根据数据内容设置,以byte为单位。
数据内容:设置根据需要设置。
anoass_debug.c
#include "anoass_debug.h"
#include "uart.h"
uint8_t BUFF[100];
void sent_F1frame(uint32_t x1_ual,
uint32_t x1_enc,
uint32_t x2_ual,
uint32_t x2_enc,
uint32_t y1_ual,
uint32_t y1_enc,
uint32_t y2_ual,
uint32_t y2_enc)
{
uint8_t _cnt = 0;
BUFF[_cnt++]=0xAB;//帧头
BUFF[_cnt++]=0xFF;//源地址
BUFF[_cnt++]=0xFF;//目标地址
BUFF[_cnt++]=0xF1;//功能码(ID)
BUFF[_cnt++]=32; //数据长度(2字节)
BUFF[_cnt++]=0; //数据长度
//存数据 BEGIN
BUFF[_cnt++]=BYTE0(x1_ual);
BUFF[_cnt++]=BYTE1(x1_ual);
BUFF[_cnt++]=BYTE2(x1_ual);
BUFF[_cnt++]=BYTE3(x1_ual);
BUFF[_cnt++]=BYTE0(x1_enc);
BUFF[_cnt++]=BYTE1(x1_enc);
BUFF[_cnt++]=BYTE2(x1_enc);
BUFF[_cnt++]=BYTE3(x1_enc);
BUFF[_cnt++]=BYTE0(x2_ual);
BUFF[_cnt++]=BYTE1(x2_ual);
BUFF[_cnt++]=BYTE2(x2_ual);
BUFF[_cnt++]=BYTE3(x2_ual);
BUFF[_cnt++]=BYTE0(x2_enc);
BUFF[_cnt++]=BYTE1(x2_enc);
BUFF[_cnt++]=BYTE2(x2_enc);
BUFF[_cnt++]=BYTE3(x2_enc);
BUFF[_cnt++]=BYTE0(y1_ual);
BUFF[_cnt++]=BYTE1(y1_ual);
BUFF[_cnt++]=BYTE2(y1_ual);
BUFF[_cnt++]=BYTE3(y1_ual);
BUFF[_cnt++]=BYTE0(y1_enc);
BUFF[_cnt++]=BYTE1(y1_enc);
BUFF[_cnt++]=BYTE2(y1_enc);
BUFF[_cnt++]=BYTE3(y1_enc);
BUFF[_cnt++]=BYTE0(y2_ual);
BUFF[_cnt++]=BYTE1(y2_ual);
BUFF[_cnt++]=BYTE2(y2_ual);
BUFF[_cnt++]=BYTE3(y2_ual);
BUFF[_cnt++]=BYTE0(y2_enc);
BUFF[_cnt++]=BYTE1(y2_enc);
BUFF[_cnt++]=BYTE2(y2_enc);
BUFF[_cnt++]=BYTE3(y2_enc);
//存数据 END
uint8_t sumcheck = 0;
uint8_t addcheck = 0;
uint16_t flen = BUFF[4] + BUFF[5] * 256;
for(uint16_t i = 0; i < (flen+6); i++)//校验计算
{
sumcheck += BUFF[i];
addcheck += sumcheck;
}
BUFF[_cnt++] = sumcheck;//和校验
BUFF[_cnt++] = addcheck;//附加校验
Usart1_DMA_Send(BUFF, _cnt);//串口发送
}
anoass_debug.h
#ifndef __ANOASS_DEBUG_H_
#define __ANOASS_DEBUG_H_
#include "sys.h"
#define BYTE0(dwTemp) (*(char *)(&dwTemp))
#define BYTE1(dwTemp) (*((char *)(&dwTemp)+1))
#define BYTE2(dwTemp) (*((char *)(&dwTemp)+2))
#define BYTE3(dwTemp) (*((char *)(&dwTemp)+3))
void sent_F1frame(uint32_t x1_ual,
uint32_t x1_enc,
uint32_t x2_ual,
uint32_t x2_enc,
uint32_t y1_ual,
uint32_t y1_enc,
uint32_t y2_ual,
uint32_t y2_enc);
#endif
上位机设置
总结
匿名助手使用记录,举例使用灵活数据帧上传数据进行波形显示,其他功能后续使用到再添加更新(仅个人开发记录,若侵权删)。