OpenEdv-开源电子网

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

串口数据接收解析,不接收数据,直到解析完毕

[复制链接]

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
发表于 2022-3-31 14:40:44 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 Amiao 于 2022-3-31 14:52 编辑

   我用uart串口接收数据,接收后把这一个数组的数据解析。怎么做才能让数据正在解析时不再接收数据呢

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

使用道具 举报

1

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1023
金钱
1023
注册时间
2019-9-21
在线时间
269 小时
发表于 2022-3-31 15:38:25 | 显示全部楼层
回复

使用道具 举报

11

主题

2131

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4734
金钱
4734
注册时间
2015-1-10
在线时间
591 小时
发表于 2022-3-31 15:39:18 | 显示全部楼层
把串口接收中断关了就行
回复

使用道具 举报

2

主题

582

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2690
金钱
2690
注册时间
2014-5-23
在线时间
188 小时
发表于 2022-3-31 15:43:15 | 显示全部楼层
不丢数据的常用做法,是开一个接收buf
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-3-31 15:43:20 | 显示全部楼层
阿侑kevin 发表于 2022-3-31 15:39
把串口接收中断关了就行

哎?直接了断
慎独
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-3-31 15:44:44 | 显示全部楼层
gjs13030247996 发表于 2022-3-31 15:38
参考一下这个链接:https://q.cnblogs.com/q/67391/

虽然但是,感谢
慎独
回复

使用道具 举报

11

主题

2131

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4734
金钱
4734
注册时间
2015-1-10
在线时间
591 小时
发表于 2022-3-31 15:44:56 | 显示全部楼层

不然你就加个串口缓存,接收一帧后把数据复制出来,这样你可以一边解析一边接收了
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-3-31 15:49:18 | 显示全部楼层
阿侑kevin 发表于 2022-3-31 15:44
不然你就加个串口缓存,接收一帧后把数据复制出来,这样你可以一边解析一边接收了

现在就是这么做的,但我领导觉得处理方法不大行
慎独
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-3-31 15:49:49 | 显示全部楼层
awsawzj 发表于 2022-3-31 15:43
不丢数据的常用做法,是开一个接收buf

就是这么处理的
慎独
回复

使用道具 举报

11

主题

2131

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4734
金钱
4734
注册时间
2015-1-10
在线时间
591 小时
发表于 2022-3-31 15:51:59 | 显示全部楼层
Amiao 发表于 2022-3-31 15:49
现在就是这么做的,但我领导觉得处理方法不大行

你领导想怎么搞
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-3-31 15:52:43 | 显示全部楼层

猜不透,不敢问。所以想咨询下各位有没有好办法
慎独
回复

使用道具 举报

11

主题

2131

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4734
金钱
4734
注册时间
2015-1-10
在线时间
591 小时
发表于 2022-3-31 15:54:35 | 显示全部楼层
Amiao 发表于 2022-3-31 15:52
猜不透,不敢问。所以想咨询下各位有没有好办法

这是最优的方法,容我说一句:你领导不太行
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-3-31 15:55:34 | 显示全部楼层
阿侑kevin 发表于 2022-3-31 15:54
这是最优的方法,容我说一句:你领导不太行

哈哈哈哈哈  我可不敢说
慎独
回复

使用道具 举报

11

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2021-6-17
在线时间
206 小时
发表于 2022-3-31 17:11:30 | 显示全部楼层
把数据解析放在中断里,读一个数据解析一个数据
回复

使用道具 举报

1

主题

12

帖子

0

精华

高级会员

Rank: 4

积分
934
金钱
934
注册时间
2020-4-16
在线时间
79 小时
发表于 2022-3-31 17:35:07 | 显示全部楼层
应该是由于数据解析函数运行过程中,新的UART接收中断改变了原有数据buffer导致的麻烦;如果楼主不care丢数据,建议在进入函数解析阶段关闭中断,解析完后再开启中断,为了避免麻烦不建议在中断里面执行解析函数哦
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-4-1 08:30:29 | 显示全部楼层
哎站着别跑 发表于 2022-3-31 17:35
应该是由于数据解析函数运行过程中,新的UART接收中断改变了原有数据buffer导致的麻烦;如果楼主不care丢数 ...

嗯嗯。没有在中断里解析数据
慎独
回复

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6719
金钱
6719
注册时间
2017-4-12
在线时间
1257 小时
发表于 2022-4-1 08:55:44 | 显示全部楼层
搞个缓存队列,用生产者消费者模式,做好数据保护就行了,直接简单明了
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-4-1 10:49:39 | 显示全部楼层
245925587 发表于 2022-4-1 08:55
搞个缓存队列,用生产者消费者模式,做好数据保护就行了,直接简单明了

新手看不懂啊
慎独
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2022-4-1 12:13:23 | 显示全部楼层
一般都是开个接收buf去缓存接收的数据,其他的暂时没想到别的方法
回复

使用道具 举报

28

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2021-2-4
在线时间
146 小时
发表于 2022-4-1 13:01:59 | 显示全部楼层
Amiao 发表于 2022-3-31 15:49
现在就是这么做的,但我领导觉得处理方法不大行

那就改一下变量名
回复

使用道具 举报

6

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2019-2-12
在线时间
28 小时
发表于 2022-4-6 17:38:09 | 显示全部楼层
搞一个循环缓冲区,中断接收的数据往缓冲区里面怼,主循环里面取出数据解析
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-4-7 10:46:30 | 显示全部楼层
turelon 发表于 2022-4-6 17:38
搞一个循环缓冲区,中断接收的数据往缓冲区里面怼,主循环里面取出数据解析

就是这么做的呀
慎独
回复

使用道具 举报

6

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2019-2-12
在线时间
28 小时
发表于 2022-4-7 10:59:17 | 显示全部楼层
Amiao 发表于 2022-4-7 10:46
就是这么做的呀

那没啥问题啊,如果解析的时候不接收数据很可能会丢数据,你领导怎么想的呀?
回复

使用道具 举报

9

主题

56

帖子

0

精华

高级会员

Rank: 4

积分
640
金钱
640
注册时间
2018-8-9
在线时间
150 小时
发表于 2022-4-12 13:23:38 | 显示全部楼层
为什么我公司请来的老外专家面试的时候首先问,如果我来上班,我的直属领导是搞技术的还是搞管理的?一般如果是管理的,老外一般直接说再见,他认为干管理的带领搞技术的是乱指挥
回复

使用道具 举报

32

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2021-3-21
在线时间
172 小时
 楼主| 发表于 2022-4-12 14:01:09 | 显示全部楼层
maidilong 发表于 2022-4-12 13:23
为什么我公司请来的老外专家面试的时候首先问,如果我来上班,我的直属领导是搞技术的还是搞管理的?一般如 ...

我领导是搞技术的
慎独
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 14:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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