当前位置: 首页 > news >正文

海陵HLK-TX510人脸识别模块 stm32使用

一.主函数

#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "lcd.h"
#include "dht11.h"
#include "IOput.h"
#include "usart.h"
//#include "adc.h"                        // ADC初始化头文件
#include "TX510.h"u8 show_flag,show1_flag,max_wd=40,dec_wd=10,max_sd=70,dec_sd=20,yw=0,maxyw=40;
long times_cont=0;                        // 定义计数变量//21 为检测到人脸
//28 未注册成员
//26 2D
extern u8 result,userID; 
extern uint8_t deletesingleList[];
int main (void)
{delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);DHT11_Init();OLED_Init();delay_ms(1);OLED_Clear();output_init();input_init();Usart1_Init(115200);                          // 初始化USART1并设置波特率为9600delay_ms(100);while(1){      //删除所有deleteALLuser();//删除单个用户DeleteIndividual(0x0,0x0);//解析数据getUserregister();OLED_ShowNum(0,0,result,2,16);OLED_ShowNum(0,2,userID,2,16);OLED_ShowNum(0,4,deletesingleList[9],2,16);			}	}

二.TX510.H 

#ifndef __TX510_H
#define __TX510_H	
#include "sys.h"//解析返回数据包数据
void getUserregister();// 发送数据包 需要额为指令可通过此函数发送数据包
void Serial_SendArray(uint8_t *Array, uint16_t Length);//删除全部数据
void deleteALLuser();//删除单个数据
//删除单个 参数说明 userDeleteId2 16进制第1位 userDeleteId1  16进制第2位
// DeleteIndividual(0,1) 删除id为1的用户
void DeleteIndividual(uint8_t userDeleteId1,uint8_t userDeleteId2);#endif 

三.TX510.C

#include "usart.h"
#include "TX510.h"//串口中断
uint8_t RxData; //数据转存
u16 serial_RxPack[20]={0}; //接收数据的数组
u16 Serial_RXFlag=0; //接收完成标志位
u16 faceIndex=0;
void USART1_IRQHandler(void)
{if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET){//接收串口发来的数据RxData=USART_ReceiveData(USART1);//判断是否为包头if(RxData==0xEF){//判断校验位//清空标志位Serial_RXFlag=0;					 }//存储数据serial_RxPack[Serial_RXFlag]=RxData;Serial_RXFlag++;}
}/**********************************************
函数说明:
数据包返回解析函数
result 0成功 0X1 无人脸 0x3人脸姿态角度过大 0x6 2d活体未通过 0x7 三d活体 未通过 0x08 匹配为通过 0x09 重复注册 0x0a保存id失败
userID 用户id
**********************************************/
u8 result=99;   
u8 userID=99; 
void getUserregister(){//判断包头和id结果位if(serial_RxPack[0]==0xEF&&serial_RxPack[1]==0xAA){//提示位result=serial_RxPack[8];//判读是否注册成功if(serial_RxPack[8]==0x00){userID=serial_RxPack[9]*10+serial_RxPack[10];}}
};//单字节发送
void Serial_SendByte(uint8_t Byte)
{USART_SendData(USART1,Byte);/*  USARTx->DR = (Data & (uint16_t)0x01FF);//数据最终通向TDR(发送数据寄存器) TDR再传递给移位寄存器 最终一位一位把数据移出Tx引脚 完成数据发送*/while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);	//等待发送完成
};
//多字节发送 
void Serial_SendArray(uint8_t *Array, uint16_t Length)
{uint16_t i;for(i=0;i<Length;i++){Serial_SendByte(Array[i]);		//依次调用Serial_SendByte发送每个字节数据}
};//删除单个 参数说明 userDeleteId1 16进制第1位 userDeleteId2  16进制第2位
uint8_t deletesingleList[]={0xEF,0xAA,0x20,0x00,0x00,0x00,0x02,0x00,0x00,0x22};
//EF AA 20 00 00 00 02 00 01 23
void DeleteIndividual(uint8_t userDeleteId1,uint8_t userDeleteId2){int i=0; int check=0;	deletesingleList[7]=userDeleteId1;deletesingleList[8]=userDeleteId2;//校验位修改for(i=2;i<=8;i++){check+=deletesingleList[i];}deletesingleList[9]=check;Serial_SendArray(deletesingleList,10);
};//删除全部;
uint8_t deleteall[]={0xEF,0xAA,0x21,0x00,0x00,0x00,0x00,0x21};
void deleteALLuser(){Serial_SendArray(deleteall,8);
};

userID为对应的id

result  为对应的提示位

  

此逻辑只封装了删除和接受返回数据

其他基本指令只需数组中字节数据即可

直接调用 Serial_SendArray()函数;

其中参数一为数据包 参数二为长度

如:
uint8_t deleteall[]={0xEF,0xAA,0x21,0x00,0x00,0x00,0x00,0x21};
void deleteALLuser(){
     Serial_SendArray(deleteall,8);
};

 其他指令可看手册

 

http://www.lryc.cn/news/517403.html

相关文章:

  • 安卓14无法安装应用解决历程
  • 【Linux】传输层协议UDP
  • 玩机搞机基本常识-------列举安卓机型一些不常用的adb联机命令
  • unity学习14:unity里的C#脚本的几个基本生命周期方法, 脚本次序order等
  • pytorch 比较两个张量的是否相等的函数介绍
  • MySQL Windows 11 的 MySQL 配置文件 (my.ini) 路径查找指南
  • 06-RabbitMQ基础
  • 关于markdown实现页面跳转(调查测试:csdn(博客编写效果、发布效果)、typroa中md转pdf的使用情况)
  • el-dialog 组件 在<style lang=“scss“ scoped>标签
  • 《深度学习梯度消失问题:原因与解决之道》
  • 中高级运维工程师运维面试题(十一)之 Docker
  • Gitee图形界面上传(详细步骤)
  • WebSocket 实现指南
  • TRELLIS - 生成 3D 作品的开源模型
  • uni-app图文列表到详情页面切换
  • ros2-3.4话题通信最佳实践
  • Vmware安装centos
  • 51单片机——按键实验
  • QT c++ 自定义按钮类 加载图片 美化按钮
  • Django:构建高效Web应用的强大框架
  • 代码随想录算法【Day11】
  • [SeaTunnel] [MySql CDC] Generate Splits for table db.table error
  • Spring Boot | 基于MinIO实现文件上传和下载
  • 企业手机号搜索API接口
  • VirtualBox Main API 学习笔记
  • [Linux]Mysql9.0.1服务端脱机安装配置教程(redhat)
  • uniapp--HBuilder开发
  • 计算机毕业设计学习项目-P10080 基于springboot+vue的社团管理系统的设计与实现
  • with as提高sql的执行效率
  • 【银河麒麟高级服务器操作系统实例】tcp半链接数溢出分析及处理全过程