图传部分只需要通过电路的连接即可使用,无需编码。
车手端的控制系统主要分为:
开发环境为visual studio 2017
1.解析罗技G29方向盘控制信息
引入(自行在罗技官网下载SDK)
#include "LogitechSteeringWheelLib.h"
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib, "LogitechSteeringWheelLib.lib")
#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")
获取方向数据
主体逻辑
while (LogiUpdate() && LogiIsConnected(0))
{
DIJOYSTATE2 * wheel = LogiGetState(0);
int x = wheel->lX;//-32767至32767 左右
int y = wheel->lY;//-32767至32767,默认32767 前进
int z = wheel->lRz;//-32767至32767,默认32767 后退
}
2.通过蓝牙将控制信息发出去
定义端口
HANDLE hCom = CreateFile(L"\\\\\.\\COM4", GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL); //与HC-05/6建立无线连接,COM4是电脑的端口信息
if (hCom == INVALID_HANDLE_VALUE) {
std::cout << "Port unavailable!" << std::endl;
}
else {
printf("初始化成功!\n");
}
//以下配置串口通信参数
DCB dcb;
GetCommState(hCom, &dcb);
dcb.BaudRate = 9600;
dcb.ByteSize = DATABITS_8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
BOOL br = SetCommState(hCom, &dcb);
通过蓝牙发出
DWORD dwTransmitted;
WriteFile(hCom, &sendInfo, 2, &dwTransmitted, NULL);//将方向信息赋值到变量sendinfo中
3.主体程序中对方向数据的处理
int x = wheel->lX;//-32767至32767 左右
int y = wheel->lY;//-32767至32767,默认32767 前进
int z = wheel->lRz;//-32767至32767,默认32767 后退
罗技SDK定义的方向数据范围是±32767,发送前需要映射到左右(0-180),前后(0-255),这样做的原因,我会在系列文章四中说明
下一篇展示赛车端的代码主体。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved