一. 匿名上位机介绍
二. 匿名协议说明
1. 匿名协议官方说明文档
官方对于协议的说明文档可以在下载的匿名上位机中打开,是一份PDF文档
2. 协议说明
这里假设我们想向上位机发送计算出来的欧拉角参数
- 首先了解匿名协议的数据格式
- 了解完基本数据格式,找到文档中我们要上传欧拉角的数据帧格式
三. 向匿名上位机发送数据(基于Arduino IDE的esp32)
#include <SimpleFOC.h>
// 用于数据转换
#define BYTE0(dwTemp) (*(char *)(&dwTemp))
#define BYTE1(dwTemp) (*((char *)(&dwTemp) + 1))
#define BYTE2(dwTemp) (*((char *)(&dwTemp) + 2))
#define BYTE3(dwTemp) (*((char *)(&dwTemp) + 3))
static uint16_t a = 0;
void usart1_niming_report(uint16_t a, uint16_t b, uint16_t c, uint8_t fu)
{
unsigned char send_buf[13];
unsigned char cnt=0;
send_buf[cnt++]=0XAA; //帧头
send_buf[cnt++]=0XFF; //功能字
send_buf[cnt++]=0X03; //功能字
send_buf[cnt++]=7; //数据长度
//原始数据,这里代表的是计算出的欧拉角参数
send_buf[cnt++]=BYTE0(a);
send_buf[cnt++]=BYTE1(a);
send_buf[cnt++]=BYTE0(b);
send_buf[cnt++]=BYTE1(b);
send_buf[cnt++]=BYTE0(c);
send_buf[cnt++]=BYTE1(c);
send_buf[cnt++]=BYTE0(fu);
// 计算校核位
unsigned char sc = 0;
unsigned char ac = 0;
for(int i=0; i<send_buf[3] + 4; i++)
{
sc += send_buf[i];
ac += sc;
}
send_buf[cnt++]=sc;
send_buf[cnt++]=ac;
// 串口发送数据
Serial.write(send_buf, sizeof(send_buf));
}
void setup()
{
Serial.begin(115200); //设置串口通讯波特率
}
void loop()
{
// 像上位机发送自定义的欧拉角参数
usart1_niming_report(a, a+100, a+200, 0);
a+=100; // 角度+1度
delay(50); // 延时50ms
}