HID报告/扫描RN 42 HID游戏手柄配置文件的代码

时间:2014-12-26 19:50:22

标签: bluetooth

我正在创建一个带有arduino leonardo和RN 42 HID模块的蓝牙HID游戏手柄。

我实际上可以使用该模块迭代键盘或鼠标,但我不明白如何

发送正确的扫描码以迭代游戏手柄或操纵杆。

在该模块的用户指南中,他们说原始报告必须像这样发送:

0xFD,0x06,Buttons 0-7,Buttons 8-15,X1,Y1,X2,Y2

有关如何设置报告的想法吗?

1 个答案:

答案 0 :(得分:2)

首先,您必须初始化SoftwareSerial实例。 然后你必须输入 $$$ 序列的RN-42模块的命令模式,设置HID操纵杆模式(SH,0240)和命名设备(SN,...),设置波特率(SU,...)等。 成功初始化模块后,您可以按如下方式发送HID操纵杆报告:

 
SoftwareSerial bluetooth(bluetoothRX, bluetoothTX);
//...

// Command Mode
// --------------
bluetooth.begin(9600);
delay(50); 
bluetooth.print("$$$");
delay(50); 
bluetooth.print("SN,HIDJoystick\r\n");
delay(50); 
bluetooth.print(" SU,57\r\n");
delay(50); 
bluetooth.print("S~,6\r\n");
delay(600); 
bluetooth.print("SH,0240\r\n");
delay(200); 
bluetooth.print("R,1\r\n");  
delay(400);

// HID Joystick Report
// --------------
bluetooth.write((byte)0xFD); //Start HID Report
bluetooth.write((byte)0x6);  //Length byte

// 1. X/Y-Axis
bluetooth.write(45);  //First X coordinate
bluetooth.write(-33); //First Y coordinate

// 2. X/Y-Axis
bluetooth.write(45);  //Second X coordinate
bluetooth.write(-33); //Second Y coordinate

// Buttons
bluetooth.write(B10000001); // Second Byte (Buttons 1-8)
bluetooth.write(B10000000); // Second Byte (Buttons 9-16)

请注意,按钮是通过二进制值控制的。