欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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]);