作者: Blue_Pen
查看: 3867|回复: 6
打印 上一主题 下一主题

[源码] 【C#USB力反馈】BinGoo系列之游戏手柄、操纵杆编程

[复制链接]
跳转到指定楼层
楼主
Blue_Pen 发表于 2014-11-8 16:45:39 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
查看: 3867|回复: 6
本帖最后由 Blue_Pen 于 2014-11-8 23:33 编辑

【C#USB力反馈】BinGoo系列之游戏手柄、操纵杆编程

* 名称:USB游戏手柄、操纵杆案例
* 功能:对usb力反馈信息进行处理,如手柄上下左右键、模拟驾驶器方向盘、按钮、刹车、油门、档位键等,使用微软的Microsoft.DirectX.DirectInput
* 说明:引用两个核心dll:Microsoft.DirectX.DirectInput.dll、Microsoft.DirectX.dll,这两个dll在源码dll文件夹中
下面贴出核心代码
[C#] 纯文本查看 复制代码
 [/color][/size][/align][align=left][size=3][color=#000000]/// <summary>
/// 初始化操作杆
/// </summary>
/// <returns></returns>
public bool InitDirectInput()
{
// 遍历系统中的操纵杆设备
foreach (DeviceInstance instance in Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly))
{
// 选第一个操纵杆设备并实例化Device
applicationDevice = new Device(instance.InstanceGuid);
break;
}

if (applicationDevice==null)
{
MessageBox.Show("操纵杆加载失败", "没有发现操纵杆");
return false;
}

// 设置操纵杆默认预定的格式
applicationDevice.SetDataFormat(DeviceDataFormat.Joystick);
// 设置操纵杆设备CooperativeLevel属性
applicationDevice.SetCooperativeLevel(this, CooperativeLevelFlags.Exclusive | CooperativeLevelFlags.Foreground);
// 遍历操纵杆设备上的所有对象。
foreach (DeviceObjectInstance d in applicationDevice.Objects)
{
//力反馈信息
if (((d.ObjectId & (int) DeviceObjectTypeFlags.Axis) != 0))
{
// 设置输入范围
applicationDevice.Properties.SetRange(ParameterHow.ById, d.ObjectId, new InputRange(-1000, +1000));
}
//反馈操纵杆的按钮信息显示对应界面按钮
UpdateControls(d);
}
return true;
}
/// <summary>
/// 获取操纵杆数据
/// </summary>
public void GetData()
{
// 确保操纵杆设备有效
if ( applicationDevice==null)
return;

try
{
// 获取Poll信息
applicationDevice.Poll();
}
catch (InputException inputex)
{
if ((inputex is NotAcquiredException) || (inputex is InputLostException))
{

try
{
// 获取设备信息
applicationDevice.Acquire();
}
catch (InputException)
{
//设备获取失败,原因可能是焦点没有在此窗体内
return;
}
}

} //catch(InputException inputex)

//获取设备状态
try
{
state = applicationDevice.CurrentJoystickState;
}
catch (InputException)
{
return;
}
try
{
//更新UI
UpdateUI();
}
catch
{
}
}

以下是Demo效果图:
源码JoystickDemo下载:


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播
回复 论坛版权

使用道具 举报

7#
wenchen2020 发表于 2020-2-11 18:36:10 | 只看该作者
谢谢分享,下载学习了。。
6#
jacksonwong 发表于 2019-5-18 12:44:10 | 只看该作者
学习了。。。。。
回复

使用道具 举报

5#
胤凌郁枫 发表于 2018-9-23 17:59:06 | 只看该作者
0000000000000000000000000000
地板
胤凌郁枫 发表于 2018-9-18 10:53:23 | 只看该作者
111111111111111111111111111111111111111111111111111111111
板凳
工会发的 发表于 2015-3-23 18:21:12 | 只看该作者
学习了。。。。。。。。。。。。。
回复

使用道具 举报

沙发
wtujoxk 发表于 2014-11-8 20:16:41 | 只看该作者
谢谢分享!!!!!!!nice
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-11-23 06:22, Processed in 0.584826 second(s), 32 queries , Gzip On.

快速回复 返回顶部 返回列表