匿名四轴上位机使用简介

匿名四轴上位机可以通过串口上传数据,画出波形图,这个功能在调试pid的时候还是很有用的,主要就讲如何使用这个功能

有个视频说的很详细 http://v.youku.com/v_show/id_XNTkzNDkxNTU2.html

1、设置好串口,如下

匿名四轴上位机使用简介_第1张图片

在基本功能里可以发送接收,当成普通的串口调试助手来使用,设置完了点击下面的打开串口即可

 

2、设置帧格式

在左边高级收码中,右上角有帧格式的设置,如下

匿名四轴上位机使用简介_第2张图片

1-10的选择根据代码里fun的值来,对应0xA1-0xAA,这里我使用的是oxA2 故选择2

后面为代码对应帧里上传的数据格式的选择,我上传的是三个float型,所以只需要把前三个都选择为float就行了

最后打开 开关,显示  帧格式设置完毕

3、画波形所需的数据设置,如下

匿名四轴上位机使用简介_第3张图片

最上面的1-20序号对应后面会提到的波形序号,也就是说最多能指定显示20个波形

下面设置的每个序号对应波形的数据来源,从某个帧的某个位获得。

数据帧即之前设置过的,由于我上传使用的是0xA2 所以选择2,数据位即之前设置的三个float型的选择,可以看到最多有30个数据位,与之前类型选择的个数一样

我选择数据位1(之前三个float 我串口上传的分别是pitch roll  yaw角度),这样我们就把待会的波形1的数据来源设置为帧2的第一位,也就是pitch角了

同理   roll yaw 即帧2的位23 设置为波形序号2,3  设置结束 打开旁边的数据校验 数据显示  功能帧显示,再打开下面的

 https://images2017.cnblogs.com/blog/1104670/201708/1104670-20170805152257209-125321849.png

就可以看到上传的原始数据(左边)和相应的处理后的数据(右边)

此时调到波形显示界面,打开波形显示 勾选刚才设置过的序号123 可以看到pitch roll yaw角的曲线

匿名四轴上位机使用简介_第4张图片

 

 最后讲讲单片机上传数据的代码部分,上传的数据需要按照上位机规定的格式来上传,在上位机打开时  F12可以看到使用说明,里面有讲格式的规定,以下为上传三个角度的代码,串口初始化等略过

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

void usart1_send_char(u8 c)

{

    while((USART1->SR&0X40)==0);//等待上一次发送完毕  

    USART1->DR=c;   

}

 

//fun:功能字. 0XA0~0XAF

//data:数据缓存区,最多28字节!!

//len:data区有效数据个数

void usart1_niming_report(u8 fun,u8*data,u8 len)

{

    u8 send_buf[32];

    u8 i;

    if(len>28)return;    //最多28字节数据

    send_buf[len+3]=0;  //校验数置零

    send_buf[0]=0X88;   //帧头

    send_buf[1]=fun;    //功能字

    send_buf[2]=len;    //数据长度

    for(i=0;i

    for(i=0;i

    for(i=0;i

}

 

void mpu6050_send_data(float pitch,float roll,float yaw)

{

    u8 tbuf[16];

    unsigned char *p;

    p=(unsigned char *)&pitch;

    tbuf[0]=(unsigned char)(*(p+3));

    tbuf[1]=(unsigned char)(*(p+2));

    tbuf[2]=(unsigned char)(*(p+1));

    tbuf[3]=(unsigned char)(*(p+0));

     

    p=(unsigned char *)&roll;

    tbuf[4]=(unsigned char)(*(p+3));

    tbuf[5]=(unsigned char)(*(p+2));

    tbuf[6]=(unsigned char)(*(p+1));

    tbuf[7]=(unsigned char)(*(p+0));

     

    p=(unsigned char *)&yaw;

    tbuf[8]=(unsigned char)(*(p+3));

    tbuf[9]=(unsigned char)(*(p+2));

    tbuf[10]=(unsigned char)(*(p+1));

    tbuf[11]=(unsigned char)(*(p+0));

     

    usart1_niming_report(0XA2,tbuf,12);//自定义帧,0XA2

}  

 稍微提一下最后一个函数,就是把float拆成四个字节发送(由于串口只能一个字节一个字节的发送),用指针获得float型变量的首地址,然后强制转换为unsigned char型,地址逐渐加大把float的四个字节分别发出即可。

 

你可能感兴趣的:(MCU)