国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VB的Cyborg X飛行搖桿數(shù)據(jù)采集研究

2014-04-01 06:29,
中原工學(xué)院學(xué)報 2014年1期
關(guān)鍵詞:苦力鍵值搖桿

,

(1.北京工業(yè)大學(xué),北京 100124;2.中原工學(xué)院,鄭州 450007)

游戲桿通常應(yīng)用于飛行模擬類游戲機(jī)中,絕大多數(shù)游戲桿設(shè)計是以飛機(jī)飛行控制桿為原型的,其作為一種附屬的輸入設(shè)備,可代替鼠標(biāo)、鍵盤.游戲桿可以提供位置信息和按鍵的狀態(tài)信息,因此也被廣泛應(yīng)用于其他領(lǐng)域.張愛紅等將游戲桿用于機(jī)器人虛擬示教系統(tǒng)的編程[1].于曉康等用游戲桿控制視頻回放系統(tǒng)[2].李國如采用游戲桿作為外部操縱設(shè)備研究無人直升機(jī)艦面起降仿真技術(shù)[3].Cyborg X飛行搖桿因其出色的人機(jī)工程、前沿的設(shè)計和獨(dú)特的功能,被逐步應(yīng)用于工業(yè)領(lǐng)域.在實(shí)際應(yīng)用中,需要明確Cyborg X飛行搖桿的位置和按鍵信息.VB(Visual Basic)是微軟公司推出的功能強(qiáng)大的集成開發(fā)環(huán)境,在使用VB進(jìn)行編程時,準(zhǔn)確調(diào)用API函數(shù)是關(guān)鍵,通過調(diào)用API函數(shù)可以完成圖像處理、編寫仿真和模擬應(yīng)用軟件等.目前,有關(guān)Cyborg X飛行搖桿的位置和按鍵信息的研究較少,為此,本文提出了基于VB的Cyborg X飛行搖桿數(shù)據(jù)采集的方案,用來獲取Cyborg X飛行搖桿的位置和按鍵信息,并以數(shù)值和圖形的形式顯示,為Cyborg X飛行搖桿在工業(yè)領(lǐng)域的應(yīng)用提供了技術(shù)保證.

1 Cyborg X飛行搖桿

為慶祝Cyborg系列的搖桿誕生10周年,賽鈦客(Saitek公司)推出Cyborg X飛行搖桿(如圖1所示),整體搖桿采用了高精度的電位器,廣泛應(yīng)用于絕大多數(shù)的飛行模擬類游戲機(jī)中,其構(gòu)成為:

(1)1個快速響應(yīng)扳機(jī);

(2)1個8方向視角可調(diào)苦力帽;

(3)1個鼠標(biāo)滾動輪;

(4)11個功能按鍵

(5)1個SHIFT二檔模式鍵,通過軟件可使按鍵數(shù)量擴(kuò)充兩倍;

(6)5個高精度模擬軸;

(7)X、Y、Z軸旋轉(zhuǎn)及獨(dú)立的雙油門(滑塊和Z軸).

圖1 Cyborg X飛行搖桿

2 游戲手柄API函數(shù)及調(diào)用

2.1 動態(tài)鏈接庫winmm.dll中的游戲手柄API函數(shù)

API(Application Programming Interface)為操作系統(tǒng)自身調(diào)用的函數(shù),用來控制Windows各個部件的外觀和行為.在Windows中,API函數(shù)是以動態(tài)鏈接庫(DLL文件)的形式提供給用戶的,Windows中一些基本的動態(tài)鏈接庫(DLL)構(gòu)成了全體的Windows API函數(shù).Windows將系統(tǒng)使用的API函數(shù)包裝成KERNEL.exe、USER.exe、GDI.exe及winmm.dll四大動態(tài)鏈接庫,其中真正具有多媒體處理能力的API函數(shù)為winmm.dll動態(tài)鏈接庫.Windows的動態(tài)鏈接庫winmm.dll提供了一個包含幾十個專用于處理多媒體音頻和游戲手柄的API函數(shù)[4].運(yùn)用winmm.dll中的API函數(shù),可以編寫出功能強(qiáng)大的游戲手柄程序,常用的與游戲手柄相關(guān)的API函數(shù)為:

(1)joyGetDevCaps函數(shù),用于查詢指定的游戲桿設(shè)備以確定其性能;

(2)joyGetNumDevs函數(shù),用于返回系統(tǒng)支持的游戲桿設(shè)備的數(shù)量;

