最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

基于VB的Cyborg X飞行摇杆数据采集研究

IT圈 admin 26浏览 0评论

2024年5月9日发(作者:鹿娅芳)

基于VB的Cyborg X飞行摇杆数据采集研究

房泽平;段建民

【摘 要】提出了基于VB的Cyborg X飞行摇杆数据采集方案,通过调用

中的游戏杆API函数获取Cyborg X飞行摇杆的位置和按键信息.设计

了数据采集的界面和程序,以数值和图形的形式显示Cyborg X飞行摇杆的位置和

按键信息.本研究对Cyborg X飞行摇杆的应用具有实用价值.

【期刊名称】《中原工学院学报》

【年(卷),期】2014(025)001

【总页数】4页(P18-21)

【关键词】VB;Cyborg X飞行摇杆;应用程序编程接口函数;动态链接库

【作 者】房泽平;段建民

【作者单位】北京工业大学,北京100124;中原工学院,郑州450007;北京工业大学,

北京100124

【正文语种】中 文

【中图分类】TP311.52

游戏杆通常应用于飞行模拟类游戏机中,绝大多数游戏杆设计是以飞机飞行控制杆

为原型的,其作为一种附属的输入设备,可代替鼠标、键盘.游戏杆可以提供位置

信息和按键的状态信息,因此也被广泛应用于其他领域.张爱红等将游戏杆用于机

器人虚拟示教系统的编程[1].于晓康等用游戏杆控制视频回放系统[2].李国如采用游

戏杆作为外部操纵设备研究无人直升机舰面起降仿真技术[3].Cyborg X飞行摇杆

因其出色的人机工程、前沿的设计和独特的功能,被逐步应用于工业领域.在实际

应用中,需要明确Cyborg X飞行摇杆的位置和按键信息.VB(Visual Basic)是微软

公司推出的功能强大的集成开发环境,在使用VB进行编程时,准确调用API函数

是关键,通过调用API函数可以完成图像处理、编写仿真和模拟应用软件等.目前,

有关Cyborg X飞行摇杆的位置和按键信息的研究较少,为此,本文提出了基于

VB的Cyborg X飞行摇杆数据采集的方案,用来获取Cyborg X飞行摇杆的位置

和按键信息,并以数值和图形的形式显示,为Cyborg X飞行摇杆在工业领域的应

用提供了技术保证.

1 Cyborg X飞行摇杆

为庆祝Cyborg系列的摇杆诞生10周年,赛钛客(Saitek公司)推出Cyborg X飞

行摇杆(如图1所示),整体摇杆采用了高精度的电位器,广泛应用于绝大多数的飞

行模拟类游戏机中,其构成为:

(1)1个快速响应扳机;

(2)1个8方向视角可调苦力帽;

(3)1个鼠标滚动轮;

(4)11个功能按键

(5)1个SHIFT二档模式键,通过软件可使按键数量扩充两倍;

(6)5个高精度模拟轴;

(7)X、Y、Z轴旋转及独立的双油门(滑块和Z轴).

图1 Cyborg X飞行摇杆

2 游戏手柄API函数及调用

2.1 动态链接库中的游戏手柄API函数

API(Application Programming Interface)为操作系统自身调用的函数,用来控

制Windows各个部件的外观和行为.在Windows中,API函数是以动态链接库

(DLL文件)的形式提供给用户的,Windows中一些基本的动态链接库(DLL)构成了

全体的Windows API函数.Windows将系统使用的API函数包装成、

、及四大动态链接库,其中真正具有多媒体处理能

力的API函数为动态链接库.Windows的动态链接库提供

了一个包含几十个专用于处理多媒体音频和游戏手柄的API函数[4].运用

中的API函数,可以编写出功能强大的游戏手柄程序,常用的与游戏

手柄相关的API函数为:

(1)joyGetDevCaps函数,用于查询指定的游戏杆设备以确定其性能;

(2)joyGetNumDevs函数,用于返回系统支持的游戏杆设备的数量;

(3)joyGetPos函数,用于查询指定的游戏杆设备的位置和活动性;

(4)joyGetPosEx函数,用于查询一个游戏杆设备的位置和它的按扭状态;

(5)joyGetThreshold函数,用于查询指定游戏杆设备的当前移动阈值;

