創作內容

6 GP

Nintendo Switch for G27方向盤改造計畫

作者:怪乃是王道│2018-03-20 17:42:27│巴幣:12│人氣:16417
嗨各位好,我是怪乃是王道
剛離開上一份工作,目前自我進修中,歡迎認領XD
個人有一台羅技G27,但是在PS3掛點之後,已經兩年還是三年沒上電過了

而在之前的文章Switch硬體外掛完成 一文中,我有詳細的寫模擬搖桿的過程
不過那邊主要控制主要是在微處理器端(STM32F429)
所以這次要將控制交給電腦端
這邊我先放上成品


↑懶得拍更新了,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#



這邊簡單的就是把裡面的LogitechGSDK.cs放入我們的專案
之後把SDK的
LogitechSteeringWheelEnginesWrapper.dll
放入我們的輸出exe路徑上

詳細的涵式可以參考這裡
罗技游戏方向盘软件开发工具包

首先用這個函式初始化
  LogitechGSDK.LogiSteeringInitialize(true);

之後調用函式搜尋設備
while ((!LogitechGSDK.LogiIsModelConnected(device_index, 0)) && (device_index <= 100))
其中0的地方是設備代號,因為我的設備是G27,這裡為零
這樣我們就知道
device_index是哪一個了

而DIJOYSTATE2ENGINES 結構內,就是我們要的方向盤數值了



這邊我簡單的說明一下
圖中的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就跟著丟甚麼


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);



阿對,忘記說陣列的用途了

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了!
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3926974
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:nintendo switch|NS|MCU|馬力歐賽車

留言共 3 篇留言

烤焦的布丁
大推啊

09-04 07:16

烤焦的布丁
因為太有興趣了,請問一下有安裝包可以分享嗎?我的也是G27,但是您寫的實在太高級,小弟看不懂啊,方向盤封存很久了,看起來有機會再拿出來,再麻煩大大分享,或寫一份 step by step 的教學,感恩您

09-04 07:47

怪乃是王道
這部分的話,可能需要一些專業知識才能了解,另外我的電腦之前故障,導致code已經消失不見了,我的switch也賣掉換成PS4了,所以在這邊可能沒辦法幫你,但是市面上已經有類似的設備可以買 關鍵字Maxrace F-109-04 23:28
給我個解釋
高手呀 要不是我搜G27 根本不知道有這篇技術文 收藏了

02-28 21:16

我要留言提醒:您尚未登入,請先登入再留言

6喜歡★wayne30349 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Switch硬體外掛完成... 後一篇:LINK2FS 微軟模擬...

追蹤私訊切換新版閱覽

作品資料夾

Kokage
祝今天看到的您也有個美好的一天 (´▽`ʃ♡ƪ)"看更多我要大聲說昨天15:33


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】