OpenEdv-开源电子网

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

对于串口接收到的字符串,怎么取特定字符之间的数据

[复制链接]

2

主题

12

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2022-3-6
在线时间
6 小时
发表于 2023-3-22 22:23:36 | 显示全部楼层 |阅读模式
2金钱
对于串口接收到的字符串,怎么取特定字符之间的数据?(串口信息中五组数字是我需要的)
接收到[66,8,2,0,22]这样的字符串,每个数字都有可能在0-99之间变动,所以没办法用选定USART_RX_BUF[t]这样固定的序号来确定。有什么简单一些的方式呢
这是我让他 printf("%c",USART_RX_BUF[1]);printf("%c",USART_RX_BUF[2]);才出来的第一组

最佳答案

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

一样的 找到逗号分割下 sscanf就好了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2023-3-22 22:23:37 | 显示全部楼层
cao2022 发表于 2023-3-23 13:21
我看您帖子里的处理字符串数字的方法是使用于固定的格式,比如说年是4位,月和日是2位。我这个得到的数据 ...

一样的  找到逗号分割下 sscanf就好了
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2022-3-6
在线时间
6 小时
 楼主| 发表于 2023-3-22 22:29:47 | 显示全部楼层
我现在想到是用循环让他一直辨认是不是0-9之间的数字,首先判断是否是0-9,不是0-9就直接下一个,如果是就再判断一个,两个都是就输出两个,一个是一个不是就输出一个..
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8462
金钱
8462
注册时间
2020-5-11
在线时间
3904 小时
发表于 2023-3-23 09:30:08 | 显示全部楼层
自己写个小函数,字符挨个进入状态机,
状态0:若是数字则存入数组且状态加1;
状态1:若是数字则存入数组,否则(数据接收完成)回状态0;
专治疑难杂症
回复

使用道具 举报

70

主题

6756

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12983
金钱
12983
注册时间
2012-11-26
在线时间
3787 小时
发表于 2023-3-23 09:48:29 | 显示全部楼层
scanf直接解析   
学无止境
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2023-3-23 09:50:54 | 显示全部楼层
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2022-3-6
在线时间
6 小时
 楼主| 发表于 2023-3-23 13:21:52 | 显示全部楼层
nashui_sx 发表于 2023-3-23 09:50
http://www.openedv.com/forum.php?mod=viewthread&tid=301408&extra=

我看您帖子里的处理字符串数字的方法是使用于固定的格式,比如说年是4位,月和日是2位。我这个得到的数据的0-99之间变动,各位数只显示一位所以好像没办法像帖子里的方法采用几位数字的方式
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2022-3-6
在线时间
6 小时
 楼主| 发表于 2023-3-23 13:22:41 | 显示全部楼层

按几位数字解析?还是说按标点符号
回复

使用道具 举报

70

主题

6756

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12983
金钱
12983
注册时间
2012-11-26
在线时间
3787 小时
发表于 2023-3-23 13:32:47 | 显示全部楼层
cao2022 发表于 2023-3-23 13:22
按几位数字解析?还是说按标点符号

你看5楼的    代码有用到sscanf    然后自己再百度下用法

答案是可以直接用scanf或者sscanf解析,具体怎么用,你就自己研究去吧

这种解析效率最高,比一个个去识别的代码少了N多
学无止境
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 17:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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