(6)joyReleaseCapture函数,用于释放由JoySetCapture函数设置的在指定游戏

杆设备上的捕获;

(7)joySetCapture函数,用于发送一个游戏杆消息至指定的窗口;

(8)joySetThreshold函数,用于设置指定游戏杆设备的移动阈值.

其中joySetCapture、joyReleaseCapture和joyGetPosEx等函数在

中的函数原型分别为:

MMRESUL T joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod,

BOOL fChanged);

MMRESULT joyReleaseCapture( UINT uJoyID);

MMRESULT joyGetPosEx( UINT uJoyID, LPJOYINFOEX pji ).

2.2 VB环境中游戏手柄API函数的调用

在VB环境中,利用Declare语句(一般有2种形式)实现对API函数的调用.对于

DLL中没有返回值的子程序,使用的Declare语句为:

[Public/Private] Declare Sub name Lib “libname”[Alias

“aliasname”][([arglist])]

对于DLL中有返回值的子程序,使用的语句为:

[Public/Private] Declare Function name Lib “libname” [Alias

“aliasname”][([arglist])] [As type]

其中,Lib参数是包含所声明的过程动态链接库或代码资源,所有声明都需要Lib

子句.Libname参数包含所声明的过程动态链接库名或代码资源名.一个重要的问题

是,API函数的Declare语句必须是Windows所要求的形式,如果省略了ByVal

关键字,通常会使系统锁死[5].

joySetCapture函数、joyReleaseCapture函数和joyGetPosEx函数在VB中调

用的形式分别为:

(1)Declare Function joySetCapture Lib "" (ByVal hwnd As Long,

ByVal uJoyID As Long, ByVal uPeriod As Long, ByVal fChanged As Long) As

Long;

(2)Declare Function joyReleaseCapture Lib "" (ByVal uJoyID As

Long) As Long;

(3)Declare Function joyGetPosEx Lib "" (ByVal uJoyID As Long,

pji As JOYINFOEX) As Long.

3 数据采集界面设计

3.1 采集数据信息

根据Cyborg X飞行摇杆的功能,需要采集飞行摇杆的位置信息和按键的状态信息,

这些信息包括X轴、Y轴、Z轴旋转及双油门、按键、鼠标滑轮和苦力帽状态等信

息.

3.2 采集界面

基于VB的采集界面如图2所示.其主要以数值和图形的形式显示joyGetPosEx函

数被成功调用后返回的Cyborg X飞行摇杆的位置信息和按键状态信息.

图2 采集界面

对1-11功能键和SHIFT键设置了相应的按钮,当按下功能键时,相应的按钮会变

成红色.苦力帽的8个方向分别用较粗的Bar表示,当苦力帽倾斜于某个方向时,

与该方向相对应的Bar的颜色由黑色变为红色.图2中,红色的“十”字箭头直观

地反映了游戏杆X轴和Y轴方向的移动.Z轴、Z轴旋转和滑块的信息分别用矩形

框填充颜色的多少来表示.鼠标滚轮用四个棕色的矩形框表示,当滚动鼠标滚轮时,

其中的一个矩形框的颜色变为红色,并随着滚动轮前后移动,该变红的矩形框随之

左右移动.

4 程序设计

采集Cyborg X飞行摇杆数据的流程图如图3所示.调用joyGetPosEx函数的返回

值,如果非0,则退出程序;如果为0,则返回Cyborg X飞行摇杆的信息.对返回

结果的处理程序包括:模拟量X轴、Y轴、Z轴、Z轴旋转和滑块的处理程序;苦

力帽8个方向视角键处理程序;1-11功能键和SHIFT键处理程序;鼠标滚轮处理

程序.

图3 采集程序流程图

5 运行结果

joyGetPosEx函数的返回值是JOYINFOEX结构体,JOYINFOEX的定义为:

Type JOYINFOEX

dwSize As Long′结构体大小

dwFlags As Long′返回内容标志

dwXpos As Long′X轴位置

dwYpos As Long′Y轴位置

dwZpos As Long′Z轴位置

dwRpos As Long′Z轴旋转

dwUpos As Long′滑块

dwVpos As Long′第6轴位置

dwButtons As Long′按键状态

