[STM8]

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

[复制链接]
1272|9
手机看帖
扫描二维码
随时随地手机跟帖
紫气东升|  楼主 | 2019-5-15 18:34 | 显示全部楼层 |阅读模式
前几天搞了好久串口发送接收字符串的程序代码,终于搞出来了。还没高兴多久,新的问题又来了。我使用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
}
然后我只需要读取其中的某一条指令来进行判断,这样我就可以进行下一步操作。

使用特权

评论回复
Diyer123| | 2019-5-15 19:14 | 显示全部楼层
strstr当然没问题。
但最好还是用状态机解析:收到字符都传递给状态机,状态机里根据帧头、位段解析得到你所需的数据。

使用特权

评论回复
评论
紫气东升 2019-5-16 09:30 回复TA
状态机是什么? 
评分
参与人数 1威望 +1 收起 理由
紫气东升 + 1 赞一个!
antusheng| | 2019-5-15 21:55 | 显示全部楼层
这个标准库的内容肯定可以

使用特权

评论回复
紫气东升|  楼主 | 2019-5-16 14:28 | 显示全部楼层
用strstr()可以判断出数组里有没有我需要的读取的指令,如果有可以用strlen()算出长度,然后再根据这个长度提取出来就OK了。
话说这个论坛是怎么结贴的??问题解决了想把帖子结了

使用特权

评论回复
xyz549040622| | 2019-5-16 18:09 | 显示全部楼层
同意楼上的,用状态机+中断解析即可,我不习惯用标准c库的函数,还是自己写方便。

使用特权

评论回复
评论
紫气东升 2019-5-17 18:34 回复TA
没用过状态机,能不能发个例程给参考下? 
晓伍| | 2019-6-13 12:12 | 显示全部楼层
这是at指令代码啊

使用特权

评论回复
八层楼| | 2019-6-13 12:42 | 显示全部楼层
这是发送的什么呀

使用特权

评论回复
guanjiaer| | 2019-6-13 12:47 | 显示全部楼层
楼主的经验很好啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

97

帖子

0

粉丝