找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3698|回复: 10
打印 上一主题 下一主题
收起左侧

怎么样在STM32串口通信里判断串口收到的是不是OK,有什么方法能实现吗

[复制链接]
跳转到指定楼层
楼主
ID:588556 发表于 2020-3-9 20:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问一下各位  怎么样在STM32串口通信里判断串口收到的是不是OK,有什么方法能实现吗

在网上只找到这个,试了好像没有用
while(1)
{
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
{
RxBuffer1[RecLen1++]=USART_ReceiveData(USART1);   
while(RecLen1==100);
}

for(i=0;i<100;i++)
{
if((RxBuffer1[ i]=='O')&&(RxBuffer1[i+1]=='K'))
{GPIO_ResetBits(GPIO_LED,DS1_PIN);
Delay(0x3FFFFF);}}}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2020-3-9 23:30 | 只看该作者
你这程序是接收100个字符,当接收到100个字符时才进行比较,判断100个字符中是否存在'OK'
for(i=0;i<100;i++)
{
if((RxBuffer1[ i]=='O')&&(RxBuffer1[i+1]=='K'))
这一句的意思是必须RxBuffer1数组中有一个'OK'才满足条件
回复

使用道具 举报

板凳
ID:246251 发表于 2020-3-10 09:54 | 只看该作者
收到数据后,可以通过strstr(const char *s1,const char *s2)函数找到“OK”字符串的位置,返回0,则说明接收到的数据中没有“OK”字符串
回复

使用道具 举报

地板
ID:496117 发表于 2020-3-10 11:05 | 只看该作者
你这里是需要收到100个字节才会跳出去的,可以按照自己的逻辑处理缓存长度
回复

使用道具 举报

5#
ID:588556 发表于 2020-3-10 12:22 | 只看该作者
csmyldl 发表于 2020-3-9 23:30
你这程序是接收100个字符,当接收到100个字符时才进行比较,判断100个字符中是否存在'OK'
for(i=0;i

那是不是如果我只要判断是否存在OK 只要把for的改成
for(i=0;i<2;i++)
这样然后等到接收到2个字符的时候进行判断是吗
回复

使用道具 举报

6#
ID:588556 发表于 2020-3-10 12:25 | 只看该作者
new_hand 发表于 2020-3-10 09:54
收到数据后,可以通过strstr(const char *s1,const char *s2)函数找到“OK”字符串的位置,返回0,则说明接 ...

好  谢谢你 我去试试看
回复

使用道具 举报

7#
ID:708637 发表于 2020-3-15 00:30 | 只看该作者
你好,判断是否是OK,问题解决了吗?怎么解决的?
回复

使用道具 举报

8#
ID:588556 发表于 2020-3-21 14:26 | 只看该作者
小炒肉111 发表于 2020-3-15 00:30
你好,判断是否是OK,问题解决了吗?怎么解决的?

还没有  换了一个方向..
回复

使用道具 举报

9#
ID:569113 发表于 2021-4-12 11:50 | 只看该作者
请问楼主你解决了吗?我也遇到了这个问题,不知道该怎么去判断。。。。
回复

使用道具 举报

10#
ID:883031 发表于 2021-4-12 13:51 | 只看该作者
字符串比较一下
回复

使用道具 举报

11#
ID:569113 发表于 2021-4-17 15:54 | 只看该作者
好吧我解决了,我用strstr函数比较出来了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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