这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » Linux环境下以模拟方式快速实现出入管理功能测试

共2条 1/1 1 跳转至

Linux环境下以模拟方式快速实现出入管理功能测试

助工
2026-08-31 12:14:10     打赏

无论任何设计,进行功能测试的工作都是必不可少的,且是非常耗费时间和精力的。

这里介绍一种在Linux环境下,利用模拟方式进行出入管理功能的测试方法。

其思路是将模拟的出入行为以数据的方式放置到文件中,任何借助随机函数来模拟出入时间的变化,最终经程序处理来产生出入管理的登记报表。

在这个过程中,涉及以下问题的解决。

 

数据结构、处理流程、处理方法及程序、测试效果等

 

1. 定位读取数据

为了减轻反复测试的消耗,模拟出入行为的数据被存放在文件中,这样只要修改数据,就变换了出入的状况。

该文件的数据格式为:

姓名1

状态1


姓名2

状态2

...

 

其中:状态=0,表示进入;状态=1,表示离开。

由于文件是按顺序记录数据的,要读取其内容就涉及到定位读取的问题。

为此,可使用以下的方法来定位读取数据。

设待读取的文件是mn.txt,指定行为i,则读取第i行的语句为:

head -n $i mn.txt | tail -n 1

2. 自动建立临时数组

为了便于对数据进行处理,可将文件中的数据转存到数组中。

将读取文件的内容转存到下标为i的数组ls中,其语句为:

ls[$i]=$(head -n $i mn.txt | tail -n 1)

若将文件的内容全部按行的顺序转存到数组ls中,其程序为:

image.png

其中;语句let n=$(sed -n $= mn.txt)的作用是获得文件的总行数,用它可判别读取操作何时结束。

3. 随机数的使用

由于出入的行为是有时间特征的,为模拟这种时间变化的随机性,可通过随机函数来形成。

产生时间随机变化的程序为:

image.png

其中:变量sj存放是随机数,变量ys则存放是限定了范围的随机数,语句sleep  $ys这是通过延时来产生时间变化。 

4.进出时间登记

利用状态标志,就可进行出入的判别并标记出其行为的时间点,进行时间登记的程序见图1所示。

image.png

1 测试程序 

经程序的执行,其测试结果如图2所示,说明程序设计合理,能有效地解决耗费时间的测试问题。

image.png

2 测试效果

5.登记报表生成

有了以上的模拟测试结果,实现报表生成的思路是:当状态为0时,用当前时间来改写状态值;当状态为不为0时,则用存放的时间为进入时间,以当前的时间为退出时间。

对于模拟数据的使用,可分为两部分。即前部的数据是进入的信息,后部的数据则是退出的信息,因为由进入到退出有较大的时间间隔,所以其数据必定有明显分界线。 

此外,还操作的一个问题就是,当状态为非0值时,要从前部的数据中,按姓名去寻找对应的进入时间。为此,要在前部的数据进行轮询查找定位以提取数据。 

所生成的文件名称为djgl.txt,其记录的数据结构为:

姓名:   进入时间:   退出时间:   其它信息:

... 

生成登记报表的程序见图3所示,经程序运行,所生成的报表见图4所示。

image.png

image.png

3 报表生成程序

image.png

image.png

4 生成结果

6. 辅助功能的实现

在多数情况下,开发板是具有PWM调节功能,利用它可控制舵机来实现门闸的开关。

但也存在PWM功能无法使用的情况,那该任何解决呢?

方法就是,使用延时函数自行构建一个可控制占空比名称生成函数。

对于常规的舵机来讲,其外观和基本特点见图5和图6所示。

image.png

5 舵机及引脚功能

image.png

6 舵机特点

为控制门闸的开关,其控制程序见图7所示。

image.png

7 门闸控制程序 

为便于测试,这里是用触摸按键来控制舵机的开合,每触摸一次按键,舵机就变化一次开合状态。

在程序中,调节使用的引脚是GPIO22,触摸按键使用的引脚是GPIO128

在进行门禁管理时,当识别到人员进出时,即可控制门闸的开关。 

除此之外,借助AI的识别结果,还可以语音的方式发出提示信息,如:进入时发出“你好,珍妮”,或在离开时,发出“再见!”语音内容。

image.png

8 语音提示程序




专家
2026-09-02 07:34:34     打赏
2楼

谢谢楼主分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]