新增U盘获取图语License功能

This commit is contained in:
2024-08-06 20:32:02 +08:00
parent f0b1152cad
commit 1f7bc017ca
27 changed files with 1325 additions and 481 deletions

View File

@@ -16,8 +16,14 @@ DataHandler::DataHandler(QLabel* leftLens_imageLabel, QLabel* rightLens_imageLab
DataHandler::~DataHandler()
{
delete ffmpegDecoder; // 释放解码器
delete buffer;
if (ffmpegDecoder) {
ffmpegDecoder->requestInterruption();
ffmpegDecoder->wait(); // 等待解码器线程完成
delete ffmpegDecoder;
ffmpegDecoder = nullptr;
}
delete buffer;
buffer = nullptr;
}
// 将十六进制字符串转换为 QByteArray
@@ -47,14 +53,10 @@ void DataHandler::showVideo(const QString& client, const QByteArray& valData)
}
}
//qDebug() << "==========valData.size:" << valData.size();
if (!valData.isEmpty()) {
file.write(valData);
file.flush(); // 刷新文件缓冲区,以确保数据写入磁盘
qWarning() << " ------------ write ------------" ;
file.flush(); // 刷新文件缓冲区
}
//qint64 elapsed = timer.elapsed(); // 获取经过的时间(毫秒)
//qDebug() << "Time spent writing file:" << elapsed << "ms";
if (!start_run) {
start_run = 1;
@@ -69,29 +71,8 @@ void DataHandler::clearAllRecvData() {
dataLen = 0;
}
void DataHandler::handleCmd(unsigned char msg_id, const QString& client, QByteArray actual_data)
{
switch (msg_id) {
case 0x19:
{
showPic(leftLens_m_imageLabel, rightLens_m_imageLabel, client, actual_data);
}
break;
case 0x11:
{
showVideo(client, actual_data);
}
break;
default:
{}
break;
}
}
// 处理接收到的数据
void DataHandler::handleData(const QString& client, const QByteArray& recvData, unsigned char msg_id,
void DataHandler::handleData(const QString& client, const QByteArray& recvData, int msg_id,
int currentRecvItemIndex, int currentRecvFuncItemIndex,
const QString& itemData, const QString& funcItemData)
{
@@ -111,7 +92,7 @@ void DataHandler::handleData(const QString& client, const QByteArray& recvData,
qDebug() << "read file data size:" << recvdata.size();
#endif
qDebug() << "---Received data size:" << recvData.size();
//qDebug() << "---Received data size:" << recvData.size();
// 将接收到的数据追加到buffer
buffer->append(recvData);
@@ -119,7 +100,8 @@ void DataHandler::handleData(const QString& client, const QByteArray& recvData,
while (buffer->size() >= 11) { // 至少需要11个字节来解析数据头
// 检查数据头
if (buffer->mid(0, 4) == QByteArray::fromHex("aa55aa55")) {
msg_id = static_cast<unsigned char>(buffer->at(4));
msg_id = (static_cast<unsigned char>(buffer->at(5)) << 8) |
(static_cast<unsigned char>(buffer->at(4)));
int dataSize = (static_cast<unsigned char>(buffer->at(9)) << 24) |
(static_cast<unsigned char>(buffer->at(8)) << 16) |
(static_cast<unsigned char>(buffer->at(7)) << 8) |
@@ -138,8 +120,8 @@ void DataHandler::handleData(const QString& client, const QByteArray& recvData,
buffer->remove(0, totalSize); // 移除已处理的数据
// 暂时设置 NG
// 同一个client仅当 msg_id 不连续为 0x11/0x21 或第一次处理时才执行 emit statusUpdated
if ((msg_id != 0x11 || clientLastMsgId.value(client, 0) != 0x11) &&
(msg_id != 0x21 || clientLastMsgId.value(client, 0) != 0x21)){
if ((msg_id != 0x0011 || clientLastMsgId.value(client, 0) != 0x0011) &&
(msg_id != 0x0021 || clientLastMsgId.value(client, 0) != 0x0021)){
qDebug() << "Emitting statusUpdated for client:" << client << "with msg_id:" << msg_id;
emit statusUpdated(client, currentRecvItemIndex + 1, currentRecvFuncItemIndex + 1,
true, itemData, funcItemData);
@@ -156,3 +138,269 @@ void DataHandler::handleData(const QString& client, const QByteArray& recvData,
}
}
}
void DataHandler::handleFrontCmd(int msg_id, const QString& client, QByteArray actual_data)
{
switch (msg_id) {
case 0x0019:
{
showPic(leftLens_m_imageLabel, rightLens_m_imageLabel, client, actual_data);
}
break;
case 0x0011:
{
showVideo(client, actual_data);
}
break;
case 0x0021:
{
//showVideo(client, actual_data);
}
break;
case FACE_ENROLL_SINGLE:
{
}
break;
case FACE_ENROLL:
{
}
break;
case HAND_ENROLL:
{
}
break;
case FACE_VERIFY:
{
}
break;
case HAND_VERIFY:
{
}
break;
case DEL_USER:
{
}
break;
case DEL_ALLUSER:
{
}
break;
case GET_USER:
{
}
break;
case GET_ALLUSER:
{
}
break;
case PASSWD_ENROLL:
{
}
break;
case IMG_ENROLL:
{
}
break;
case GET_IMG:
{
}
break;
case START_VIDEO:
{
}
break;
case STOP_VIDEO:
{
}
break;
case TOUCH_TEST:
{
}
break;
case MIC_TEST:
{
}
break;
case SPK_TEST:
{
}
break;
case RADAR_TEST:
{
}
break;
case NFC_TEST:
{
}
break;
case PR_SWITCH:
{
}
break;
case PS_TEST:
{
}
break;
case BACKLIGHT:
{
}
break;
case IR_LED:
{
}
break;
case UART_TEST:
{
}
break;
case PIR_TEST:
{
}
break;
case FACE_VERIFY_THRES:
{
}
break;
case FACE_THRES_LEVEL:
{
}
break;
case FACE_LIVE_THRES:
{
}
break;
case FACE_ACC_THRES:
{
}
break;
case FACE_ACC_LEVEL:
{
}
break;
case FACE_DIS_RANGE:
{
}
break;
case FACE_ANGLE_RANGE:
{
}
break;
case HAND_VERIFY_THRES:
{
}
break;
case HANS_THRES_LEVEL:
{
}
break;
case HAND_LIVE_THRES:
{
}
break;
case USER_MAX_NUM:
{
}
break;
case ADMI_USER_MAX_NUM:
{
}
break;
case FACE_REPEAT:
{
}
break;
case HAND_REPEAT:
{
}
break;
case SET_IP:
{
}
break;
case SET_PORT:
{
}
break;
case SET_VOLUME:
{
}
break;
case SET_BACKLIGHT:
{
}
break;
case SET_RADAR_DIS:
{
}
break;
case SET_UART_BARTRATE:
{
}
break;
default:
{}
break;
}
}
void DataHandler::handleBackCmd(int msg_id, const QString& client, QByteArray actual_data)
{
switch (msg_id) {
}
}
void DataHandler::handleCmd(int msg_id, const QString& client, QByteArray actual_data)
{
if (msg_id < 0x0400) {
handleFrontCmd(msg_id, client, actual_data);
}
else if (msg_id < 0x0800) {
handleBackCmd(msg_id, client, actual_data);
}
}