2007年9月19日

XXX7600 : Fix Calibration

  • 讀取Registry儲存值:
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DEVICEMAP\\TOUCH"), 0, KEY_QUERY_VALUE, &hkey) != ERROR_SUCCESS)
return 0;

dwSize = sizeof(str);
lResult = RegQueryValueEx(hkey, _T("CalibrationData"), NULL, &dwType, (LPBYTE)str, &dwSize); //query registry value


##CONTINUE##
  • 分割字串,並計算與預設值的差值總和(每一點座標相減)
pStr = wcstok(str, seps);

for (i=0; pStr != NULL; i++)
{
wcscpy(token[i], pStr);
tokennum[i]=_wtoi(token[i]);
pStr = wcstok(NULL, seps);
}

for(i=0;i<10;i++) sum =" sum"> 50)
bMAXVal = true;
}
if(sum > 400)
{
lResult = RegSetValueEx(hkey, _T("CalibrationData"), NULL, REG_SZ, (LPBYTE)defaultval, dwSize);
RegCloseKey(hkey);
bMAXVal = true;
}
else
RegCloseKey(hkey);

  • 若差值總和過大或其中一點差值大於40則在進入系統後重新做校正。

沒有留言: