OpenEdv-开源电子网

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

提取串口接收字符串数组里的某个字符串

[复制链接]

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
839
金钱
839
注册时间
2016-8-23
在线时间
116 小时
发表于 2019-5-15 18:14:58 | 显示全部楼层 |阅读模式
3金钱
前几天搞了好久串口发送接收字符串的程序代码,终于搞出来了。还没高兴多久,新的问题又来了。我使用STM8S105K4的UART2串口跟蓝牙模块通信的,我发送字符串指令给蓝牙后,蓝牙返回来了十几条(有时候二十多条不定)响应字符串指令,我是用一个字符串数组来接收这些返回来的指令的。我现在只需要读取数组里的某一条指令,应该怎么把它提取出来啊??有哪位前辈懂的,希望能提供点帮助。我找了好久找到一个函数strstr(str1, str2);,不知道只用这个函数来读取我数组里的某个字符串行不行。
比如,我数组接收到的指令是这些:
Rx_Buffer[] ={
AT-B PBCSTAT 1
AT-B A2DPSTAT 1
AT-B SPPSTAT 1
AT-B AVRCPSTAT 1
AT-B HFSTAT 1
AT-B SNKINIT 0
AT-B SLDN 0
AT-B HFSTAT 2
AT-B SCAN 0
AT-B SSPPIN 772052,0,44C346698642
AT-B PAIR 2,44C346698642
AT-B HFSTAT 2
AT-B SSPPIN 425883,0,44C346698642
AT-B PAIR 2,44C346698642
AT-B HFCONN 8,44C346698642,0
AT-B HFSTAT 1
AT-B SCAN 0
AT-B SSPPIN 754058,0,44C346698642
AT-B PAIR 0,44C346698642
}
然后我只需要读取其中的某一条指令来进行判断,这样我就可以进行下一步操作。

最佳答案

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

这是一段连续地址,就像一个队伍,给你队伍头的位置,后面的自然就有了
天道酬勤
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1694
金钱
1694
注册时间
2012-5-10
在线时间
437 小时
发表于 2019-5-15 18:14:59 | 显示全部楼层
紫气东升 发表于 2019-5-16 09:24
我明白返回起始地址,但是后面的地址呢,会不会也一起返回?

这是一段连续地址,就像一个队伍,给你队伍头的位置,后面的自然就有了
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5136
金钱
5136
注册时间
2014-8-26
在线时间
1316 小时
发表于 2019-5-15 18:59:01 | 显示全部楼层
可以用strstr,这个函数在源字符串里面找到匹配的字符串,会返回匹配字符串的地址
回复

使用道具 举报

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
839
金钱
839
注册时间
2016-8-23
在线时间
116 小时
 楼主| 发表于 2019-5-15 22:23:21 | 显示全部楼层
login_FAE 发表于 2019-5-15 18:59
可以用strstr,这个函数在源字符串里面找到匹配的字符串,会返回匹配字符串的地址

但是我在网上看别人举的例子,他不仅会返回匹配的的字符串地址,连后面的地址也会返回。
比如:
char str2 = “cdef”;
char str1 = “abcdefgh”;
则通过函数,将返回
strstr(str1,str2) = cdefgh;  //连gh都一起返回了
天道酬勤
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1694
金钱
1694
注册时间
2012-5-10
在线时间
437 小时
发表于 2019-5-16 09:14:29 | 显示全部楼层
紫气东升 发表于 2019-5-15 22:23
但是我在网上看别人举的例子,他不仅会返回匹配的的字符串地址,连后面的地址也会返回。
比如:
char  ...

返回的是匹配字符串的起始地址,返回的不是字符串,明白了么
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复

使用道具 举报

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
839
金钱
839
注册时间
2016-8-23
在线时间
116 小时
 楼主| 发表于 2019-5-16 09:24:12 | 显示全部楼层
xsx127 发表于 2019-5-16 09:14
返回的是匹配字符串的起始地址,返回的不是字符串,明白了么

我明白返回起始地址,但是后面的地址呢,会不会也一起返回?
天道酬勤
回复

使用道具 举报

49

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5246
金钱
5246
注册时间
2012-8-25
在线时间
1024 小时
发表于 2019-5-16 13:09:55 | 显示全部楼层
紫气东升 发表于 2019-5-16 09:24
我明白返回起始地址,但是后面的地址呢,会不会也一起返回?

对不起我实在忍不住笑
回复

使用道具 举报

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
839
金钱
839
注册时间
2016-8-23
在线时间
116 小时
 楼主| 发表于 2019-5-16 14:09:21 | 显示全部楼层
xsx127 发表于 2019-5-16 09:57
这是一段连续地址,就像一个队伍,给你队伍头的位置,后面的自然就有了

嗯,我先用strstr()获取起始地址,再用strlen()获取前面我需要字符串地址并把它转移保存到另一个数组XXX里。剩下的就不管了。这样数组XXX里的数据就是我需要读取的数据了
天道酬勤
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 14:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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