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

海陵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并设置波特率为9600
	delay_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.kler.cn/a/471879.html

相关文章:

  • 常见的开源网络操作系统
  • 如何很快将文件转换成另外一种编码格式?编码?按指定编码格式编译?如何检测文件编码格式?Java .class文件编码和JVM运行期内存编码?
  • 关于Mac中的shell
  • RP2K:一个面向细粒度图像的大规模零售商品数据集
  • 使用ML.NET进行对象检测
  • opencv摄像头标定程序实现
  • Go语言的语法
  • 会员制营销与门店业绩提升:以开源AI智能名片S2B2C商城小程序为例的深度剖析
  • 基于微信小程序的考研资料分享系统的设计与实现springboot+论文源码调试讲解
  • 【阅读】认知觉醒
  • Mermaid 使用教程之流程图 - 从入门到精通
  • 2025新春烟花代码(一)HTML5夜景放烟花绽放动画效果
  • 基于Thinkphp6+uniapp的陪玩陪聊软件开发方案分析
  • flutter web 路由问题
  • 【Qt】C++11 Lambda表达式
  • C语言文件学习
  • 数据库回滚:大祸临头时
  • 复合机器人助力手机壳cnc加工向自动化升级
  • JAVA学习记录1
  • 【Linux】Linux的权限问题