MFC应用中几个小问题

近期维护一个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()

扫描二维码关注公众号,回复: 254346 查看本文章
        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]);
	

猜你喜欢

转载自cutecoot.iteye.com/blog/2405374