{
std::string content;
- // 1. 产品型号(从ConfigModel获取)
- content += "产品型号: ";
+ // 压缩版本:只保留最核心信息,确保在256字符以内
+
+ // 1. 产品型号
+ content += GenerateProductInfo();
+
+ // 2. 测试时间
+ content += GenerateTestTimeInfo();
+
+ // 3. 核心设备信息
+ content += GenerateDeviceInfo();
+
+ // 4. 测试结果
+ content += GenerateTestSummary();
+
+
+
+ // 调试:打印内容长度
+ printf("=== 二维码内容长度检查 ===\n");
+ printf("内容长度: %zu 字符\n", content.length());
+ printf("内容预览:\n%s\n", content.c_str());
+ printf("=== 内容长度检查结束 ===\n");
+
+ return content;
+ }
+ // 生成产品信息
+ std::string testQRCodeView::GenerateProductInfo()
+ {
+ std::string content = "产品: ";
+ content += GetProductModelString();
+ content += "\n";
+ return content;
+ }
+
+ // 获取产品型号字符串
+ std::string testQRCodeView::GetProductModelString()
+ {
#ifdef FD230
- content += "FD230";
+ return "FD230";
#elif defined(BOARD_N9)
- content += "N9";
+ return "N9";
#elif defined(BOARD_W9)
- content += "W9";
+ return "W9";
#else
- content += "Unknown";
+ return "Unknown";
#endif
-
- content += "\n";
+ }
+
+ // 生成测试时间信息
+ std::string testQRCodeView::GenerateTestTimeInfo()
+ {
+ std::string content;
- // 2. 测试开始时间
- content += "测试开始时间: ";
+ // 测试开始时间
+ content += "开始: ";
if (testModel::GetInstance()) {
content += testModel::GetInstance()->GetStartTime();
if (content.back() == '\n') {
content.pop_back(); // 移除多余的换行符
}
} else {
- content += "获取失败";
+ content += "fail";
}
content += "\n";
- // 2.1 测试结束时间(如果有的话)
+ // 测试结束时间(如果有的话)
if (testModel::GetInstance() && !testModel::GetInstance()->GetEndTime().empty()) {
- content += "测试结束时间: ";
+ content += "结束: ";
content += testModel::GetInstance()->GetEndTime();
content += "\n";
} else if (testModel::GetInstance()) {
// 检查是否所有测试都完成了
if (testModel::GetInstance()->IsAllTestsCompleted()) {
- content += "测试结束时间: ";
+ content += "结束: ";
content += testModel::GetInstance()->GetEndTime();
content += "\n";
}
}
- // 3. 蓝牙地址
- content += "蓝牙地址: ";
- uint8_t btaddr[6] = {0};
- uint8_t btaddr_str[64] = {0};
- uint32_t len = 6;
- errcode_t ret = uapi_get_nv_btaddr((uint8_t *)btaddr, &len);
- if (ret == ERRCODE_SUCC) {
- sprintf((char *)btaddr_str, "%02X:%02X:%02X:%02X:%02X:%02X",
- btaddr[0], btaddr[1], btaddr[2], btaddr[3], btaddr[4], btaddr[5]);
- content += (char *)btaddr_str;
- } else {
- content += "获取失败";
- }
+ return content;
+ }
+
+ // 生成设备信息
+ std::string testQRCodeView::GenerateDeviceInfo()
+ {
+ std::string content;
+
+ // 蓝牙地址
+ content += "BT: ";
+ content += GetBluetoothAddress();
content += "\n";
- // 4. IMEI号
+ // IMEI号
content += "IMEI: ";
if (ConfigModel::GetInstance()) {
content += ConfigModel::GetInstance()->Getimei();
} else {
- content += "获取失败";
+ content += "fail";
}
content += "\n";
- // 5. 固件版本号
- content += "固件版本: ";
- char version_buf[128] = {0};
- uint32_t version_len = 128;
- if (uapi_get_buildversion((uint8_t *)version_buf, version_len) == ERRCODE_SUCC) {
- content += version_buf;
- } else {
- content += "获取失败";
- }
+ // 固件版本号
+ content += "VER: ";
+ content += GetFirmwareVersion();
content += "\n";
- // 6. Model版本(4G模块版本)
- content += "4G模块版本: ";
+ // Model版本(4G模块版本)
+ content += "4GMODEL: ";
if (ConfigModel::GetInstance()) {
content += ConfigModel::GetInstance()->GetmoderVer();
} else {
- content += "获取失败";
+ content += "fail";
}
content += "\n";
- // 7. Python版本
- content += "Python版本: ";
+ // Python版本
+ content += "Python: ";
if (ConfigModel::GetInstance()) {
content += ConfigModel::GetInstance()->GetpyVer();
} else {
- content += "获取失败";
+ content += "fail";
}
content += "\n";
- // 8. 测试统计信息
- content += "\n=== 测试统计 ===\n";
+ return content;
+ }
+
+ // 获取蓝牙地址
+ std::string testQRCodeView::GetBluetoothAddress()
+ {
+ uint8_t btaddr[6] = {0};
+ uint8_t btaddr_str[64] = {0};
+ uint32_t len = 6;
+ errcode_t ret = uapi_get_nv_btaddr((uint8_t *)btaddr, &len);
+ if (ret == ERRCODE_SUCC) {
+ sprintf((char *)btaddr_str, "%02X:%02X:%02X:%02X:%02X:%02X",
+ btaddr[0], btaddr[1], btaddr[2], btaddr[3], btaddr[4], btaddr[5]);
+ return (char *)btaddr_str;
+ } else {
+ return "fail";
+ }
+ }
+
+ // 获取固件版本
+ std::string testQRCodeView::GetFirmwareVersion()
+ {
+ char version_buf[128] = {0};
+ uint32_t version_len = 128;
+ if (uapi_get_buildversion((uint8_t *)version_buf, version_len) == ERRCODE_SUCC) {
+ return version_buf;
+ } else {
+ return "fail";
+ }
+ }
+
+ // 生成测试结果汇总
+ std::string testQRCodeView::GenerateTestSummary()
+ {
+ std::string content;
+
if (testModel::GetInstance()) {
- // 统计成功、失败、未测试的项数
- int success_count = 0, failed_count = 0, none_count = 0;
+ int successCount = 0, failCount = 0, notTestCount = 0;
+ std::string failedIds, notTestIds;
+
+ // 统计结果并收集ID
for (int i = 0; i < MAX_TEST_ITEM; i++) {
test_status_enum status = testModel::GetInstance()->GetResult(i);
switch (status) {
- case TEST_STATUS_SUCCESS:
- success_count++;
+ case TEST_STATUS_SUCCESS:
+ successCount++;
break;
- case TEST_STATUS_ERROR:
- failed_count++;
+ case TEST_STATUS_ERROR:
+ failCount++;
+ if (!failedIds.empty()) failedIds += ",";
+ failedIds += std::to_string(i);
break;
- case TEST_STATUS_NONE:
- none_count++;
+ case TEST_STATUS_NONE:
+ notTestCount++;
+ if (!notTestIds.empty()) notTestIds += ",";
+ notTestIds += std::to_string(i);
break;
}
}
- content += "成功: " + std::to_string(success_count) + "项\n";
- content += "失败: " + std::to_string(failed_count) + "项\n";
- content += "未测试: " + std::to_string(none_count) + "项\n";
- content += "总计: " + std::to_string(MAX_TEST_ITEM) + "项\n";
- }
-
- // 9. 产测结果汇总
- content += "产测结果汇总:\n";
- if (testModel::GetInstance()) {
- int successCount = 0;
- int failCount = 0;
- int notTestCount = 0;
- std::string failedItems;
- std::string notTestItems;
- // 遍历所有测试项,统计结果
- for (int i = 0; i < MAX_TEST_ITEM; i++) {
- test_status_enum status = testModel::GetInstance()->GetResult(i);
- std::string itemName = testModel::GetInstance()->GetTestItemDescription(i);
-
- if (status == TEST_STATUS_SUCCESS) {
- successCount++;
- } else if (status == TEST_STATUS_ERROR) {
- failCount++;
- if (!failedItems.empty()) failedItems += ", ";
- failedItems += itemName;
- } else if (status == TEST_STATUS_NONE) {
- notTestCount++;
- if (!notTestItems.empty()) notTestItems += ", ";
- notTestItems += itemName;
- }
- }
+ // 显示统计信息
+ content += "成功:" + std::to_string(successCount) + "\n";
+ content += "失败:" + std::to_string(failCount) + "\n";
+ content += "未测:" + std::to_string(notTestCount) + "\n";
- content += "成功项数: " + std::to_string(successCount) + "\n";
- content += "失败项数: " + std::to_string(failCount) + "\n";
- content += "未测试项数: " + std::to_string(notTestCount) + "\n";
- content += "总计: " + std::to_string(MAX_TEST_ITEM) + "\n";
-
- // 显示具体的失败项
+ // 显示失败项的ID列表
if (failCount > 0) {
- content += "失败项: " + failedItems + "\n";
+ content += "失败项:" + failedIds + "\n";
}
- // 显示具体的未测试项
+ // 显示未测试项的ID列表
if (notTestCount > 0) {
- content += "未测试项: " + notTestItems + "\n";
+ content += "未测项:" + notTestIds + "\n";
}
- } else {
- content += "获取产测结果失败\n";
}
return content;