(3)joyGetPos函數(shù),用于查詢指定的游戲桿設(shè)備的位置和活動性;

(4)joyGetPosEx函數(shù),用于查詢一個游戲桿設(shè)備的位置和它的按扭狀態(tài);

(5)joyGetThreshold函數(shù),用于查詢指定游戲桿設(shè)備的當(dāng)前移動閾值;

(6)joyReleaseCapture函數(shù),用于釋放由JoySetCapture函數(shù)設(shè)置的在指定游戲桿設(shè)備上的捕獲;

(7)joySetCapture函數(shù),用于發(fā)送一個游戲桿消息至指定的窗口;

(8)joySetThreshold函數(shù),用于設(shè)置指定游戲桿設(shè)備的移動閾值.

其中joySetCapture、joyReleaseCapture和joyGetPosEx等函數(shù)在winmm.dll中的函數(shù)原型分別為:

MMRESUL T joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged);

MMRESULT joyReleaseCapture( UINT uJoyID);

MMRESULT joyGetPosEx( UINT uJoyID, LPJOYINFOEX pji ).

2.2 VB環(huán)境中游戲手柄API函數(shù)的調(diào)用

在VB環(huán)境中,利用Declare語句(一般有2種形式)實(shí)現(xiàn)對API函數(shù)的調(diào)用.對于DLL中沒有返回值的子程序,使用的Declare語句為:

[Public/Private] Declare Sub name Lib “l(fā)ibname”[Alias “aliasname”][([arglist])]

對于DLL中有返回值的子程序,使用的語句為:

[Public/Private] Declare Function name Lib “l(fā)ibname” [Alias “aliasname”][([arglist])] [As type]

其中,Lib參數(shù)是包含所聲明的過程動態(tài)鏈接庫或代碼資源,所有聲明都需要Lib子句.Libname參數(shù)包含所聲明的過程動態(tài)鏈接庫名或代碼資源名.一個重要的問題是,API函數(shù)的Declare語句必須是Windows所要求的形式,如果省略了ByVal關(guān)鍵字,通常會使系統(tǒng)鎖死[5].

joySetCapture函數(shù)、joyReleaseCapture函數(shù)和joyGetPosEx函數(shù)在VB中調(diào)用的形式分別為:

(1)Declare Function joySetCapture Lib "winmm.dll" (ByVal hwnd As Long, ByVal uJoyID As Long, ByVal uPeriod As Long, ByVal fChanged As Long) As Long;

(2)Declare Function joyReleaseCapture Lib "winmm.dll" (ByVal uJoyID As Long) As Long;

(3)Declare Function joyGetPosEx Lib "winmm.dll" (ByVal uJoyID As Long, pji As JOYINFOEX) As Long.

3 數(shù)據(jù)采集界面設(shè)計

3.1 采集數(shù)據(jù)信息

根據(jù)Cyborg X飛行搖桿的功能,需要采集飛行搖桿的位置信息和按鍵的狀態(tài)信息,這些信息包括X軸、Y軸、Z軸旋轉(zhuǎn)及雙油門、按鍵、鼠標(biāo)滑輪和苦力帽狀態(tài)等信息.

3.2 采集界面

基于VB的采集界面如圖2所示.其主要以數(shù)值和圖形的形式顯示joyGetPosEx函數(shù)被成功調(diào)用后返回的Cyborg X飛行搖桿的位置信息和按鍵狀態(tài)信息.

圖2 采集界面

對1-11功能鍵和SHIFT鍵設(shè)置了相應(yīng)的按鈕,當(dāng)按下功能鍵時,相應(yīng)的按鈕會變成紅色.苦力帽的8個方向分別用較粗的Bar表示,當(dāng)苦力帽傾斜于某個方向時,與該方向相對應(yīng)的Bar的顏色由黑色變?yōu)榧t色.圖2中,紅色的“十”字箭頭直觀地反映了游戲桿X軸和Y軸方向的移動.Z軸、Z軸旋轉(zhuǎn)和滑塊的信息分別用矩形框填充顏色的多少來表示.鼠標(biāo)滾輪用四個棕色的矩形框表示,當(dāng)滾動鼠標(biāo)滾輪時,其中的一個矩形框的顏色變?yōu)榧t色,并隨著滾動輪前后移動,該變紅的矩形框隨之左右移動.

4 程序設(shè)計

