由于实验需要读取Logitech G27的数据,就基于DirectX写了个程序读取数据,比较仓促,这里做简单总结(需要的朋友看一遍就应该很容易理解了~~).
开发环境: VS2008+Qt库(设计界面)+DirectX SDK
1.连接硬件,需要连接电源
2.安装自带的驱动软件
3.安装DirectX SDK (微软官网可以下载到)
4.关键的代码如下:
// #############################################################################
//DirectInput
// #############################################################################
#include <dinput.h>
#pragma comment(lib, "dinput8.lib")
#pragma comment(lib, "dxguid.lib")
// #############################################################################
// #############################################################################
//G27状态变量
extern DIJOYSTATE2 g_G27State;
extern QMutex g_mutexG27;
定义G27类:
class CG27 :
public QThread
{
Q_OBJECT
public:
CG27(void);
~CG27(void);
public:
bool InitializeG27();
protected:
void run();
signals:
void GetG27Info();
};
G27类相关实现:
#include "G27.h"
LPDIRECTINPUT8 g_pDI = NULL;
LPDIRECTINPUTDEVICE8 g_pJoystick = NULL;
CG27::CG27(void)
{
// InitializeG27();
}
CG27::~CG27(void)
{
}
//-----------------------------------------------------------------------------
// Name: EnumJoysticksCallback()
// Desc: Called once for each enumerated joystick. If we find one, create a
// device interface on it so we can play with it.
//-----------------------------------------------------------------------------
BOOL CALLBACK
enumCallback(const DIDEVICEINSTANCE* instance, VOID* context)
{
HRESULT hr;
// Obtain an interface to the enumerated joystick.
hr = g_pDI->CreateDevice(instance->