找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 741|回复: 4
收起左侧

角度传感器串口输出ASCII吗,怎么提取ASCII的整数呢?

[复制链接]
ID:259813 发表于 2024-10-22 14:23 | 显示全部楼层 |阅读模式
例如角度传感器输出ASCII吗258.123度,只想提取258,怎么提取?比较困惑,求助一下
回复

使用道具 举报

ID:161164 发表于 2024-10-22 15:18 | 显示全部楼层


  1. uint ASCII_Convert(uchar * ptdat)
  2. {
  3.         uint Angle = 0;
  4.         uchar i = 0;
  5.         while(ptdat[i]>='0' && ptdat[i] <='9')
  6.         {
  7.                 Angle*=10;
  8.                 Angle+=ptdat[i]-'0';
  9.                 i++;
  10.         }
  11.         return Angle;
  12. }

  13. void main()
  14. {
  15.         uchar *AngleRaw = "258.123";
  16.         uint AngleGet = ASCII_Convert(AngleRaw);
  17.         while(1);
  18. }
复制代码
回复

使用道具 举报

ID:1034262 发表于 2024-10-22 21:22 | 显示全部楼层
那就取数据到小数点结束就可以了。
回复

使用道具 举报

ID:21455 发表于 2024-10-24 08:45 | 显示全部楼层
atoi() 函数了解下
回复

使用道具 举报

ID:446156 发表于 2024-10-24 13:03 | 显示全部楼层
  1. static float NumberResolution(char *Buf,uint8_t Star,uint8_t Stop)
  2. {
  3.         uint8_t i=0;
  4.         float Data=0;
  5.     uint8_t PointCount=0;
  6.     uint8_t PointEn=0;
  7.         uint8_t Negative = 0;
  8.        
  9.         for(i=Star;i<Stop;i++)
  10.         {
  11.                 if(Buf[i] == '-')
  12.                 {
  13.                         Negative = 1;
  14.                         Data = 0;
  15.                 }
  16.         else if(Buf[i] == '.')
  17.         {
  18.             PointEn = 1;
  19.             PointCount = 0;
  20.         }
  21.                 /*如果收到的字符是数字则是有效数据*/
  22.                 else if((Buf[i] >= '0') && (Buf[i] <= '9'))
  23.                 {
  24.                         Data = Data*10 + Buf[i] - '0';
  25.             /*计算小数点后有几位*/
  26.             if(PointEn != 0)
  27.             {
  28.                 PointCount++;
  29.             }
  30.                 }
  31.                 /*如果收到的字符不是数字但是上次收到的字符是数字则接收完成*/
  32.                 else if((Buf[i-1] >= '0') && (Buf[i-1] <= '9'))
  33.                 {
  34.                         break;
  35.                 }
  36.         }
  37.     for(i=0;i<PointCount;i++)
  38.     {
  39.         Data = Data/10;
  40.     }
  41.         if(Negative != 0)
  42.         {
  43.                 Data = -Data;
  44.         }
  45.         return Data;
  46. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表