OpenEdv-开源电子网

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

[求助]成功发送命令后反馈回来的命令包含部分乱码,程序怎么处理

[复制链接]

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2017-6-2
在线时间
18 小时
发表于 2018-4-11 17:14:56 | 显示全部楼层 |阅读模式
5金钱
我做的是半双工通信,接收端成功发送命令并在接收端成功显示后,和发送端串口通信的模块会反馈发送成功的命令“+DMOMES:0”显示在发送端的OLED上,但是+DMOMES:0之前还有一段乱码,我想只保留+DMOMES:0,程序要怎么处理?
下图是硬件连接
1.png

我用调试助手看的结果
2.jpg
想只保留黄色部分显示在OLED上,请问程序如何处理,思路简单讲下,谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2018-4-4
在线时间
17 小时
发表于 2018-4-11 18:04:02 | 显示全部楼层
回复

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2018-4-4
在线时间
17 小时
发表于 2018-4-11 18:09:22 | 显示全部楼层
const unsigned char ValidStrings[]={"+DMOMES:0"};

void ReceiveHandle(unsigned char RecChar)
{
    static unsigned char Step=0;
   
    if (RecChar == ValidStrings[Step])
    {
        Step++;
        if (Step == sizeof(ValidStrings))  //接收完成显示
        {
            Step=0;
            //接收完成显示
        }
    }
    else
    {
        Step=0;
    }
}
回复

使用道具 举报

7

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2017-7-18
在线时间
257 小时
发表于 2018-4-11 18:12:54 | 显示全部楼层
接收完成之后在处理这段数据,先用16进制显示一下,看一下你需要的字符在哪个位置,看图片可能在倒数几个位置,如果每次传输的数据中都是这几个字符在最后的,那么直接将接收的缓存区中指定的位置的字符取出来就好了,如果每次数据的格式位置有变化,那就接收完成之后从头开始查找。
回复

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2017-6-2
在线时间
18 小时
 楼主| 发表于 2018-4-11 22:00:10 | 显示全部楼层
周易八索连山 发表于 2018-4-11 18:12
接收完成之后在处理这段数据,先用16进制显示一下,看一下你需要的字符在哪个位置,看图片可能在倒数几个位 ...

你好!请问这段程序是写在中断里面还是外面
回复

使用道具 举报

7

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2017-7-18
在线时间
257 小时
发表于 2018-4-12 10:01:54 | 显示全部楼层
explore103 发表于 2018-4-11 22:00
你好!请问这段程序是写在中断里面还是外面

接收完成之后在进行处理当然是中断外面了,如果有通信协议的话就根据通信协议来判断这一帧是否接收完成,接收完成在处理数据
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 17:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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