dwButtonNumber As Long′按键数量

dwPOV As Long′苦力帽

dwReserved1 As Long′保留

dwReserved2 As Long′保留

End Type

采集程序运行后,获得Cyborg X 飞行摇杆的数据为:模拟量X轴、Y轴、Z轴、

Z轴旋转和滑块的数值范围均为0~65 535;1-11功能键的键值分别为1、2、4、

8、16、32、64、128、256、512、1 024;SHIFT键的键值为8 192;鼠标滚轮

的向前滚动键值为2 048,鼠标滚轮的向后滚轮键值为4 096;8个方向视角可调

苦力帽的键值分别为0(北)、4 500(东北)、9 000(东)、13 500(东南)、18 000(南)、

22 500(西南)、27 000(西)、31 500(西北).由程序运行后获得的结果可以看出,对

于模拟量,可以根据模拟量的大小判断其位置和移动方向;对于按键,可以根据键

值判断是哪个按键被按下.获取的数值结果,可以作为以后应用编程的依据.

6 结 语

本文在VB环境中,通过调用动态链接库中的游戏杆API函数,获取

了Cyborg X飞行摇杆的位置和按键信息.设计了Cyborg X飞行摇杆数据采集的

界面和程序.通过运行程序,获得了Cyborg X飞行摇杆的位置和按键的数值,并

以图形的形式显示,为Cyborg X飞行摇杆的应用提供了必要的位置和按键信息,

具有较好的实用价值.

参考文献:

[1] 张爱红,张秋菊. 游戏杆在机器人虚拟示教系统中的应用编程[J]. 江南大学学报

(自然科学版),2003,2(5):474-477.

[2] 于晓康,柴乔林. 基于VC++的可控视频回放系统[J]. 计算机应用,2003(12):

326-328.

[3] 李国如. 无人直升机舰面起降仿真技术研究[D]. 南京:南京航空航天大学,

2009.

[4] 岳云飞. DLL 在VB 接口程序中的应用[J]. 计算技术与自动化,2006,25(4):

87-89.

[5] 陈家俊. DLL 技术在VB 编程中的应用[J]. 皖西学院学报,2006,22(2):86-

88.

2024年5月9日发(作者:鹿娅芳)

基于VB的Cyborg X飞行摇杆数据采集研究

房泽平;段建民

【摘 要】提出了基于VB的Cyborg X飞行摇杆数据采集方案,通过调用

中的游戏杆API函数获取Cyborg X飞行摇杆的位置和按键信息.设计

了数据采集的界面和程序,以数值和图形的形式显示Cyborg X飞行摇杆的位置和

按键信息.本研究对Cyborg X飞行摇杆的应用具有实用价值.

【期刊名称】《中原工学院学报》

【年(卷),期】2014(025)001

【总页数】4页(P18-21)

【关键词】VB;Cyborg X飞行摇杆;应用程序编程接口函数;动态链接库

【作 者】房泽平;段建民

【作者单位】北京工业大学,北京100124;中原工学院,郑州450007;北京工业大学,

北京100124

【正文语种】中 文

【中图分类】TP311.52

游戏杆通常应用于飞行模拟类游戏机中,绝大多数游戏杆设计是以飞机飞行控制杆

为原型的,其作为一种附属的输入设备,可代替鼠标、键盘.游戏杆可以提供位置

信息和按键的状态信息,因此也被广泛应用于其他领域.张爱红等将游戏杆用于机

器人虚拟示教系统的编程[1].于晓康等用游戏杆控制视频回放系统[2].李国如采用游

戏杆作为外部操纵设备研究无人直升机舰面起降仿真技术[3].Cyborg X飞行摇杆

因其出色的人机工程、前沿的设计和独特的功能,被逐步应用于工业领域.在实际

应用中,需要明确Cyborg X飞行摇杆的位置和按键信息.VB(Visual Basic)是微软

公司推出的功能强大的集成开发环境,在使用VB进行编程时,准确调用API函数

是关键,通过调用API函数可以完成图像处理、编写仿真和模拟应用软件等.目前,

有关Cyborg X飞行摇杆的位置和按键信息的研究较少,为此,本文提出了基于

VB的Cyborg X飞行摇杆数据采集的方案,用来获取Cyborg X飞行摇杆的位置

