利用ESP32(Arduino IDE)向匿名上位机发送欧拉角

一. 匿名上位机介绍

匿名上位机官方介绍视频

匿名上位机官方下载
在这里插入图片描述

二. 匿名协议说明

1. 匿名协议官方说明文档

官方对于协议的说明文档可以在下载的匿名上位机中打开,是一份PDF文档
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 协议说明

这里假设我们想向上位机发送计算出来的欧拉角参数

  1. 首先了解匿名协议的数据格式
    在这里插入图片描述
  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
}

四. 运行效果

在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AoDeLuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值