MFC应用中几个小问题
程序员文章站
2022-06-01 14:29:34
...
近期维护一个MFC框架的测试程序,测试HID设备的指令协议。中间遇到并解决的几个小问题,记录如下:
1. 获取系统时间,毫秒级
SYSTEMTIME sys; GetLocalTime(&sys); char nTime[20]; sprintf(nTime, "%02d:%02d:%02d.%03d : ", sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds);
2. 用hid_enumerate获取hid设备列表时,使用过的hid设备消失了。
后来发现
a。连接设备后,hid_enumerate不会再显示此设备
b。关闭设备连接后有读数据的线程未退出,所以用hid_enumerate获取设备时依然没有此设备。所以需要关闭连接时关闭线程。
ThreadFlag = false; hid_close(HID_handle); HID_handle = NULL; DWORD exitCode = 0; for (;;) { GetExitCodeThread(pReadHIDThread, &exitCode); if (exitCode != STILL_ACTIVE) break; }
增加读数据现场的flag判断,false时return 0.关闭设备时设flag为false,并判断线程已结束。
3. 获取edit框中输入,转为uint8_t.(主要是字节位数要对,否则会溢出)。因为是cstring,所以使用swscanf()
uint8_t buff[13]; CString txt; GetDlgItem(IDC_EDIT_CFGCMD)->GetWindowText(txt); swscanf(txt, L"%hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx", &buff[0], &buff[1], &buff[2], &buff[3], &buff[4], &buff[5], &buff[6], &buff[7], &buff[8], &buff[9], &buff[10], &buff[11], &buff[12]);