和按键信息,并以数值和图形的形式显示,为Cyborg X飞行摇杆在工业领域的应

用提供了技术保证.

1 Cyborg X飞行摇杆

为庆祝Cyborg系列的摇杆诞生10周年,赛钛客(Saitek公司)推出Cyborg X飞

行摇杆(如图1所示),整体摇杆采用了高精度的电位器,广泛应用于绝大多数的飞

行模拟类游戏机中,其构成为:

(1)1个快速响应扳机;

(2)1个8方向视角可调苦力帽;

(3)1个鼠标滚动轮;

(4)11个功能按键

(5)1个SHIFT二档模式键,通过软件可使按键数量扩充两倍;

(6)5个高精度模拟轴;

(7)X、Y、Z轴旋转及独立的双油门(滑块和Z轴).

图1 Cyborg X飞行摇杆

2 游戏手柄API函数及调用

2.1 动态链接库中的游戏手柄API函数

API(Application Programming Interface)为操作系统自身调用的函数,用来控

制Windows各个部件的外观和行为.在Windows中,API函数是以动态链接库

(DLL文件)的形式提供给用户的,Windows中一些基本的动态链接库(DLL)构成了

全体的Windows API函数.Windows将系统使用的API函数包装成、

、及四大动态链接库,其中真正具有多媒体处理能

力的API函数为动态链接库.Windows的动态链接库提供

了一个包含几十个专用于处理多媒体音频和游戏手柄的API函数[4].运用

中的API函数,可以编写出功能强大的游戏手柄程序,常用的与游戏

手柄相关的API函数为:

(1)joyGetDevCaps函数,用于查询指定的游戏杆设备以确定其性能;

(2)joyGetNumDevs函数,用于返回系统支持的游戏杆设备的数量;

(3)joyGetPos函数,用于查询指定的游戏杆设备的位置和活动性;

(4)joyGetPosEx函数,用于查询一个游戏杆设备的位置和它的按扭状态;

(5)joyGetThreshold函数,用于查询指定游戏杆设备的当前移动阈值;

(6)joyReleaseCapture函数,用于释放由JoySetCapture函数设置的在指定游戏

杆设备上的捕获;

(7)joySetCapture函数,用于发送一个游戏杆消息至指定的窗口;

(8)joySetThreshold函数,用于设置指定游戏杆设备的移动阈值.

其中joySetCapture、joyReleaseCapture和joyGetPosEx等函数在

中的函数原型分别为:

MMRESUL T joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod,

BOOL fChanged);

MMRESULT joyReleaseCapture( UINT uJoyID);

MMRESULT joyGetPosEx( UINT uJoyID, LPJOYINFOEX pji ).

2.2 VB环境中游戏手柄API函数的调用

在VB环境中,利用Declare语句(一般有2种形式)实现对API函数的调用.对于

DLL中没有返回值的子程序,使用的Declare语句为:

[Public/Private] Declare Sub name Lib “libname”[Alias

“aliasname”][([arglist])]

对于DLL中有返回值的子程序,使用的语句为:

[Public/Private] Declare Function name Lib “libname” [Alias

“aliasname”][([arglist])] [As type]

其中,Lib参数是包含所声明的过程动态链接库或代码资源,所有声明都需要Lib

子句.Libname参数包含所声明的过程动态链接库名或代码资源名.一个重要的问题

是,API函数的Declare语句必须是Windows所要求的形式,如果省略了ByVal

关键字,通常会使系统锁死[5].

joySetCapture函数、joyReleaseCapture函数和joyGetPosEx函数在VB中调

用的形式分别为:

(1)Declare Function joySetCapture Lib "" (ByVal hwnd As Long,

ByVal uJoyID As Long, ByVal uPeriod As Long, ByVal fChanged As Long) As

Long;

(2)Declare Function joyReleaseCapture Lib "" (ByVal uJoyID As

Long) As Long;

(3)Declare Function joyGetPosEx Lib "" (ByVal uJoyID As Long,

pji As JOYINFOEX) As Long.

3 数据采集界面设计

3.1 采集数据信息

根据Cyborg X飞行摇杆的功能,需要采集飞行摇杆的位置信息和按键的状态信息,

