1233

Dependencies:   cJSON_lib mcp2515- mbed-dev-f303 esp8266 yezhong_main_controller_copy_3

DATA_xiedian/data_xiedian.cpp

Committer:
yezhong
Date:
2022-06-24
Revision:
0:e923de71caa5

File content as of revision 0:e923de71caa5:

#include "data_xiedian.h"
#include "data_pc.h"
#include "CAN.h"

Serial      xiedian(PC_10, PC_11);





unsigned int flag_foot_A = 0, flag_foot_B = 0;
unsigned int Sfootnum = 0;

uint8_t Sfootget[45] = {0};                                                    
uint8_t Sfootuse[45] = {0};

uint16_t shou[28]={0};
float shou1[28]={0};
Timer vv;





void xiedian_decode()
{    
      vv.start();
      vv.read(); 
    float  b=vv.read(); 
/*
    for(int i = 0; i < 6; i++)
    {
    shou[i]=(Sfootuse[2*i]<<8)|Sfootuse[2*i+1];
    }
    for(int i = 0; i < 11; i++)
    {
    shou[2*i+6]=(Sfootuse[3*i+12]<<4)|(Sfootuse[3*i+13]>>4);
    shou[2*i+7]=((Sfootuse[3*i+13]<<8)&0xFFF)|Sfootuse[3*i+14];
    }
    
    for(int i = 0; i < 28; i++)
    {
    //shou1[i]=(float)shou[i]/4096*3.3;
    shou1[i]=4096-shou[i];
    }        
    pc.printf("%2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %2.2f %.3f\r\n",shou1[6],shou1[7],shou1[8],shou1[9],shou1[10],shou1[11],shou1[12],shou1[13],shou1[14],shou1[15],shou1[16],shou1[17],shou1[18],shou1[19],shou1[20],shou1[21],shou1[22],shou1[23],shou1[24],shou1[25],shou1[26],b);
*/
   for(int i = 0; i < 2; i++)
    {
    shou[2*i]=(Sfootuse[3*i]<<4)|(Sfootuse[3*i+1]>>4);
    shou[2*i+1]=((Sfootuse[3*i+1]<<8)&0xFFF)|Sfootuse[3*i+2];
    }
   for(int i = 0; i < 4; i++)
    {
    shou1[i]=4096-shou[i];
    }        
   // pc.printf("%2.2f %2.2f %2.2f %2.2f %0.3f\r\n",shou1[0],shou1[1],shou1[2],shou1[3],b);
     pc.printf("xiedian:%2.2f %2.2f %2.2f %2.2f\r\n",shou1[0],shou1[1],shou1[2],shou1[3]);
}


void xiedian_clear()
{
    //for(int i = 0; i < 45; i++)
    for(int i = 0; i < 6; i++)
    {
        Sfootuse[i] = 0;
    }
}


void serial_xiedian_isr(void)
{
   // pc.printf("begin\n");
   
    while(xiedian.readable())
    {       
        uint8_t c = xiedian.getc();
        if(c ==0x0A)
        {
            flag_foot_A = 1;
            flag_foot_B = 0;
            Sfootnum = 0;
            //for(unsigned int i = 0; i < 45; i++)
            for(unsigned int i = 0; i < 6; i++)
            {
                Sfootget[i] = 0;      
            }
            
            break;                               //直接结束;回到起始位置;
        }
        if(c ==0x0B)
        {
            flag_foot_B = 1;
        }
        
        if(flag_foot_A == 1)
        {
            //if((flag_foot_B != 1) && (Sfootnum < 45))
            if((flag_foot_B != 1) && (Sfootnum < 6))
            {
                Sfootget[Sfootnum] = c;    
            }
            
            Sfootnum++;
            
            //if((flag_foot_B == 1) && (Sfootnum != 46))
            if((flag_foot_B == 1) && (Sfootnum != 7))
            {    
                flag_foot_A = 0;
                flag_foot_B = 0;
                Sfootnum    = 0;     
            }
            
            //if((flag_foot_B == 1) && (Sfootnum == 46))
            if((flag_foot_B == 1) && (Sfootnum == 7))
            {
                flag_foot_A = 0;
                flag_foot_B = 0;
                Sfootnum    = 0;
                
              //  for(unsigned int i = 0; i < 45; i++)
                for(unsigned int i = 0; i < 6; i++)
                {
         //           Sfootuse[i] = Sfootget[i] - '0';
                      Sfootuse[i] = Sfootget[i] ;
                }
                
                xiedian_decode();
                xiedian_clear(); 
            } 
        }
    }
    
}