匿名科创地面站上位机查看用户数据

匿名科创地面站本身适用于四旋翼的调参,但是根据匿名的协议,我们可以将我们需要查看的数据发送到这个上位机,对于做控制的同学来说,可以更加直观的查看某些变量的变化

我在这里使用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:如果想更加详细使用,还请在哔哩哔哩上搜索 “匿名科创”,匿名小哥讲解的很好

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容