OpenEdv-开源电子网

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

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

[复制链接]

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

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

Desktop.rar

12.72 KB, 下载次数: 12

公司给得的模板

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

使用道具 举报

4

主题

231

帖子

0

精华

高级会员

Rank: 4

积分
755
金钱
755
注册时间
2018-12-7
在线时间
131 小时
发表于 2019-11-7 09:53:03 | 显示全部楼层
帮顶,为啥不能用rtos啊?
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 09:55:57 | 显示全部楼层
chenchen1 发表于 2019-11-7 09:53
帮顶,为啥不能用rtos啊?

我也不知道啊  说的是不用操作系统,可能是因为以前也没用吧
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-11-7 14:48:07 | 显示全部楼层
关键问题就是你注册函数里面的延时,没有延时都好办 指纹注册拆分成几个状态 用状态机调度试试
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 14:53:20 | 显示全部楼层
nashui_sx 发表于 2019-11-7 14:48
关键问题就是你注册函数里面的延时,没有延时都好办 指纹注册拆分成几个状态 用状态机调度试试

就是里面都带延时的,然后还有死循环的
回复

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2016-8-15
在线时间
413 小时
发表于 2019-11-7 15:00:10 | 显示全部楼层
状态机编程。具体可看我以前的发帖,有一个模板供参考的
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-11-7 15:32:39 | 显示全部楼层
拆分任务,还有延时函数干嘛用的,是不是一定非要用?
一分耕耘一分收获。
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 15:39:08 | 显示全部楼层
流年丶 发表于 2019-11-7 15:00
状态机编程。具体可看我以前的发帖,有一个模板供参考的

老哥,我看你的那个模板看起来像是系统那样的?
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 15:40:43 | 显示全部楼层
yklstudent 发表于 2019-11-7 15:32
拆分任务,还有延时函数干嘛用的,是不是一定非要用?

仔细看了下延时函数其实不是必须的,就是给我自己看大概走到哪一步灯闪多久那样的,但是问题是步骤里面有挺多的while死循环,必须要接收到串口某个数据才可以退出,我不知道应该怎么样处理那些死循环
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-11-7 17:09:12 | 显示全部楼层
冯子文 发表于 2019-11-7 15:40
仔细看了下延时函数其实不是必须的,就是给我自己看大概走到哪一步灯闪多久那样的,但是问题是步骤里面有 ...

void Comm_Task(void)
{
static char 状态 = 状态1;

switch(状态)
{
  case 状态1:
    执行任务1;
    状态 = 状态2;
    break;
  case 状态2:
    执行任务2;
    状态 = 状态3;
    break;
  case 状态3:
    //执行任务3;
    if(串口接收数据?)
    {
      if(接收数据内容==指定数据内容)
      {
        状态 = 状态4;
      }
    }
    break;
  case 状态4:
    执行任务4;
    状态 = 任务1;
    break;
  default:
    break;
}
}
这个你看看是否可行
一分耕耘一分收获。
回复

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2016-8-15
在线时间
413 小时
发表于 2019-11-7 17:13:20 | 显示全部楼层
冯子文 发表于 2019-11-7 15:39
老哥,我看你的那个模板看起来像是系统那样的?

程序框架看起来像系统,其实不是,不涉及到任务抢占的。你也可以直接用你本来的程序框架。重点是看LED,KEY模块的编写,参考思路
我的简书:https://www.jianshu.com/u/3e9efbf4a8c2
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 17:20:10 | 显示全部楼层
yklstudent 发表于 2019-11-7 17:09
void Comm_Task(void)
{
static char 状态 = 状态1;

这样写就挺像我附件模板的那种方法,就是将指纹注册拆分为多个步骤,然后使用switch切换步骤,但是这样我主要是不会怎么将指纹模块传回来的应答包进行解析,他给我的那个模块手册也不全的。。。
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-7 17:20:31 | 显示全部楼层
流年丶 发表于 2019-11-7 17:13
程序框架看起来像系统,其实不是,不涉及到任务抢占的。你也可以直接用你本来的程序框架。重点是看LED,K ...

好的  谢谢老哥!我先看看
回复

使用道具 举报

18

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2018-3-9
在线时间
44 小时
发表于 2019-11-8 16:41:13 | 显示全部楼层
这要看指纹识别要多少时间,如果少的话就把它当类似按键扫描的方法来用,开一个定时器,定时调用这个指纹函数来检测识别,如果识别很久的话就可以分成多步来,把中间不必要的延时去掉。
回复

使用道具 举报

34

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
474
金钱
474
注册时间
2019-7-3
在线时间
113 小时
 楼主| 发表于 2019-11-8 17:25:22 | 显示全部楼层
Angle145 发表于 2019-11-8 16:41
这要看指纹识别要多少时间,如果少的话就把它当类似按键扫描的方法来用,开一个定时器,定时调用这个指纹函 ...

主要是又死循环,它必须判断分析串口的某个数据才能退出循环,就串口分析那里是有很多数据进来了,我不知道应该怎么分析
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 04:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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