MCU接收串口字符型数据转换成数据型数据

   做MCU开发时,常常碰到串口接收的数据是字符型数据,是ASCII码,而我们需要解析的是数据型的。如:串口接收到的是:"-236,854,635"这个字符串。而我们需要将这个字符串解析为:int 的-236,854,635才能为我所用。

以下是实现功能的子函数。

void PutCharTOdata(double *tab,u8 *rev_tab,u8 rev_count)//   tab[ ] 为转换后的数据,rev_tab[ ]为转换前的一个个字符,rev_count为字符串长度(字符的个数)
{
    u8 i;
 u8 pflag  = 0;
 u8 point  = 0;
 u8 F_flag  =0;
  for(i=0;i<10;i++) tab[i] =0.0;
  for(i=0;i<rev_count;i++)
  {
         
           if((F_flag==0)&&(rev_tab[i] == '-'))//判断是否为负号
           {
               F_flag = 1;
     } 
           else if(rev_tab[i]!=',')//判断是否碰到逗号
           {
              if(rev_tab[i]!='.')//判断是否碰到小数点

              {
                 if(pflag)
                 {
                      tab[point] = (double)(rev_tab[i]-0x30)/(pow(10,pflag))+tab[point];
        pflag ++;
     }
     else
     {                   
     tab[point] = (rev_tab[i]-0x30)+tab[point]*10;
     }
              }
     else
     {
         pflag ++;
     }
     }
     else if(rev_tab[i]==',')
     {

        if(F_flag ==1) tab[point] =  -tab[point];
              point++;
     pflag =0;
     F_flag = 0;
     }
 }
  if(F_flag ==1) tab[point] =  -tab[point];
}

此函数的功能为将rev_tab[ ] = "-236,854,635";这个字符串解析为了:

tab[0] =-236;

tab[1] = 854;

tab[2] = 635;

你可能感兴趣的:(MCU接收串口字符型数据转换成数据型数据)