MFC応用におけるいくつかの小さな問題

1472 ワード

詳細
最近、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ボックスに入力を取得し、uint 8_に移動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]);