OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2584|回复: 1

求教下asc2码转字符的问题,新人求帮忙,标题要长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长

[复制链接]

3

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2016-11-25
在线时间
3 小时
发表于 2016-11-25 19:43:36 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 善解人衣 于 2016-11-25 19:45 编辑

仪器发送的是ASC2码 并且 USART_RX_BUF[t]内已经收到  现在想转成字符型的 ,比如仪器发给的是28.1336所对应的ASC2码32 38 2E 31 33 33 36,存储在USART_RX_BUF[3]到USART_RX_BUF[9]中  现在 希望能存储到 一个变量 比如t 让它的值为28.1336,请问 这个应该怎么编程呢 谢谢大家

最佳答案

查看完整内容[请看2#楼]

这个不难啊。只要对应着ASCII码表,自己写一个函数不就可以了吗。 举个例子,可以这样写: float conv_str(u8* pstr){ u8 i,flag_point=0; float conv; for(i=3;i
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2016-8-13
在线时间
14 小时
发表于 2016-11-25 19:43:37 | 显示全部楼层
本帖最后由 尼斯达 于 2016-11-25 20:39 编辑

这个不难啊。只要对应着ASCII码表,自己写一个函数不就可以了吗。
举个例子,可以这样写:
float  conv_str(u8*    pstr){
   u8  i,flag_point=0;
   float  conv;
    for(i=3;i<10;++i){
        if(!flag_point){
            if((*(pstr+i))==0x2e){
                flag_point=1;
            }
            else{
                conv=conv*10+(*(pstr+i))-0x30;
            }
        }
        else{
            conv=conv+((*(pstr+i))-30)/flag_point;
            ++flag_point;
        }                }
}

具体实现要具体调试,这个仅仅是思路。。。



回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-29 02:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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