匿名科创地面站本身适用于四旋翼的调参,但是根据匿名的协议,我们可以将我们需要查看的数据发送到这个上位机,对于做控制的同学来说,可以更加直观的查看某些变量的变化
我在这里使用STM32F4串口二进行配置
以下为ANO.C文件
#include "ANO.h"
u8 data_to_send[50];
u8 wait_for_translate;
u8 USART2_TxBuffer[256];
u8 USART2_TxCounter=0;
u8 USART2_count=0;
u8 testdatatosend[50];
#define BYTE0(dwTemp) ( *( (char *)(&dwTemp) + 0) )
#define BYTE1(dwTemp) ( *( (char *)(&dwTemp) + 1) )
#define BYTE2(dwTemp) ( *( (char *)(&dwTemp) + 2) )
#define BYTE3(dwTemp) ( *( (char *)(&dwTemp) + 3) )
void UART2_Send_Str(unsigned char *s)//发送字符串 函数 应用指针 方法
{
unsigned char i=0; //定义一个局部变量 用来 发送字符串 ++运算
while(s[i]!=' ') // 每个字符串结尾 都是以 结尾的
{
USART_SendData(USART2,s[i]); //通过库函数 发送数据
while( USART_GetFlagStatus(USART2,USART_FLAG_TC)!= SET);
//等待发送完成。 检测 USART_FLAG_TC 是否置1; //见库函数 P359 介绍
i++; //i++一次
}
}
void Test_Send_User(u16 data1, u16 data2, u16 data3,u16 data4, u16 data5, u16 data6,u16 data7, u16 data8, u16 data9,u16 data10)
{
u8 _cnt=0;
vs16 _temp;
u8 i;
u8 sum = 0;
testdatatosend[_cnt++]=0xAA;//0xAA为帧头
testdatatosend[_cnt++]=0x05;//0x05为数据发送源,具体请参考匿名协议,本字节用户可以随意更改
testdatatosend[_cnt++]=0xAF;//0xAF为数据目的地,AF表示上位机,具体请参考匿名协议
testdatatosend[_cnt++]=0xF1;//0xF1,表示本帧为F1用户自定义帧,对应高级收码的F1功能帧
testdatatosend[_cnt++]=0;//本字节表示数据长度,这里先=0,函数最后再赋值,这样就不用人工计算长度了
testdatatosend[_cnt++]=BYTE1(data1);//将要发送的数据放至发送缓冲区
testdatatosend[_cnt++]=BYTE0(data1);
testdatatosend[_cnt++]=BYTE1(data2);//将要发送的数据放至发送缓冲区
testdatatosend[_cnt++]=BYTE0(data2);
testdatatosend[_cnt++]=BYTE1(data3);
testdatatosend[_cnt++]=BYTE0(data3);
testdatatosend[_cnt++]=BYTE1(data4);//将要发送的数据放至发送缓冲区
testdatatosend[_cnt++]=BYTE0(data4);
testdatatosend[_cnt++]=BYTE1(data5);//将要发送的数据放至发送缓冲区
testdatatosend[_cnt++]=BYTE0(data5);
testdatatosend[_cnt++]=BYTE1(data6);
testdatatosend[_cnt++]=BYTE0(data6);
testdatatosend[_cnt++]=BYTE1(data7);//将要发送的数据放至发送缓冲区
testdatatosend[_cnt++]=BYTE0(data7);
testdatatosend[_cnt++]=BYTE1(data8);//将要发送的数据放至发送缓冲区
testdatatosend[_cnt++]=BYTE0(data8);
testdatatosend[_cnt++]=BYTE1(data9);
testdatatosend[_cnt++]=BYTE0(data9);
testdatatosend[_cnt++]=BYTE1(data10);//将要发送的数据放至发送缓冲区
testdatatosend[_cnt++]=BYTE0(data10);
testdatatosend[4] = _cnt-5;//_cnt用来计算数据长度,减5为减去帧开头5个非数据字节
for(i=0;i<_cnt;i++)
sum += testdatatosend[i];
testdatatosend[_cnt++]=sum; //将sum校验数据放置最后一字节
UART2_Send_Str(testdatatosend);
}
// //DT_Send_Data(data_to_send, _cnt);
// for(m=0;m<=_cnt;m++)
// USART_SendData(USART2,data_to_send[m]);
以下为ANO.H文件
#ifndef __ANO_H
#define __ANO_H
#include "usart2.h"
void Test_Send_User(u16 data1, u16 data2, u16 data3,u16 data4, u16 data5, u16 data6,u16 data7, u16 data8, u16 data9,u16 data10);
void Usart2_Send(unsigned char *DataToSend ,u8 data_num);
#endif
我们只需要在函数中将需要查看的变量输入到函数中,就可以在上位机查看并且显示波形
Test_Send_User(4563,456,456,456,8678,465,654,56456,6546,564);
当然 直接发送还是不可行的 我们仍需要在上位机进行配置并保存
pass:如果想更加详细使用,还请在哔哩哔哩上搜索 “匿名科创”,匿名小哥讲解的很好