@Pigmon
2018-03-08T08:40:47.000000Z
字数 1896
阅读 1437
慧拓
G29WheelSync.h
G29WheelSync.cpp
类:G29Sync
主要函数:
Sync, PostSync
API:
/*@Func:IsInited@Summary:是否经过初始化且获取过 state@Params:@Return:Bool*/bool G29Sync::IsInited()/*@Func:Sync@Summary:将方向盘转角同步到输入的目标转向比例。(通过设置方向盘回弹位置)每帧调用,如在 Timer, Update, Tick 等函数中调用。单次调用无效@Params:_target: 目标转向比例,取值 [-100, 100]. 100: 右转满; -100: 左转满@Return:当前方向盘转向,取值 [-100, 100]. 100: 右转满; -100: 左转满*/int G29Sync::Sync(const int _target)/*@Func:PostSync@Summary:强制结束同步,将方向盘回弹位置回零@Params:@Return:*/void G29Sync::PostSync() const/*@Func:SyncDone@Summary:判断同步是否完成@Params:_target: 同步目标_eps:判断2个角度相等的阈值,默认3@Return:True: 完成; False:未完成*/bool G29Sync::SyncDone(int _target, int _eps)/*@Func:CurrentState@Summary:更新 m_state ; 在 LogiUpdate() 后调用@Params:@Return:m_state : DIJOYSTATE2**/DIJOYSTATE2* G29Sync::CurrentState()/*@Func:CurrentWheelPct@Summary:得到当前方向盘转角。取值 [-100, 100]. 100: 右转满; -100: 左转满@Params:@Return:转角:int [-100, 100]*/int G29Sync::CurrentWheelPct()/*@Func:WheelAngleToPos@Summary:将方向盘[-32767, 32767] 转角 归一化到 [-100, 100]@Params:_angle: int ,state.lx@Return:转角:int [-100, 100]*/int G29Sync::WheelAngleToPos(int _angle)
// 在每帧执行的函数,如 OnTimer, Update, Tick 等G29Sync::GetInstance()->Sync(target);// 判断是否同步完成if (G29Sync::GetInstance()->SyncDone(target)) {// Do sth.}// 进入遥控接管前,将方向盘回复到遥控状态G29Sync::GetInstance()->PostSync();
#include <iostream>#include <windows.h>#include "G29WheelSync.h"void main(){// 1. 在一个持续轮询过程中将方向盘转至左满舵int counter = 0, target = -100;int current_wheel = -65535;while (counter < 10000){counter++;current_wheel = G29Sync::GetInstance()->Sync(target);Sleep(10);if (G29Sync::GetInstance()->SyncDone(target)) {std::cout << "Sync Over." << std::endl;break;}else {std::cout << current_wheel << std::endl;}}// 2. 转完后回转至 0,并将方向盘阻力放松。G29Sync::GetInstance()->PostSync();// 3. 显示回转过程中的方向盘转角 [-100, 100]while (!G29Sync::GetInstance()->SyncDone(0, 3)){if (LogiUpdate() && G29Sync::GetInstance()->CurrentState()){current_wheel = G29Sync::GetInstance()->CurrentWheelPct();std::cout << current_wheel << std::endl;}}system("pause");}