zw111指纹模块自动注册一直超时返回错误码26,试了发送闪灯指令没问题。先是发送自动注册指纹指令并收到确认码0x00没问题,然后蓝灯常亮,接着把手指按下上去,没反应,按压了好几次都没反应,手指按下停留时间也够,直到最后超时闪红灯。不知道是自动注册指令发送的有问题,还是我的手指按下操作有问题,看了其他人的操作视频和我的也一样,但是他们的可以。
开发环境PlatformIO,framework = arduino,board = esp32dev 代码逻辑如下,
HardwareSerial zwfSerialPort(2); // 使用 UART2
// 发送自动注册指纹指令
uint8_t command[] = {0xEF, 0x01, 0xFF, 0xFF,0xFF, 0xFF, 0x01, 0x00, 0x08, 0x31, 0x00, 0x01, 0x04, 0x00, 0x09, 0x00, 0x48};
zwfSerialPort.write(command, sizeof(command));
delay(500);
uint8_t buffer[64];
// 循环读取指纹模块返回值
zwfReadData(&zwfSerialPort, buffer, 10000);
// 这个是循环读取的函数
uint8_t zwfReadData(HardwareSerial *zwfSerialPort, uint8_t buffer[], uint16_t timeout) {
uint8_t i = 0;
while(zwfSerialPort->available() == 0 && (--timeout)) {
delay(1);}
while(zwfSerialPort->available() > 0) {
delay(1);
buffer[i++] = zwfSerialPort->read();
if(i >= 20) {
Serial.print("确认码: ");
Serial.println(buffer[9], HEX);
return 1;
}}
Serial.print("确认码: ");
Serial.println(buffer[9], HEX);
return 0;
}
DeepSeek回复: