[心得] NS for G27方向盤改造計畫
小屋好讀版
https://home.gamer.com.tw/creationDetail.php?sn=3926974
嗨各位好,我是怪人
個人有一台羅技G27,但是在PS3掛點之後,已經兩年還是三年沒上電過了
而在之前的文章Switch硬體外掛完成一文中,
https://www.ptt.cc/bbs/NSwitch/M.1516637548.A.A0C.html
我有詳細的寫模擬搖桿的過程
不過那邊主要控制主要是在微處理器端(STM32F429)
所以這次要將控制交給電腦端
這邊我先放上成品
https://www.youtube.com/watch?v=vSb4KIuLlec
↑懶得拍更新了,CODE有優化很多
簡單的流程是
C# (羅技SDK)→USB TO UART→STM32F429→USB HID→Switch
個人C#那邊可能會有些錯誤,因為從零開始接觸C#才一個禮拜= = 請多包涵
我們一開始要下載羅技的方向盤SDK,以及安裝Logitech 遊戲軟體
https://www.logitechg.com/zh-tw/developers
http://support.logitech.com/zh_tw/product/g27-racing-wheel/downloads#
https://i.imgur.com/HIsnH3z.png
這邊簡單的就是把裡面的LogitechGSDK.cs放入我們的專案
之後把SDK的
LogitechSteeringWheelEnginesWrapper.dll
放入我們的輸出exe路徑上
詳細的涵式可以參考這裡
罗技游戏方向盘软件开发工具包
首先用這個函式初始化
LogitechGSDK.LogiSteeringInitialize(true);
之後調用函式搜尋設備
while ((!LogitechGSDK.LogiIsModelConnected(device_index, 0)) && (device_index
<= 100))
其中0的地方是設備代號,因為我的設備是G27,這裡為零
這樣我們就知道device_index是哪一個了
而DIJOYSTATE2ENGINES 結構內,就是我們要的方向盤數值了
https://i.imgur.com/wTtK8jc.png
這邊我簡單的說明一下
圖中的0.1.2.3.4是rgbButtons[128]的陣列位置,如果按下,陣列值為128
方向盤為1X,範圍是-32768~32768
油門是 1Y,範圍是-32768~32768
離合器是rglSlider[1] ,範圍是-32768~32768
d-pad為 rgdwPOV[0] ,數值很奇怪,我也不知道為啥
上下左右分別為0,18000,27000,9000
-------------------------
之後就要講到Switch搖桿部分
之前我是發送一個字元,比如說ASCII "A",MCU端就發送
{0x04,0x00,0x0f,0x80,0x80,0x80,0x80,0x00} ←這是按紐A的陣列
不過在這會發生問題,如果我邊甩尾邊按油門,或者丟道具
這就起衝突了,所以我改成讓PC C# UART丟甚麼,MCU就跟著丟甚麼
https://i.imgur.com/7E3gwbC.png
mcu端主要是靠這兩行
USBD_HID_SendReport(&hUsbDeviceHS, TO_SWITCH, 8); //USB發送HID報告
HAL_UART_Receive_IT(&huart1, RxData,8); //UART 每八筆開啟中斷
在C#端,如果要發送給Switch 多組按鈕按下的資訊,就要用加法了
像是按鈕L的數值是0x10,R的數值是0x20,如果L+R一起按,發送就是0x30了
另外則是說,G27方向盤轉向的數值範圍是-32768~32768
這邊我們就要轉成0~128~256 也就是操控範圍小了256倍XDDDD
我是這樣寫的
TO_SWITCH[3] = Convert.ToByte(((wheel_input.lX * 128) / 32768) + 128);
↑右轉
https://www.youtube.com/watch?v=FxqozTfqbHw
阿對,忘記說陣列的用途了
uint8_t to_switch[8] ={0x00,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};
to_switch[0] 中,主要是控制按鈕的 例如ABXY L R 等等
to_switch[1]中,主要是控制HOME鍵,拍照鍵
to_switch[2]中,主要是控制D-PAD
to_switch[3]中,主要是控制左類比 左至右 0~255
to_switch[4]中,主要是控制左類比 上至下 0~255
to_switch[5]中,主要是控制右類比 左至右 0~255
to_switch[6]中,主要是控制右類比 左至右 0~255
to_switch[7]中,未知
這樣子,兜了一大圈,我們終於可以用G27控制Switch了!
--
今天去醫院,醫生說:你有30年的煙齡,你如果不抽煙,菸的的錢都夠買賓士了。
我一聽就不爽了。
我就反問醫生:「你抽煙嗎」?
醫生說:我不抽啊。 我又問:那他媽你的賓士呢?
醫生說:在樓下停著呢,怎麼了? 我說:沒什麼,我問問而已。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.126.242.183
※ 文章網址: https://www.ptt.cc/bbs/NSwitch/M.1521542605.A.A18.html
※ 編輯: wayne30349 (59.126.242.183), 03/20/2018 18:47:50
推
03/20 18:48,
6年前
, 1F
03/20 18:48, 1F
推
03/20 18:50,
6年前
, 2F
03/20 18:50, 2F
推
03/20 18:51,
6年前
, 3F
03/20 18:51, 3F
推
03/20 18:51,
6年前
, 4F
03/20 18:51, 4F
推
03/20 18:52,
6年前
, 5F
03/20 18:52, 5F
推
03/20 18:54,
6年前
, 6F
03/20 18:54, 6F
推
03/20 18:56,
6年前
, 7F
03/20 18:56, 7F
推
03/20 19:03,
6年前
, 8F
03/20 19:03, 8F
目前是把C#固定丟資料的timer_tick簡短就不會延遲了
推
03/20 19:07,
6年前
, 9F
03/20 19:07, 9F
推
03/20 19:09,
6年前
, 10F
03/20 19:09, 10F
推
03/20 19:09,
6年前
, 11F
03/20 19:09, 11F
※ 編輯: wayne30349 (59.126.242.183), 03/20/2018 19:10:19
推
03/20 19:12,
6年前
, 12F
03/20 19:12, 12F
推
03/20 19:18,
6年前
, 13F
03/20 19:18, 13F
推
03/20 19:29,
6年前
, 14F
03/20 19:29, 14F
推
03/20 19:47,
6年前
, 15F
03/20 19:47, 15F
推
03/20 19:49,
6年前
, 16F
03/20 19:49, 16F
推
03/20 19:53,
6年前
, 17F
03/20 19:53, 17F
推
03/20 19:55,
6年前
, 18F
03/20 19:55, 18F
推
03/20 20:03,
6年前
, 19F
03/20 20:03, 19F
如果不算開始學C#的話
上禮拜六 日 一 共三天
※ 編輯: wayne30349 (59.126.242.183), 03/20/2018 20:05:14
推
03/20 20:09,
6年前
, 20F
03/20 20:09, 20F
推
03/20 20:11,
6年前
, 21F
03/20 20:11, 21F
推
03/20 21:23,
6年前
, 22F
03/20 21:23, 22F
推
03/20 21:28,
6年前
, 23F
03/20 21:28, 23F
推
03/20 22:04,
6年前
, 24F
03/20 22:04, 24F
→
03/20 22:17,
6年前
, 25F
03/20 22:17, 25F
推
03/20 23:23,
6年前
, 26F
03/20 23:23, 26F
推
03/20 23:41,
6年前
, 27F
03/20 23:41, 27F
推
03/21 00:00,
6年前
, 28F
03/21 00:00, 28F
推
03/21 00:11,
6年前
, 29F
03/21 00:11, 29F
推
03/21 01:24,
6年前
, 30F
03/21 01:24, 30F
推
03/21 02:49,
6年前
, 31F
03/21 02:49, 31F
推
03/21 09:33,
6年前
, 32F
03/21 09:33, 32F
推
03/21 12:16,
6年前
, 33F
03/21 12:16, 33F
推
12/25 13:44,
6年前
, 34F
12/25 13:44, 34F
NSwitch 近期熱門文章
PTT遊戲區 即時熱門文章
10
14