NS for G27方向盤改造計畫 - Switch

Donna avatar
By Donna
at 2018-03-20T18:43

Table of Contents

小屋好讀版
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年的煙齡,你如果不抽煙,菸的的錢都夠買賓士了。
我一聽就不爽了。
我就反問醫生:「你抽煙嗎」?
醫生說:我不抽啊。 我又問:那他媽你的賓士呢?
醫生說:在樓下停著呢,怎麼了? 我說:沒什麼,我問問而已。

--
Tags: Switch

All Comments

Sandy avatar
By Sandy
at 2018-03-24T12:30
快推免得被發現看不懂
Yedda avatar
By Yedda
at 2018-03-29T08:33
快推,可是我還是看不懂XD
Wallis avatar
By Wallis
at 2018-04-02T23:42
了不起!給你給推
Una avatar
By Una
at 2018-04-06T18:22
推 不覺得怪
Charlie avatar
By Charlie
at 2018-04-08T11:07
好屌...
Skylar Davis avatar
By Skylar Davis
at 2018-04-09T13:59
也太猛...
Belly avatar
By Belly
at 2018-04-10T20:21
強大!
Isabella avatar
By Isabella
at 2018-04-15T07:18
有看你在巴哈發的文 所以延遲有解決嗎
Vanessa avatar
By Vanessa
at 2018-04-19T06:14
推看不懂
Liam avatar
By Liam
at 2018-04-20T22:40
記得延遲很悲劇,辛苦實驗還是推ㄧ個
William avatar
By William
at 2018-04-22T09:41
太神了
Zanna avatar
By Zanna
at 2018-04-25T05:23
好強 可是感覺輕手方向盤很難操控
James avatar
By James
at 2018-04-25T16:18
太神啦!!
Charlie avatar
By Charlie
at 2018-04-29T16:20
d-pad那個應該是角度吧(趕快不懂裝懂
Ida avatar
By Ida
at 2018-05-01T00:34
所以可以用這個打漆彈囉
Ida avatar
By Ida
at 2018-05-01T03:44
沒錯 跟我想得差不多
Edith avatar
By Edith
at 2018-05-03T12:01
我到底看了三小
Joe avatar
By Joe
at 2018-05-06T00:56
你好,這是我的膝蓋
Rebecca avatar
By Rebecca
at 2018-05-08T00:51
請問搞多久時間?
Christine avatar
By Christine
at 2018-05-08T05:28
Todd Johnson avatar
By Todd Johnson
at 2018-05-13T00:55
真的神了
Todd Johnson avatar
By Todd Johnson
at 2018-05-17T19:41
文組崩潰
Susan avatar
By Susan
at 2018-05-19T16:09
推 要怎樣才能玩會這些關卡呀!?
Jacob avatar
By Jacob
at 2018-05-20T12:05
太強
Belly avatar
By Belly
at 2018-05-24T04:54
強者欸
Jack avatar
By Jack
at 2018-05-29T00:40
Connor avatar
By Connor
at 2018-06-02T02:16
快推 不明覺厲
Margaret avatar
By Margaret
at 2018-06-06T11:45
快推不然會被發現看不懂
Kama avatar
By Kama
at 2018-06-10T18:46
嗯嗯 原來是這樣 快推
Emily avatar
By Emily
at 2018-06-12T21:50
Hamiltion avatar
By Hamiltion
at 2018-06-17T15:38
Blanche avatar
By Blanche
at 2018-06-19T07:23
喔喔喔 原來是這樣
Genevieve avatar
By Genevieve
at 2018-06-20T20:19
.....
Daph Bay avatar
By Daph Bay
at 2018-06-22T15:02
d-pad的數值是不是指東西南北(0,90,180,270)?

薩爾達接下來呢

Skylar Davis avatar
By Skylar Davis
at 2018-03-20T17:25
我是為了薩爾達買switch 完完全全超出預期的好玩啊 目前是120個小時,估計會玩到200-250個小時 但是這讓我不禁煩惱,那薩爾達玩完之後呢? 薩爾達出中文版之前有買魔界戰記5,不過只玩了50個小時就放著了 對party game還有射擊類,動作類沒興趣 比較喜歡rpg 不知道玩完薩爾達之後, ...

薩爾達無雙 跑了!

Faithe avatar
By Faithe
at 2018-03-20T17:14
https://i.imgur.com/UAdZlpy.jpg 先讓我曬一波~~~ 非廣告文只是剛剛在台北逛地底下面街眼角餘光瞥到 詢問一下價錢後覺得可以:) - ...

《八方旅人》公開商人與藥師主角和「特

Caitlin avatar
By Caitlin
at 2018-03-20T16:49
推 hipposman: 因為是轉翻4gamer的 amajp不給訂不寄海外 這片真的不 → hipposman: 做限定版嘛?難得se不想賺一筆 這部有限定版喔,只是當初只看日本ND的人,也沒超級認真在追這部消息的,應該 不知道這部有限定版,因為這部的限定版呢,是 海 外 限 定!!!!!!!!! 當初 ...

遊戲時數停止無法更新

Zora avatar
By Zora
at 2018-03-20T16:26
各位switch pro gamer大家好。 上上週購入中文版含特典薩爾達, 就開啟了一片新天地, 果然卡匣也是不願意再拔出來惹XP 最近一次看遊戲時數是20小時, 過了幾天剛好遇到主機系統更新, 這幾天再看看薩爾達遊戲時數, 居然都沒有更新... 不但如此最後遊戲時間居然是七天前... 我明明每天都開, ...

公主是個守財奴

Olive avatar
By Olive
at 2018-03-20T16:02
好奇怪,不是說今天發售嗎? 都問不到這片,店家都說不知道, 任天堂數位商店也找不到這片... 為什麼啊??? - ...