1 项目描述
本次项目是基于Linux环境的交叉编译arm-linux-gcc,在GEC6818arm开发板上运行,通过摄像头监控,RFID模块识别卡号,判断该卡是否为月卡or临时卡,车辆入场or出场,记录或显示收费金额与车辆信息。运用SQLite数据库,创建表格存取月卡用户信息与出入车辆相关信息。增加语音播报功能,使项目更加人性化…
2 项目需求
(1)创建一个数据库, 内置你需要的所有信息, 如车牌信息、RFID卡信息、卡类、进场时间、车辆照片名等
(2) 在默认状态下,视频监控是处于打开状态的,并循环录制,1分钟视频,保存到本地。
(3)当检测到有RFID卡,关闭视频流,判断当前数据库中是否有该卡的入场信息:
如果已有该卡的入场信息,表示现在是出场;则直接计算出当前时间和入场时间差值,在屏幕上显示该车辆照片,显示车辆信息和应收费金额,停车总时间
如果没有该卡的入场信息,则在数据库中增加该车辆信息,并记录当前时间且拍照。
在检测到RFID卡3秒后 (alarm() SIGALRM信号), 系统会恢复打开视频流
(4)当车辆刷卡进场是,语音提示卡号,并说明卡的类别(临时卡,或包月卡),出场提示:费用与月卡剩余天数
(5)管理功能,负责把卡的类别进行修改,与数据库中的数据进行修改。
(6) 自行扩展: 添加一些自主功能。
(7)强测试代码,把BUG 去掉!!!!
3 搭建环境
开发环境:
Linux
开发工具:
arm-linux-gcc、Notepad++
其他工具:
SQLite数据库、MIFARE522、ffmpeg库、V4l2编程、ALSA库、mplayer开源多媒体库、jpeglib库、font库、讯飞语音
编程实现:
通过开源代码编译器notepad++编写代码,利用arm-linux-gcc交叉编译,再通过LINUX平台的SSH服务器将编译生成的程序文件传输到开发板中,最后执行。
SQLite数据库
SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如
BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。事实上,尽管SQLite拥有诸多关系型数据库的基本特征,然而由于应用场景的不同,它们之间并没有更多的可比性。
部分代码指令:
往表格中插入数据
语法格式:
INSERT INTO [数据库名称].表名 VALUES(记录内容)
INSERT INTO [数据库名称].表名(字段列表) VALUES(对应字段内容)
例子:往一个表格中插入数据 (一次插入)
insert into my_table values("2019661130");
//指定字段的顺序
insert into my_table2(age,id) values(123456,987654);
查询
查询表格中的数据
select * from table;
查找数据的多种方式:
按照字段去查找数据:
select 字段名 from 表明; //只找出该字段的内容
根据条件去找数据:
select 字段名 from 表明 where 条件; //安装条件去找该字段中的数据
select * from my_table3 where id=123; //找到ID 为 123的所有数据。
多条件查询:
select 字段名 from 表明 where 条件1 or 条件2; //或
select * from my_table3 where id=123 or id=456; //找出表格中 id 为 123 或 456 的数据
修改
更新数据库中的数据:
UPDATE [数据库名称].表名 SET 字段 1=字段 1 值,字段 2=字段 2 值… where 条件表达式
例子:更新ID 信息
update my_table3 set id=10086 where id=123;
删除
删除整个表格;
DROP TABLE 表名;
DROP TABLE tbl_student_info
删除表格中的数据:
DELETE FROM [数据库名称].表名 where 条件表达式
例子:删除表格中的数据
delete from my_table3 where id = 123;
MIFARE522
RFID模块:本模块以命令——响应的方式工作,在系统中模块是处于从属地位,不会主动发出数据(自动检测卡片除外)。通常主机首先发出命令,然后等待模块响应。
实体图如下:
ffmpeg库:
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。
V4l2编程:
V4L2(Video For Linux Two) 是内核提供给应用程序访问音、视频驱动的统一接口。V4L2 的相关定义包含在头文件<linux/videodev2.h> 中.
本次项目中利用官方V4L2接口对摄像头进行解码,每一帧生成JPG图片,摄像头实体图如下:

其他工具和库:
参考此篇(3 搭建环境):ALSA库、mplayer开源多媒体库、jpeglib库、font库、讯飞语音
4 技术描述
基本:
- C语言
- 文件IO
- 系统编程
- Mplayer指令
- 触摸屏
- font库的使用
- jpeglib库的使用
- 链表
- JOSN数据处理
- 语音识别
- ALSA库
核心
- SQLite数据库
- v4l2编程(摄像头信息采集)
- ffmpeg库(视频合成)
- RFID
5 概要设计
整体项目框架设计图如下:

6 主界面
主要实现:

最低0.47元/天 解锁文章

900

被折叠的 条评论
为什么被折叠?



