支持获取掌静脉以注册id.
This commit is contained in:
parent
9ec600a0c3
commit
34294c5c85
@ -283,6 +283,8 @@ void ModuleCommunication::processPackage(const uint8_t *data, uint16_t size) {
|
|||||||
} else if (result == Failed4PalmEnrolled) {
|
} else if (result == Failed4PalmEnrolled) {
|
||||||
emit errorOccurred(NoteId::InteractWarning, "手掌已被录入");
|
emit errorOccurred(NoteId::InteractWarning, "手掌已被录入");
|
||||||
LOG_CAT(info, GUI) << "手掌已被录入。";
|
LOG_CAT(info, GUI) << "手掌已被录入。";
|
||||||
|
} else if (result == Failed4MaxUser) {
|
||||||
|
emit errorOccurred(NoteId::InteractWarning, "录入", "注册已达上限");
|
||||||
} else {
|
} else {
|
||||||
LOG_CAT(info, GUI) << "未知错误(" << static_cast<int>(result) << ")。";
|
LOG_CAT(info, GUI) << "未知错误(" << static_cast<int>(result) << ")。";
|
||||||
}
|
}
|
||||||
@ -350,9 +352,24 @@ void ModuleCommunication::processPackage(const uint8_t *data, uint16_t size) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GetUniqueID: {
|
case GetUniqueID: {
|
||||||
LOG_CAT(info, GUI) << "模组: " << protocolDataFormatString(data, size);
|
|
||||||
auto id = reinterpret_cast<const ModuleId *>(data + 7);
|
auto id = reinterpret_cast<const ModuleId *>(data + 7);
|
||||||
LOG_CAT(info, GUI) << "模组ID: " << std::string_view(id->id, sizeof(id->id));
|
int idCount = 0;
|
||||||
|
std::ostringstream oss;
|
||||||
|
oss << "[";
|
||||||
|
for (int byteIndex = 0; byteIndex < sizeof(id->userids); byteIndex++) {
|
||||||
|
for (uint8_t bitPosition = 0; bitPosition < 8; bitPosition++) {
|
||||||
|
if (id->userids[byteIndex] & (1 << bitPosition)) {
|
||||||
|
uint16_t uid = byteIndex * 8 + bitPosition;
|
||||||
|
if (uid >= 1) {
|
||||||
|
oss << uid << ", ";
|
||||||
|
idCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
oss << "]";
|
||||||
|
LOG_CAT(info, GUI) << "模组ID: " << std::string_view(id->id, sizeof(id->id)) << ", user ids[" << idCount
|
||||||
|
<< "]: " << oss.str();
|
||||||
LOG_CAT(info, GUI) << Separator;
|
LOG_CAT(info, GUI) << Separator;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ class ModuleCommunication : public QObject {
|
|||||||
public:
|
public:
|
||||||
constexpr static uint16_t VendorIdentifier = 0x3346;
|
constexpr static uint16_t VendorIdentifier = 0x3346;
|
||||||
constexpr static uint16_t ProductIdentifier = 0x0001;
|
constexpr static uint16_t ProductIdentifier = 0x0001;
|
||||||
|
constexpr static uint16_t MaxUserCount = 4000;
|
||||||
constexpr static uint16_t InvalidUserId = std::numeric_limits<uint16_t>::max();
|
constexpr static uint16_t InvalidUserId = std::numeric_limits<uint16_t>::max();
|
||||||
enum MessageId : uint8_t {
|
enum MessageId : uint8_t {
|
||||||
Reply = 0,
|
Reply = 0,
|
||||||
@ -187,6 +188,7 @@ public:
|
|||||||
|
|
||||||
struct ModuleId {
|
struct ModuleId {
|
||||||
char id[32];
|
char id[32];
|
||||||
|
uint8_t userids[512]; // bit位
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
@ -93,7 +93,6 @@ Window {
|
|||||||
info_bar.showError(tip,2000,detailMessage)
|
info_bar.showError(tip,2000,detailMessage)
|
||||||
} else if (level === 2) {
|
} else if (level === 2) {
|
||||||
info_bar.showInfo(tip,2000,detailMessage)
|
info_bar.showInfo(tip,2000,detailMessage)
|
||||||
resultBrowser.append(tip+":"+detailMessage)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function onNewVideoFrame() {
|
function onNewVideoFrame() {
|
||||||
|
@ -64,7 +64,9 @@ HOST_TOOLS := /opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/bin
|
|||||||
./rebuild-app-ota.sh y L015 V200 R002 05
|
./rebuild-app-ota.sh y L015 V200 R002 05
|
||||||
600X800
|
600X800
|
||||||
|
|
||||||
docker run -it --rm --user 1000:1000 -v /opt:/opt -v $(pwd):$(pwd) -w $(pwd) registry.cn-shenzhen.aliyuncs.com/amass_toolset/yoctools:22.04 ./rebuild-app.sh y L015 V200 R002
|
docker run -it --rm --user 1000:1000 -v /opt:/opt -v $(pwd)/..:$(pwd)/.. -w $(pwd) registry.cn-shenzhen.aliyuncs.com/amass_toolset/yoctools:22.04 ./rebuild-app.sh y L015 V200 R002
|
||||||
|
|
||||||
|
docker run -it --rm --user 1000:1000 -v /opt:/opt -v $(pwd)/..:$(pwd)/.. -w $(pwd) registry.cn-shenzhen.aliyuncs.com/amass_toolset/yoctools:22.04 ./rebuild-app-ota.sh y L015 V200 R002 06
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,11 +1,23 @@
|
|||||||
## 1 串口配置
|
## 1 串口配置
|
||||||
|
|
||||||
|
目前模组支持两种通信接口:UART,USB(CDC)。其中
|
||||||
|
|
||||||
|
UART:
|
||||||
|
|
||||||
- 波特率:115200
|
- 波特率:115200
|
||||||
- 数据位:8
|
- 数据位:8
|
||||||
- 停止位:1
|
- 停止位:1
|
||||||
- 奇偶检验:无
|
- 奇偶检验:无
|
||||||
- 流控制:无
|
- 流控制:无
|
||||||
|
|
||||||
|
USB(CDC):
|
||||||
|
|
||||||
|
- 波特率:2000000
|
||||||
|
- 数据位:8
|
||||||
|
- 停止位:1
|
||||||
|
- 奇偶检验:无
|
||||||
|
- 流控制:无
|
||||||
|
|
||||||
## 2 消息格式
|
## 2 消息格式
|
||||||
|
|
||||||
主控和模块通讯的基本格式如下表所示,字节序为 **大端字节序(Big Endian)**:
|
主控和模块通讯的基本格式如下表所示,字节序为 **大端字节序(Big Endian)**:
|
||||||
@ -35,6 +47,7 @@
|
|||||||
| MID_ENROLL_SINGLE | 0x1D | 掌静脉录入(单帧) |
|
| MID_ENROLL_SINGLE | 0x1D | 掌静脉录入(单帧) |
|
||||||
| MID_DELUSER | 0x20 | 删除一个已录入的掌静脉 |
|
| MID_DELUSER | 0x20 | 删除一个已录入的掌静脉 |
|
||||||
| MID_DELALL | 0x21 | 删除所有已录入的掌静脉 |
|
| MID_DELALL | 0x21 | 删除所有已录入的掌静脉 |
|
||||||
|
| MID_MODULE_ID | 0xAC | 获取模组ID,唯一标识 |
|
||||||
| MID_ENROLL_PALM_FEATUTE | 0xF9 | 主控下发掌静脉特征值给模组进行录入 |
|
| MID_ENROLL_PALM_FEATUTE | 0xF9 | 主控下发掌静脉特征值给模组进行录入 |
|
||||||
| MID_GET_PALM_FEATUTE | 0xFA | 主控请求获取指定用户掌静脉特征值 |
|
| MID_GET_PALM_FEATUTE | 0xFA | 主控请求获取指定用户掌静脉特征值 |
|
||||||
|
|
||||||
@ -230,6 +243,20 @@ struct msg_deluser_data {
|
|||||||
- 0x00(MR_SUCCESS):删除成功
|
- 0x00(MR_SUCCESS):删除成功
|
||||||
- 0x05(MR_FAILED4_UNKNOWNREASON):未知错误
|
- 0x05(MR_FAILED4_UNKNOWNREASON):未知错误
|
||||||
|
|
||||||
|
### 3.7 获取模组ID
|
||||||
|
|
||||||
|
该命令用于获取模组ID,类型为长度为32的字符串。
|
||||||
|
|
||||||
|
该指令无需携带参数。
|
||||||
|
|
||||||
|
模组通过消息 MID_REPLY 返回的数据 msg_reply_module_id 定义如下:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
struct msg_reply_module_id {
|
||||||
|
char id[32];
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
### 3.7 掌静脉特征值录入(MID_ENROLL_PALM_FEATUTE)
|
### 3.7 掌静脉特征值录入(MID_ENROLL_PALM_FEATUTE)
|
||||||
|
|
||||||
该命令用于直接将掌静脉特征值下发给模组进行录入。
|
该命令用于直接将掌静脉特征值下发给模组进行录入。
|
||||||
|
Loading…
Reference in New Issue
Block a user