STM32+二维码扫描模块(QR_Scaner)实现门禁系统
这里使用的是SMT32F103RCT6核心板
二维码扫描模块使用的是窜口通信,可以使用USB转TTL配合微信小程序(二维码生成器)生成二维码,模块RXD,TXD一定要跟TTL的RXD,TXD反接,使用窜口调休助手就可以观察二维码扫描模块的的效果
STM32搭配二模块扫描模块实现门禁
二维码启动C文件
#include <string.h>
#include "QR_Scaner.h"
#include "usart.h"
#include "systick.h"
uint8_t TmpBuf[1];
uint8_t QRScanerRxBuf[1024];
__IO uint32_t QR_Scaner_RxIdx = 0;
uint8_t complete_flag = 0;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART2)
{
if(TmpBuf[0] != 0x00)
QRScanerRxBuf[QR_Scaner_RxIdx++] = TmpBuf[0];
//HAL_UART_Transmit(&huart1, (uint8_t *)TmpBuf, 1, 0xffff);
if(QR_Scaner_RxIdx >= sizeof(QRScanerRxBuf))
{
memset(QRScanerRxBuf, 0x00, sizeof(QRScanerRxBuf));
QR_Scaner_RxIdx = 0;
printf("QRScanerRxBuf 已满\r\n");
}
HAL_UART_Receive_IT(&huart2, TmpBuf, 1);
}
}
char multip_scaner_cmd[] = "AT+SCAN=0\r\n"; //全速扫码
char single_scaner_cmd[] = "AT+SCAN=1\r\n"; //单次扫码
int scan_mode_set(uint8_t mode)
{
memset(QRScanerRxBuf, 0x00, sizeof(QRScanerRxBuf));
QR_Scaner_RxIdx = 0;
switch(mode)
{
case 0:
HAL_UART_Transmit(&huart2, (uint8_t *)multip_scaner_cmd, strlen(multip_scaner_cmd), 100);
break;
case 1:
HAL_UART_Transmit(&huart2, (uint8_t *)single_scaner_cmd, strlen(single_scaner_cmd), 100);
break;
default:
return -1;
}
delayms(20);
if(strstr((char *)QRScanerRxBuf, "[AT]OK\r\n"))
{
return 0;
}
else
{
return -1;
}
}
#define QR_SCANER_RESET_RETURN "OK! - [QBoard][A very outstanding Bar Code Scanner]\r\n"
#define PASS_WORD "1234567890" // 默认的门禁密码,修改成自己的密码,也就是二维码的内容。
void QR_Door_Control(void)
{
uint32_t tick_start = 0;
printf("---欢迎使用二维码门禁系统---\r\n");
memset(QRScanerRxBuf, 0x00, sizeof(QRScanerRxBuf));
QR_Scaner_RxIdx = 0;
// 启动串口接收
HAL_UART_Receive_IT(&huart2, TmpBuf, 1);
// 等待二维码扫描模块启动
tick_start = get_systicks();
while(1)
{
if(QR_Scaner_RxIdx==0)
{
printf("\r\n .二维码扫描模块已启动...\r\n");
break;
}
if(query_time(tick_start, 5000))
{
goto exit;
}
}
printf("\r\n .已进入扫码识别模式,请扫码开门--->\r\n");
memset(QRScanerRxBuf, 0x00, sizeof(QRScanerRxBuf));
QR_Scaner_RxIdx = 0;
while(1)
{
if(QR_Scaner_RxIdx==0)
{
/* 等待数据收完 */
delayms(100);
/* 对比收到的数据和密码 */
if(strcmp((char *)QRScanerRxBuf, PASS_WORD"\r\n") == 0)
{
//printf("密码是:%s", (char *)QRScanerRxBuf);
printf("\r\n .门禁密码正确 <---\r\n");
delayms(1000);
}
else
{
printf("\r\n .门禁密码错误!\r\n");
delayms(1000);
}
// 门已关闭,重新开始扫码开门
if(scan_mode_set(1) != 0)
{
printf("设置单次扫码模式失败2\r\n");
break;
}
memset(QRScanerRxBuf, 0x00, sizeof(QRScanerRxBuf));
QR_Scaner_RxIdx = 0;
}
}
exit:
printf("进入扫码识别模式失败,请检查硬件连接。\r\n");
printf("QRScanerRxBuf:%s", QRScanerRxBuf);
}
#ifndef __QR_SCANER_H__
#define __QR_SCANER_H__
void QR_Door_Control(void);
#endif
主函数
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
QR_Door_Control();
LED_Control();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
printf("rest\n");
while (1)
{
LED_R_ON;
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
STM32+二维码扫描模块(QR_Scaner)实现门禁系统相关推荐
- win10 vs2022 .net6 opencvsharp 4.5.5自己编译wecharts 微信二维码扫描模块。
文章主要介绍如何自己编译opencvsharp源码,因为需要.net 6 ,所以介绍vs2022 的编译. https://github.com/shimat/opencvsharp 首先在githu ...
- iOS原生实现二维码扫描
iOS原生实现二维码扫描 最近项目上需要开发扫描二维码进行签到的功能,主要用于开会签到的场景,所以为了避免作弊,我们再开发时只采用直接扫描的方式,并且要屏蔽从相册读取图片,此外还在二维码扫描成功签到时 ...
- html5调用设备摄像头,实现二维码扫描
html5调用设备摄像头,实现二维码扫描 最近在做一个签到系统,由于我直接使用了纯网页,因此调用摄像头进行扫码成了大问题.经过几番费力的百度终于找到解决方法. 主要用到MediaDevices.get ...
- 微光互联QT660二维码扫描android配置
微光互联QT660二维码扫描android配置 1.首先对android系统进行root adb root 2.然后对usb提升权限 adb shell chmod -R 777 /dev/bus/u ...
- GM65条形码二维码扫描识别模块与STM32学习
目录 模块介绍: 简介: 原理介绍: 工作流程: 技术参数: 修改配置: 代码介绍: 串口函数: 主函数: 模块介绍: 简介: GM65 条形码二维码扫描识别模块是一种基于激光扫描头的识别设备 原理介 ...
- Ionic—二维码扫描与关于模块的开发
一.二维码扫描功能布局开发 1.开发设计 功能需求:布局二维码扫描页面 二维码扫描在Ionic Native中为QS Scanner插件,安装如下 sudo ionic cordova plugin ...
- 基于MUI框架的HTML5+的二维码扫描实现
Barcode的一个实现案例 一.简介 Barcode模块管理条码扫描,提供常见的条码(二维码及一维码)的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入.通过plus.ba ...
- 二维码扫描开源库ZXing定制化【转】
转自:http://www.cnblogs.com/sickworm/p/4562081.html 最近在用ZXing这个开源库做二维码的扫描模块,开发过程的一些代码修改和裁剪的经验和大家分享一下. ...
- 基于MUI框架的使用HTML5+实现的二维码扫描功能
Barcode的一个实现案例 一.简介 Barco ...
- iOS二维码扫描/识别
一直以为二维码功能比较简单, 从来没有放在心上过, 由于公司项目需要这个功能, 也算是第一次真正去做二维码的东西. 从网上看别人的博客很多都是写的比较碎片, 没有一个能做的比较完整的, 今天 ...
最新文章
- wpf+xml实现的一个随机生成早晚餐的小demo
- 牧小熊:Adobe Illustrator 在科研作图中的应用!
- 高并发的核心技术 - 幂等的实现方案
- 软件疑难杂症解决办法汇总
- wcf ria中主从表绑定treeview
- Pidgin下使用Gtalk问题
- Python 利用pickle库查看pkl文件实例演示,pkl是什么类型的文件?怎么来打开它?
- 23_传智播客iOS视频教程_类的对象的创建
- python的*args与**kwargs
- oracle语法_PG数据库sql语法总结,与Oracle有什么不同?
- 结对作业_代码复审= =
- opera pms 数据库 MySQL_2020年最新版Opera PMS常用报表总结
- 如何在 Windows 10 上完全禁用 UAC
- krpano使用gyro2.js自定义陀螺仪
- 中国远程医疗行业发展前景预测和投资规划分析报告2022-2027年
- python 实现QQ邮箱发送邮件
- 用于视觉识别的深度卷积网络空间金字塔池化方法
- 计算机打字不盲打可以吗,能盲打了,为什么打字速度还不快?现在才40左右,怎样才能达到60以上呢?...
- 关于主从复制的超详细解析(全)
- 博客(blog.m1kh.com)
热门文章
- 我们上语文英语音乐计算机和美术英语,“制作课程表”教学设计.ppt
- celeste第二章_『第二章』 蔚蓝的剑
- js禁止苹果页面底部滚动_js禁止页面滚动
- 如何将flac文件转换为mp3文件?
- 【清华大学陈渝】 第十一章_死锁
- win10自带计算机应用恢复,win10重置电脑后怎么恢复应用_win10重置后恢复软件的方法...
- 基金投资入门 4:指数基金
- 华为无线2020春招一面二面主管面-3.25
- 亚马逊结算一览(C#项目)
- 用python画太阳花过程_有几个问题一直弄不出来求大神 python(python太阳花教程)