OpenEdv-开源电子网

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

如何一边指纹识别一边做别的事情,不用实时系统的情况下

[复制链接]

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
发表于 2019-11-7 09:41:55 | 显示全部楼层 |阅读模式
1金钱
现在公司安排了个工作要优化指纹模块的代码,使它能一边做指纹识别又不会卡在这个步骤里面,然后还能进行别的操作。例如:
while(1)
{
   指纹注册();  //注册指纹就连续放下松开手指四次的,要是直接这样调用函数,它就要等你连续做完4次操作后才可以的,但是公司现在就想不让它一直在函数里面,就是说在指纹注册的过程中LED灯依旧可以闪烁。
   LED闪烁();
   指纹识别(); //指纹识别也是一样的,要是手指一放上去调用了函数,然后手指立马拿开,它就会卡在函数里面,等到超时才会退出,现在公司就想在上述的情况下也能继续执行别的函数,不会一直在注册或识别函数里面。
}
公司也不让将LED闪烁()写在中断中,本人一开始是想写个定时器轮询这种形式的,就是每隔一段时间就跑下一个任务这样,但是注册跟识别里面有挺多的延时函数的。

然后公司还给了个模板我,是用switch函数来写的,但是我并不太懂如何解析数据包,所以并不能用上。
有没有大神能帮忙给个方案,我现在刚出来实习,现在这个任务快卡了我3、4天了

Desktop.rar

12.72 KB, 下载次数: 10

公司给的模板

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

使用道具 举报

2

主题

582

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2690
金钱
2690
注册时间
2014-5-23
在线时间
188 小时
发表于 2019-11-7 09:59:36 | 显示全部楼层
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 10:05:18 | 显示全部楼层

老哥,能否详细点,这个状态机是啥?我百度了看看状态机按键,是不是就是说每隔一段时间重新进入这条函数这样的?
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 11:51:30 | 显示全部楼层
自顶!!
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 14:14:12 | 显示全部楼层
救救孩子吧!
回复

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2018-5-2
在线时间
20 小时
发表于 2019-11-7 17:29:01 | 显示全部楼层
其实很简单的。。比如两个任务,一个A,一个B,while(1)里面循环,搞一个定时器,每隔一定时间,切换一次,去检测A或者B,看看需不需要运行,需要就去运行,不需要就退出,判断另一个是否需要运行,,这样两个任务那个需要运行就运行了。。。。。。。。。顺便问下楼主还是个学生吗
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 17:44:56 | 显示全部楼层
紫川宁520 发表于 2019-11-7 17:29
其实很简单的。。比如两个任务,一个A,一个B,while(1)里面循环,搞一个定时器,每隔一定时间,切换一次 ...

这个其实我也想过也做过了,就是将指纹注册里面分成好几个小任务那样,然后要是运行到这个任务结果成功了就将他的标志位改了下,接着下次再调这个函数的话就不需要重新进入这个小任务了,但是这样写结果是有点问题的,不知道是不是由于程序有比较多的while循环导致。。
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 17:45:22 | 显示全部楼层
紫川宁520 发表于 2019-11-7 17:29
其实很简单的。。比如两个任务,一个A,一个B,while(1)里面循环,搞一个定时器,每隔一定时间,切换一次 ...

也不算是学生了,今年大四,现在出来实习了
回复

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2018-5-2
在线时间
20 小时
发表于 2019-11-7 18:36:04 | 显示全部楼层
冯子文 发表于 2019-11-7 17:45
也不算是学生了,今年大四,现在出来实习了

嘿嘿,我也是一个大四狗了。。。我说的意思可能不太准确,,你的指纹识别哪里应该多写一个函数,这个函数用来判断指纹识别是不是在工作,需不需要运行,需要就进入,不需要就切换
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 21:16:23 | 显示全部楼层
紫川宁520 发表于 2019-11-7 18:36
嘿嘿,我也是一个大四狗了。。。我说的意思可能不太准确,,你的指纹识别哪里应该多写一个函数,这个函数 ...

是指纹识别里面又分了好几个小步骤才能识别的,但有时候就是会卡在那些步骤其中,必须等到超时或者识别成功、失败才能退出指纹识别这个函数。
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2019-11-8 08:42:55 | 显示全部楼层
状态机啊,单片机终极编程模式。
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-8 14:26:43 | 显示全部楼层
candylife9 发表于 2019-11-8 08:42
状态机啊,单片机终极编程模式。

指纹识别里面有死循环啊  要判断串口接收到某个数据才能退出循环。。。就这里我不会操作
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2019-11-8 17:52:20 | 显示全部楼层
冯子文 发表于 2019-11-8 14:26
指纹识别里面有死循环啊  要判断串口接收到某个数据才能退出循环。。。就这里我不会操作

状态机就是解决死循环的。不要while等,用状态去转换。
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-9 22:33:40 | 显示全部楼层
candylife9 发表于 2019-11-8 17:52
状态机就是解决死循环的。不要while等,用状态去转换。

可以我不知道什么时候该切换状态,就指纹模块传回来的数据包我不会解析判断
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 21:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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