这些信息包括X轴、Y轴、Z轴旋转及双油门、按键、鼠标滑轮和苦力帽状态等信

息.

3.2 采集界面

基于VB的采集界面如图2所示.其主要以数值和图形的形式显示joyGetPosEx函

数被成功调用后返回的Cyborg X飞行摇杆的位置信息和按键状态信息.

图2 采集界面

对1-11功能键和SHIFT键设置了相应的按钮,当按下功能键时,相应的按钮会变

成红色.苦力帽的8个方向分别用较粗的Bar表示,当苦力帽倾斜于某个方向时,

与该方向相对应的Bar的颜色由黑色变为红色.图2中,红色的“十”字箭头直观

地反映了游戏杆X轴和Y轴方向的移动.Z轴、Z轴旋转和滑块的信息分别用矩形

框填充颜色的多少来表示.鼠标滚轮用四个棕色的矩形框表示,当滚动鼠标滚轮时,

其中的一个矩形框的颜色变为红色,并随着滚动轮前后移动,该变红的矩形框随之

左右移动.

4 程序设计

采集Cyborg X飞行摇杆数据的流程图如图3所示.调用joyGetPosEx函数的返回

值,如果非0,则退出程序;如果为0,则返回Cyborg X飞行摇杆的信息.对返回

结果的处理程序包括:模拟量X轴、Y轴、Z轴、Z轴旋转和滑块的处理程序;苦

力帽8个方向视角键处理程序;1-11功能键和SHIFT键处理程序;鼠标滚轮处理

程序.

图3 采集程序流程图

5 运行结果

joyGetPosEx函数的返回值是JOYINFOEX结构体,JOYINFOEX的定义为:

Type JOYINFOEX

dwSize As Long′结构体大小

dwFlags As Long′返回内容标志

dwXpos As Long′X轴位置

dwYpos As Long′Y轴位置

dwZpos As Long′Z轴位置

dwRpos As Long′Z轴旋转

dwUpos As Long′滑块

dwVpos As Long′第6轴位置

dwButtons As Long′按键状态

dwButtonNumber As Long′按键数量

dwPOV As Long′苦力帽

dwReserved1 As Long′保留

dwReserved2 As Long′保留

End Type

采集程序运行后,获得Cyborg X 飞行摇杆的数据为:模拟量X轴、Y轴、Z轴、

Z轴旋转和滑块的数值范围均为0~65 535;1-11功能键的键值分别为1、2、4、

8、16、32、64、128、256、512、1 024;SHIFT键的键值为8 192;鼠标滚轮

的向前滚动键值为2 048,鼠标滚轮的向后滚轮键值为4 096;8个方向视角可调

苦力帽的键值分别为0(北)、4 500(东北)、9 000(东)、13 500(东南)、18 000(南)、

22 500(西南)、27 000(西)、31 500(西北).由程序运行后获得的结果可以看出,对

于模拟量,可以根据模拟量的大小判断其位置和移动方向;对于按键,可以根据键

值判断是哪个按键被按下.获取的数值结果,可以作为以后应用编程的依据.

6 结 语

本文在VB环境中,通过调用动态链接库中的游戏杆API函数,获取

了Cyborg X飞行摇杆的位置和按键信息.设计了Cyborg X飞行摇杆数据采集的

界面和程序.通过运行程序,获得了Cyborg X飞行摇杆的位置和按键的数值,并

以图形的形式显示,为Cyborg X飞行摇杆的应用提供了必要的位置和按键信息,

具有较好的实用价值.

参考文献:

[1] 张爱红,张秋菊. 游戏杆在机器人虚拟示教系统中的应用编程[J]. 江南大学学报

(自然科学版),2003,2(5):474-477.

[2] 于晓康,柴乔林. 基于VC++的可控视频回放系统[J]. 计算机应用,2003(12):

326-328.

[3] 李国如. 无人直升机舰面起降仿真技术研究[D]. 南京:南京航空航天大学,

2009.

[4] 岳云飞. DLL 在VB 接口程序中的应用[J]. 计算技术与自动化,2006,25(4):

87-89.

[5] 陈家俊. DLL 技术在VB 编程中的应用[J]. 皖西学院学报,2006,22(2):86-

88.

发布评论

评论列表 (0)

  1. 暂无评论