采集Cyborg X飛行搖桿數(shù)據(jù)的流程圖如圖3所示.調(diào)用joyGetPosEx函數(shù)的返回值,如果非0,則退出程序;如果為0,則返回Cyborg X飛行搖桿的信息.對返回結(jié)果的處理程序包括:模擬量X軸、Y軸、Z軸、Z軸旋轉(zhuǎn)和滑塊的處理程序;苦力帽8個方向視角鍵處理程序;1-11功能鍵和SHIFT鍵處理程序;鼠標(biāo)滾輪處理程序.

圖3 采集程序流程圖

5 運(yùn)行結(jié)果

joyGetPosEx函數(shù)的返回值是JOYINFOEX結(jié)構(gòu)體,JOYINFOEX的定義為:

Type JOYINFOEX

dwSize As Long′結(jié)構(gòu)體大小

dwFlags As Long′返回內(nèi)容標(biāo)志

dwXpos As Long′X軸位置

dwYpos As Long′Y軸位置

dwZpos As Long′Z軸位置

dwRpos As Long′Z軸旋轉(zhuǎn)

dwUpos As Long′滑塊

dwVpos As Long′第6軸位置

dwButtons As Long′按鍵狀態(tài)

dwButtonNumber As Long′按鍵數(shù)量

dwPOV As Long′苦力帽

dwReserved1 As Long′保留

dwReserved2 As Long′保留

End Type

采集程序運(yùn)行后,獲得Cyborg X 飛行搖桿的數(shù)據(jù)為:模擬量X軸、Y軸、Z軸、Z軸旋轉(zhuǎn)和滑塊的數(shù)值范圍均為0~65 535;1-11功能鍵的鍵值分別為1、2、4、8、16、32、64、128、256、512、1 024;SHIFT鍵的鍵值為8 192;鼠標(biāo)滾輪的向前滾動鍵值為2 048,鼠標(biāo)滾輪的向后滾輪鍵值為4 096;8個方向視角可調(diào)苦力帽的鍵值分別為0(北)、4 500(東北)、9 000(東)、13 500(東南)、18 000(南)、22 500(西南)、27 000(西)、31 500(西北).由程序運(yùn)行后獲得的結(jié)果可以看出,對于模擬量,可以根據(jù)模擬量的大小判斷其位置和移動方向;對于按鍵,可以根據(jù)鍵值判斷是哪個按鍵被按下.獲取的數(shù)值結(jié)果,可以作為以后應(yīng)用編程的依據(jù).

6 結(jié) 語

本文在VB環(huán)境中,通過調(diào)用動態(tài)鏈接庫winmm.dll中的游戲桿API函數(shù),獲取了Cyborg X飛行搖桿的位置和按鍵信息.設(shè)計了Cyborg X飛行搖桿數(shù)據(jù)采集的界面和程序.通過運(yùn)行程序,獲得了Cyborg X飛行搖桿的位置和按鍵的數(shù)值,并以圖形的形式顯示,為Cyborg X飛行搖桿的應(yīng)用提供了必要的位置和按鍵信息,具有較好的實(shí)用價值.

參考文獻(xiàn):

[1] 張愛紅,張秋菊. 游戲桿在機(jī)器人虛擬示教系統(tǒng)中的應(yīng)用編程[J]. 江南大學(xué)學(xué)報(自然科學(xué)版),2003,2(5):474-477.

[2] 于曉康,柴喬林. 基于VC++的可控視頻回放系統(tǒng)[J]. 計算機(jī)應(yīng)用,2003(12):326-328.

[3] 李國如. 無人直升機(jī)艦面起降仿真技術(shù)研究[D]. 南京:南京航空航天大學(xué),2009.

[4] 岳云飛. DLL 在VB 接口程序中的應(yīng)用[J]. 計算技術(shù)與自動化,2006,25(4):87-89.

[5] 陳家俊. DLL 技術(shù)在VB 編程中的應(yīng)用[J]. 皖西學(xué)院學(xué)報,2006,22(2):86-88.

猜你喜歡
苦力鍵值搖桿
“背篼”生存處境微探
我為工作狂
曲柄搖桿機(jī)構(gòu)的急回程度分析與探討*
曲柄與搖桿擺角的關(guān)系
非請勿進(jìn) 為注冊表的重要鍵值上把“鎖”
從《滿韓漫游》“苦力”形象轉(zhuǎn)變看夏目漱石的中國觀
一鍵直達(dá) Windows 10注冊表編輯高招
曲柄搖桿行星系取苗機(jī)構(gòu)參數(shù)匹配與優(yōu)化
注冊表值被刪除導(dǎo)致文件夾選項成空白
“掃除”技巧之清除惡意程序