From 6ac18b3f954cbf2103a2eb7a394755620eae649f Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Fri, 23 Dec 2022 14:17:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BF=9D=E5=AD=98=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=90=8D=EF=BC=8C=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=92=8C=E5=9B=BA=E4=BB=B6=E7=89=88=E6=9C=AC=E7=9A=84=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/HGPdtToolDb/HGPdtToolDb.cpp | 66 ++++++++ db/HGPdtToolDb/HGPdtToolDb.def | 6 + db/HGPdtToolDb/HGPdtToolDb.h | 20 ++- db/HGPdtToolDb/HGPdtToolDbImpl.cpp | 206 ++++++++++++++++--------- db/HGPdtToolDb/HGPdtToolDbImpl.hpp | 11 +- db/HGPdtToolDbTest/HGPdtToolDbTest.cpp | 2 +- 6 files changed, 232 insertions(+), 79 deletions(-) diff --git a/db/HGPdtToolDb/HGPdtToolDb.cpp b/db/HGPdtToolDb/HGPdtToolDb.cpp index 5dd0519..9d9e897 100644 --- a/db/HGPdtToolDb/HGPdtToolDb.cpp +++ b/db/HGPdtToolDb/HGPdtToolDb.cpp @@ -230,6 +230,72 @@ HGResult HGAPI HGPdtToolDb_CloseDevice(HGPdtToolDbDevice device) return HGBASE_ERR_OK; } +HGResult HGAPI HGPdtToolDb_GetDeviceName(HGPdtToolDbDevice device, HGChar* name, HGUInt maxLen) +{ + if (NULL == device) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; + return deviceImpl->GetName(name, maxLen); +} + +HGResult HGAPI HGPdtToolDb_SetDeviceName(HGPdtToolDbDevice device, const HGChar* name) +{ + if (NULL == device) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; + return deviceImpl->SetName(name); +} + +HGResult HGAPI HGPdtToolDb_GetDeviceType(HGPdtToolDbDevice device, HGChar* type, HGUInt maxLen) +{ + if (NULL == device) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; + return deviceImpl->GetType(type, maxLen); +} + +HGResult HGAPI HGPdtToolDb_SetDeviceType(HGPdtToolDbDevice device, const HGChar* type) +{ + if (NULL == device) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; + return deviceImpl->SetType(type); +} + +HGResult HGAPI HGPdtToolDb_GetDeviceVersion(HGPdtToolDbDevice device, HGChar* version, HGUInt maxLen) +{ + if (NULL == device) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; + return deviceImpl->GetVersion(version, maxLen); +} + +HGResult HGAPI HGPdtToolDb_SetDeviceVersion(HGPdtToolDbDevice device, const HGChar* version) +{ + if (NULL == device) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; + return deviceImpl->SetVersion(version); +} + HGResult HGAPI HGPdtToolDb_GetDeviceCurrEntry(HGPdtToolDbDevice device, HGUInt* entryName) { if (NULL == device) diff --git a/db/HGPdtToolDb/HGPdtToolDb.def b/db/HGPdtToolDb/HGPdtToolDb.def index 0e3fb14..ef70870 100644 --- a/db/HGPdtToolDb/HGPdtToolDb.def +++ b/db/HGPdtToolDb/HGPdtToolDb.def @@ -21,6 +21,12 @@ HGPdtToolDb_GetUserConfig HGPdtToolDb_SetUserConfig HGPdtToolDb_OpenDevice HGPdtToolDb_CloseDevice +HGPdtToolDb_GetDeviceName +HGPdtToolDb_SetDeviceName +HGPdtToolDb_GetDeviceType +HGPdtToolDb_SetDeviceType +HGPdtToolDb_GetDeviceVersion +HGPdtToolDb_SetDeviceVersion HGPdtToolDb_GetDeviceCurrEntry HGPdtToolDb_SetDeviceCurrEntry HGPdtToolDb_GetDeviceEntryStatus diff --git a/db/HGPdtToolDb/HGPdtToolDb.h b/db/HGPdtToolDb/HGPdtToolDb.h index 23498af..4e912b9 100644 --- a/db/HGPdtToolDb/HGPdtToolDb.h +++ b/db/HGPdtToolDb/HGPdtToolDb.h @@ -162,6 +162,24 @@ HGEXPORT HGResult HGAPI HGPdtToolDb_OpenDevice(HGPdtToolDbUserMgr userMgr, const /* 关闭设备 */ HGEXPORT HGResult HGAPI HGPdtToolDb_CloseDevice(HGPdtToolDbDevice device); +/* 获取设备名称 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceName(HGPdtToolDbDevice device, HGChar* name, HGUInt maxLen); + +/* 设置设备名称 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceName(HGPdtToolDbDevice device, const HGChar* name); + +/* 获取设备类型 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceType(HGPdtToolDbDevice device, HGChar* type, HGUInt maxLen); + +/* 设置设备类型 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceType(HGPdtToolDbDevice device, const HGChar* type); + +/* 获取设备版本 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceVersion(HGPdtToolDbDevice device, HGChar* version, HGUInt maxLen); + +/* 设置设备版本 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceVersion(HGPdtToolDbDevice device, const HGChar* version); + /* 获取当前的测试项, 0表示还未测试,0xFFFFFFFF表示已经测试完成 */ HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceCurrEntry(HGPdtToolDbDevice device, HGUInt *entryName); @@ -184,7 +202,7 @@ HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceEntryExcepDesc(HGPdtToolDbDevice de HGEXPORT HGResult HGAPI HGPdtToolDb_DownloadDeviceEntryImage(HGPdtToolDbDevice device, HGUInt entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar* fileName); -/* 上传某个测试项关联的图像 */ +/* 上传/更新某个测试项关联的图像 */ HGEXPORT HGResult HGAPI HGPdtToolDb_UploadDeviceEntryImage(HGPdtToolDbDevice device, HGUInt entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar* fileName); diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp index e748395..62010e7 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp @@ -26,27 +26,6 @@ const HGChar* INITTIAL_INSPECTION[] = "scanning_sensor" }; -const HGChar* INITTIAL_INSPECTION_CN[] = -{ - "拨码开关校验", - "检查船型开关功能", - "设备上电并观察开机状态", - "检查液晶显示", - "清理纸道功能确认", - "按键功能检测", - "计数模式检测", - "歪斜检测", - "分纸电机检测", - "CIS原图初检", - "主机风扇功能检测", - "超声波模块检验", - "LED灯状态检查", - "复位检查", - "走纸检查", - "开盖传感器检查", - "扫描传感器检查" -}; - const HGChar* IMAGE_INSPECTION[] = { "configure_speed_mode", @@ -64,23 +43,6 @@ const HGChar* IMAGE_INSPECTION[] = "mech_paper_feeding_inclination" }; -const HGChar* IMAGE_INSPECTION_CN[] = -{ - "配置速度模式", - "放置校正纸", - "自动平场校正", - "重启设备", - "扫描图像质量确认", - "色卡纸成像质量评估", - "色卡纸偏色成像质量评估", - "清晰度质量评估", - "畸变修正", - "设置休眠", - "歪斜挡位检测", - "分纸强度检测", - "机械走纸倾斜检测" -}; - const HGChar* PRESSURE_INSPECTION[] = { "single_page_test_1", @@ -90,15 +52,6 @@ const HGChar* PRESSURE_INSPECTION[] = "clear_roller_count" }; -const HGChar* PRESSURE_INSPECTION_CN[] = -{ - "单张测试1", - "单张测试2", - "单张测试3", - "压力测试2轮", - "清除滚轴计数" -}; - HGPdtToolDbUserMgrImpl::HGPdtToolDbUserMgrImpl() { @@ -719,7 +672,9 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) cmd += ", main_test.create_user"; cmd += ", main_test.last_modify_time"; cmd += ", main_test.last_modify_user"; - cmd += ", main_test.current_entry"; + cmd += ", main_test.device_name"; + cmd += ", main_test.device_type"; + cmd += ", main_test.device_version"; for (int i = 0; i < sizeof(INITTIAL_INSPECTION) / sizeof(const HGChar*); ++i) { @@ -771,12 +726,17 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) return HGBASE_ERR_FAIL; } - const HGChar* MAIN_TEST_CN[] = {"序列号", "创建时间", "创建用户", "最后修改时间", "最后修改用户", "当前测试项"}; + const HGChar* MAIN_TEST_CN[] = {"设备序列号", "创建时间", "创建用户", "最后修改时间", "最后修改用户", + "设备名", "设备类型", "设备固件版本"}; for (int i = 0; i < sizeof(MAIN_TEST_CN) / sizeof(const HGChar*); ++i) { std::string title = (std::string)MAIN_TEST_CN[i] + "\t"; fwrite(title.c_str(), 1, title.size(), file); } + + const HGChar* INITTIAL_INSPECTION_CN[] = {"拨码开关校验", "检查船型开关功能", "设备上电并观察开机状态", "检查液晶显示", + "清理纸道功能确认", "按键功能检测", "计数模式检测", "歪斜检测", "分纸电机检测", "CIS原图初检", "主机风扇功能检测", + "超声波模块检验", "LED灯状态检查", "复位检查", "走纸检查", "开盖传感器检查", "扫描传感器检查"}; for (int i = 0; i < sizeof(INITTIAL_INSPECTION_CN) / sizeof(const HGChar*); ++i) { std::string title = (std::string)INITTIAL_INSPECTION_CN[i] + "\t"; @@ -784,6 +744,10 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) std::string descTitle = (std::string)INITTIAL_INSPECTION_CN[i] + "异常说明" + "\t"; fwrite(descTitle.c_str(), 1, descTitle.size(), file); } + + const HGChar* IMAGE_INSPECTION_CN[] = {"配置速度模式", "放置校正纸", "自动平场校正", "重启设备", "扫描图像质量确认", + "色卡纸成像质量评估", "色卡纸偏色成像质量评估", "清晰度质量评估", "畸变修正", "设置休眠", "歪斜挡位检测", + "分纸强度检测", "机械走纸倾斜检测"}; for (int i = 0; i < sizeof(IMAGE_INSPECTION_CN) / sizeof(const HGChar*); ++i) { std::string title = (std::string)IMAGE_INSPECTION_CN[i] + "\t"; @@ -791,6 +755,8 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) std::string descTitle = (std::string)IMAGE_INSPECTION_CN[i] + "异常说明" + "\t"; fwrite(descTitle.c_str(), 1, descTitle.size(), file); } + + const HGChar* PRESSURE_INSPECTION_CN[] = {"单张测试1", "单张测试2", "单张测试3", "压力测试2轮","清除滚轴计数"}; for (int i = 0; i < sizeof(PRESSURE_INSPECTION_CN) / sizeof(const HGChar*); ++i) { std::string title = (std::string)PRESSURE_INSPECTION_CN[i] + "\t"; @@ -808,19 +774,17 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) { std::string value; - if (i < 5) + unsigned int baseCols = sizeof(MAIN_TEST_CN) / sizeof(const HGChar*); + if (i < baseCols) { - assert(NULL != row[i]); - value = row[i]; - } - else if (i == 5) - { - assert(NULL != row[i]); - value = GetEntryNameCnStr((HGUInt)atoll(row[i])); + if (NULL != row[i]) + { + value = Utf8ToStdString(row[i]); + } } else { - if (0 == (i - 6) % 2) + if (0 == (i - baseCols) % 2) { assert(NULL != row[i]); const HGChar* ENTRY_STATUS_CN[] = { "未测试", "不通过", "不支持", "通过" }; @@ -980,21 +944,6 @@ void HGPdtToolDbUserMgrImpl::RemoveDevice(class HGPdtToolDbDeviceImpl* deviceImp } } -const HGChar* HGPdtToolDbUserMgrImpl::GetEntryNameCnStr(HGUInt entryName) -{ - if (0 == entryName) - return "未开始测试"; - else if (0xFFFFFFFF == entryName) - return "已完成测试"; - else if (entryName >= HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH && entryName <= HGPDTTOOLDB_ENTRYNAME_SCANNING_SENSOR) - return INITTIAL_INSPECTION_CN[entryName - HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH]; - else if (entryName >= HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE && entryName <= HGPDTTOOLDB_ENTRYNAME_MECH_PAPER_FEEDING_INCLINATION) - return IMAGE_INSPECTION_CN[entryName - HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE]; - else if (entryName >= HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_1 && entryName <= HGPDTTOOLDB_ENTRYNAME_CLEAR_ROLLER_COUNT) - return PRESSURE_INSPECTION_CN[entryName - HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_1]; - return NULL; -} - std::string HGPdtToolDbUserMgrImpl::GetPassword(MYSQL* sql, const HGChar* userName) { assert(NULL != sql); @@ -1131,6 +1080,9 @@ int HGPdtToolDbUserMgrImpl::CreateMainTestTable(MYSQL* sql) cmd += ", last_modify_time datetime"; cmd += ", last_modify_user text not null"; cmd += ", current_entry int unsigned default 0"; + cmd += ", device_name text"; + cmd += ", device_type text"; + cmd += ", device_version text"; cmd += ");"; return mysql_query(sql, cmd.c_str()); } @@ -1281,6 +1233,36 @@ HGPdtToolDbDeviceImpl::~HGPdtToolDbDeviceImpl() m_userMgr->RemoveDevice(this); } +HGResult HGPdtToolDbDeviceImpl::GetName(HGChar* name, HGUInt maxLen) +{ + return GetProperty("device_name", name, maxLen); +} + +HGResult HGPdtToolDbDeviceImpl::SetName(const HGChar* name) +{ + return SetProperty("device_name", name); +} + +HGResult HGPdtToolDbDeviceImpl::GetType(HGChar* type, HGUInt maxLen) +{ + return GetProperty("device_type", type, maxLen); +} + +HGResult HGPdtToolDbDeviceImpl::SetType(const HGChar* type) +{ + return SetProperty("device_type", type); +} + +HGResult HGPdtToolDbDeviceImpl::GetVersion(HGChar* version, HGUInt maxLen) +{ + return GetProperty("device_version", version, maxLen); +} + +HGResult HGPdtToolDbDeviceImpl::SetVersion(const HGChar* version) +{ + return SetProperty("device_version", version); +} + HGResult HGPdtToolDbDeviceImpl::GetCurrEntry(HGUInt* entryName) { if (NULL == m_userMgr->m_sql) @@ -1332,12 +1314,12 @@ HGResult HGPdtToolDbDeviceImpl::SetCurrEntry(HGUInt entryName) const HGChar* entryNameStr = GetEntryNameStr(entryName); if (NULL == entryNameStr) { - return HGBASE_ERR_FAIL; + return HGBASE_ERR_INVALIDARG; } } char sqlCmd[1024] = { 0 }; - sprintf(sqlCmd, "update main_test set current_entry = %u, last_modify_time = now(), last_modify_user = '%s' where sn = '%s';", + sprintf(sqlCmd, "update main_test set current_entry = %u, last_modify_time = now(), last_modify_user = '%s' where sn = '%s';", entryName, m_userMgr->m_userName.c_str(), m_sn.c_str()); int ret = mysql_query(m_userMgr->m_sql, sqlCmd); return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; @@ -1653,6 +1635,80 @@ HGResult HGPdtToolDbDeviceImpl::UploadEntryImage(HGUInt entryName, const HGChar* return HGBASE_ERR_OK; } +HGResult HGPdtToolDbDeviceImpl::GetProperty(const HGChar* prop, HGChar* str, HGUInt maxLen) +{ + assert(NULL != prop && 0 != *prop); + + if (NULL == m_userMgr->m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == str || 0 == maxLen) + { + return HGBASE_ERR_INVALIDARG; + } + + char sqlCmd[1024] = { 0 }; + sprintf(sqlCmd, "select %s from main_test where sn = '%s';", prop, m_sn.c_str()); + int ret = mysql_query(m_userMgr->m_sql, sqlCmd); + if (0 != ret) + { + return HGBASE_ERR_FAIL; + } + + MYSQL_RES* sqlRes = mysql_use_result(m_userMgr->m_sql); + if (NULL == sqlRes) + { + return HGBASE_ERR_FAIL; + } + + MYSQL_ROW row = mysql_fetch_row(sqlRes); + if (NULL == row) + { + mysql_free_result(sqlRes); + return HGBASE_ERR_FAIL; + } + + if (NULL == row[0]) + { + *str = '\0'; + mysql_free_result(sqlRes); + return HGBASE_ERR_OK; + } + + if (maxLen < strlen(row[0]) + 1) + { + mysql_free_result(sqlRes); + return HGBASE_ERR_FAIL; + } + + strcpy(str, row[0]); + mysql_free_result(sqlRes); + return HGBASE_ERR_OK; +} + +HGResult HGPdtToolDbDeviceImpl::SetProperty(const HGChar* prop, const HGChar* str) +{ + assert(NULL != prop && 0 != *prop); + + if (NULL == m_userMgr->m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == str || 0 == *str) + { + return HGBASE_ERR_INVALIDARG; + } + + char sqlCmd[1024] = { 0 }; + sprintf(sqlCmd, "update main_test set %s = '%s', last_modify_time = now(), last_modify_user = '%s' where sn = '%s';", + prop, str, m_userMgr->m_userName.c_str(), m_sn.c_str()); + int ret = mysql_query(m_userMgr->m_sql, sqlCmd); + return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; +} + const HGChar* HGPdtToolDbDeviceImpl::GetEntryNameStr(HGUInt entryName) { if (entryName >= HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH && entryName <= HGPDTTOOLDB_ENTRYNAME_SCANNING_SENSOR) diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp index c5547b5..d0c3fc9 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp @@ -40,8 +40,6 @@ public: private: void RemoveDevice(class HGPdtToolDbDeviceImpl* deviceImpl); - static const HGChar* GetEntryNameCnStr(HGUInt entryName); - static std::string GetPassword(MYSQL* sql, const HGChar* userName); static std::string GetAuthString(MYSQL* sql, const HGChar* pwd); static int GetConnectId(MYSQL* sql); @@ -75,8 +73,15 @@ public: HGPdtToolDbDeviceImpl(class HGPdtToolDbUserMgrImpl* userMgr, const HGChar* sn); ~HGPdtToolDbDeviceImpl(); + HGResult GetName(HGChar* name, HGUInt maxLen); + HGResult SetName(const HGChar* name); + HGResult GetType(HGChar* type, HGUInt maxLen); + HGResult SetType(const HGChar* type); + HGResult GetVersion(HGChar* version, HGUInt maxLen); + HGResult SetVersion(const HGChar* version); HGResult GetCurrEntry(HGUInt* entryName); HGResult SetCurrEntry(HGUInt entryName); + HGResult GetEntryStatus(HGUInt entryName, HGUInt* entryStatus); HGResult SetEntryStatus(HGUInt entryName, HGUInt entryStatus); HGResult GetEntryExcepDesc(HGUInt entryName, HGChar* excepDesc, HGUInt maxLen); @@ -85,6 +90,8 @@ public: HGResult UploadEntryImage(HGUInt entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar *fileName); private: + HGResult GetProperty(const HGChar *prop, HGChar* str, HGUInt maxLen); + HGResult SetProperty(const HGChar* prop, const HGChar* str); const HGChar* GetEntryNameStr(HGUInt entryName); const HGChar* GetTestTableName(HGUInt entryName); const HGChar* GetDescTableName(HGUInt entryName); diff --git a/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp b/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp index 041fc77..a6772ca 100644 --- a/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp +++ b/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp @@ -17,7 +17,7 @@ int main() HGPdtToolDb_DownloadDeviceEntryImage(device, HGPDTTOOLDB_ENTRYNAME_IMAGE_QUALITY, "127.0.0.1", 21, "D:\\22.jpg"); //HGPdtToolDb_CloseDevice(device); - //HGPdtToolDb_Export(userMgr, "D:\\1.xls"); + HGPdtToolDb_Export(userMgr, "D:\\1.xls"); HGPdtToolDb_DestroyUserMgr(userMgr); }