📄 htcsensors.cpp
字号:
#include <windows.h>
#include "HtcStuff.h"
// -- Polling the sensor using the SDK dll ------------------------
#define SENSOR_DLL L"HTCSensorSDK.dll"
#define SENSOR_TILT 1
#define SENSOR_LIGHT 2
typedef VOID * PSENSORDATA;
typedef HANDLE (WINAPI * PFN_HTCSensorOpen)(DWORD);
typedef void (WINAPI * PFN_HTCSensorClose)(HANDLE);
typedef DWORD (WINAPI * PFN_HTCSensorGetDataOutput)(HANDLE, PSENSORDATA);
PFN_HTCSensorOpen pfnHTCSensorOpen = NULL;
PFN_HTCSensorClose pfnHTCSensorClose = NULL;
PFN_HTCSensorGetDataOutput pfnHTCSensorGetDataOutput = NULL;
typedef struct _LSENSORDATA
{
DWORD Unknown1; // Always 3
BYTE Luminance; // between 0 and 30
} LSENSORDATA, *PLSENSORDATA;
HMODULE ig_hSensorLib = 0;
HANDLE ig_hLSensor = 0;
bool HTCSensorsInit()
{
if (pfnHTCSensorOpen == NULL)
{
ig_hSensorLib = LoadLibrary(SENSOR_DLL);
if (ig_hSensorLib == NULL)
{
MessageBox(NULL,
_T("Unable to load Sensor DLL"),
_T("Error"), MB_TOPMOST | MB_ICONERROR);
return false;
}
pfnHTCSensorOpen = (PFN_HTCSensorOpen)GetProcAddress(ig_hSensorLib, L"HTCSensorOpen");
pfnHTCSensorClose = (PFN_HTCSensorClose)GetProcAddress(ig_hSensorLib, L"HTCSensorClose");
pfnHTCSensorGetDataOutput = (PFN_HTCSensorGetDataOutput)GetProcAddress(ig_hSensorLib, L"HTCSensorGetDataOutput");
if (pfnHTCSensorOpen == NULL ||
pfnHTCSensorClose == NULL ||
pfnHTCSensorGetDataOutput == NULL)
{
MessageBox(NULL,
_T("Unable to load Sensor DLL procs"),
_T("Error"), MB_TOPMOST | MB_ICONERROR);
return false;
}
}
return true;
}
bool HTCSensorsUninit()
{
pfnHTCSensorClose = 0;
pfnHTCSensorOpen = 0;
pfnHTCSensorGetDataOutput = 0;
if (ig_hSensorLib) FreeLibrary(ig_hSensorLib);
ig_hSensorLib = 0;
return true;
}
bool HTCLSensorInit()
{
if (!pfnHTCSensorOpen) HTCSensorsInit();
if (!pfnHTCSensorOpen) return false;
if (pfnHTCSensorOpen && !ig_hLSensor)
ig_hLSensor = pfnHTCSensorOpen(SENSOR_LIGHT);
return (ig_hLSensor != NULL);
}
bool HTCLSensorFree()
{
if (pfnHTCSensorClose && ig_hLSensor)
{
pfnHTCSensorClose(ig_hLSensor);
ig_hLSensor = 0;
}
return (ig_hLSensor == NULL);
}
int HTCLSensorGetValue()
{
if (!ig_hLSensor || !pfnHTCSensorGetDataOutput) return 0;
LSENSORDATA sd;
ZeroMemory(&sd, sizeof(sd));
pfnHTCSensorGetDataOutput(ig_hLSensor, &sd);
double ret = (double)sd.Luminance * (double)755 / (double)208;
return (int)ret;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -