Witam
Czy ktoś próbował obsługiwać pada od ps4 ale mam na myśli taką poprawną obsługę Pada z jego wszystkimi możliwościami.
Normalnie po podłączeniu pada mamy standardowy plik JS w moim przypadku JS0. Co tak naprawdę jest namiastką pada od ps4.
Nie ma odczytu z żyroskopów i akcelerometru nie ma możliwości obsługi podświetlenia na padzie i wibracji.
pole touchpada na padzie traktuje jak myszkę i kliknięcie jak kliknięcie myszki czy li standardowo.
odczyt baterii też jest problemem.
Żyroskopy i akcelerometr prawdopodobnie jest w pliku event ale mam problemy z jego odczytaniem. To znaczy niewianiem jak odczytać plik żeby wysyłał sensowne dane. (chodzi mi o strukturę pliku które bajty za o odpowiadają.)
Co dziwne w systemie mam jakieś sterowniki hid sony i po podłączeniu pada tworzą się dodatkowe pliki (urządzenia ) a dokładnie
sys/bus/hid/devices/0005:054C:09CC.0001( katalog z dowiązaniem do urządzenia)
I tutaj dopiero grzebiąc w plikach mam dostęp jako taki bo szału nie ma do stanu baterii czy jest ładowana itp. oraz mogę ustawić kolor ledów pada.
Niestety jest to robione strasznie na siłę. i nie efektownie.
Urządzenie które powstało ma kilka katalogów co mnie najbardziej interesuje to input leds i power suply.
W katalogu led mam 4 katalogi z czego 3 odpowiadają za kolory RGB.
0005:054C:09CC.0001:blue to jest nazwa jednego z katalogu tam znowu znajdują się pliki w jednym z nich jak wpiszę wartość do 255 to steruje jednym kolorem do wartości 255.
Jest to dość wkurzające bo żeby obsłużyć RGB mam 3 katalogi i 3 pliki zmiana koloru jest strasznie nie efektywna. Tym bardziej że pliki i katalogi istnieją dopiero po podłączeniu pada i nie mam pewności że katalogi będą się nazywać tak samo.
Natomiast nie mam możliwości sterowania wibracjami w padzie. przynajmniej z poziomu plików.
Znalazłem kilka sterowników HID sony i tam w bebechach jest mowa o wibracji kolorach Gyro itp.
Teraz Pytanie jak mogę zainstalować taki sterownik.
https://github.com/torvalds/linux/blob/ ... hid-sony.c
Co dalej nie wiem może po instalacji coś pozmienia mi się w strukturze plików i zyskam możliwość sterowania w bardziej ludzki sposób.
Obsługa jest mi potrzebna do programu być może ktoś wie jak mogę to wykorzystać i bezpośrednio sterować czy z poziomu jakiejś biblioteki lub chociażby terminala.
Języki w których próbuję programować to C, C++ i Python jednak wygodne jest użycie Pythona pomimo że jest dużo wolniejszy.
Prosiłbym o jakieś sugestie
Obsługa Pada PS4
-
- Piegowaty Guziec
- Posty: 5
- Rejestracja: 27 lip 2008, 22:37
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
Re: Obsługa Pada PS4
Wklejam funkcje napisane w pythonie do sterowania Ledami na padzie oraz odczyt bateri.
Starałem się mniej więcej opisać jak działa kod ale jak ktoś się zagłębi to będzie wiedział o co kaman.
Z kodu można dowolnie korzystać.
Starałem się mniej więcej opisać jak działa kod ale jak ktoś się zagłębi to będzie wiedział o co kaman.
Z kodu można dowolnie korzystać.
Kod: Zaznacz cały
# Obsługa kolorów pada PS4 w linux.
# Obsługa Baterii odczyt poziomu naładowania i status ładowania.
import os
adres_sterownika_sony='/sys/bus/hid/drivers/sony/'
#lista = list(os.listdir(adres_sterownika_sony))
def adresy_padow (): #funkcja przekazuje liste nazw katalogow podłączonych padów
lista = list(os.listdir(adres_sterownika_sony))
listaplikow=[]
for i in range(int(len(list(os.listdir(adres_sterownika_sony))))): #pęttla wykona się tyle razy ile jest plikow w katalogu sony i sprawdzi ile plikiw nazywa się tak jak nazywają się pady
if (lista[i].count("0005:054C:")): # porownoje czy ktoryś z plikow zawiera w nazwie dany tekst (tak zaczynaja sie pady)
listaplikow = listaplikow + [lista[i]] #dodaj nazwy katalogow (padów)do tablicy
listaplikow.sort() #Sortuje w liscie pady od pierwszego do ostatniego.
#print (listaplikow)
return listaplikow
def bateria(nr_pada, bat="bateria"): # trzeba podać numer pada i string "bateria" lub "status" funkcja zwróci poziom naladowania bateri albo status Ładowanie albo Rozładowywanie ( jeszcze dojdzie pełna)
if os.path.exists(adres_sterownika_sony):
if nr_pada <= len(adresy_padow()) and nr_pada > 0:
adres_pada = adresy_padow()
katalog_baterii = os.listdir(adres_sterownika_sony + adres_pada[nr_pada-1] + "/power_supply/")
adres_katalogu = (adres_sterownika_sony + adres_pada[nr_pada-1] + "/power_supply/" + katalog_baterii[0]+ "/")
if bat == "bateria" :
odczyt = open(adres_katalogu + "capacity" ,"r")
tabliczka = odczyt.read()
tabliczka = int(tabliczka) # przekombinowane usuwanie znaku końca lini
return (str(tabliczka))
elif bat == "status":
odczyt = open(adres_katalogu + "status" ,"r")
tabliczka = odczyt.read()
if tabliczka == "Discharging\n" :
return "Rozładowywanie"
elif tabliczka == "Charging\n":
return "Ładowanie"
else :
print("brak plików baterii dla pada nr : "+ str(nr_pada))
else :
print("Brak sterowników HID sony podłącz pada i spróbój ponownie : ")
def led_rgb (RED, GREEN, BLUE, nr_pada):# wartości od 0 do 255 RGB i nr_pada od 1 do max ilości padów
if os.path.exists(adres_sterownika_sony):
if nr_pada <= len(adresy_padow()) and nr_pada > 0:
adres_pada = adresy_padow()
adres_pliku_led = (adres_sterownika_sony + adres_pada[nr_pada-1] + "/leds/" + adres_pada[nr_pada-1])
led_red = open((adres_pliku_led + ":red/brightness"),"w")
led_green = open((adres_pliku_led + ":green/brightness"), "w")
led_blue = open((adres_pliku_led + ":blue/brightness"), "w")
led_red.write(str(RED))
led_green.write(str(GREEN))
led_blue.write(str(BLUE))
#print("Pad: " + str(nr_pada) +" LED_RED : " +str(RED)) # można zakomentować wypisuje w konsoli jakie wartosci zostały wpisane do pada)
#print("Pad: " + str(nr_pada) +" LED_GREEN : " +str(GREEN))
#print("Pad: " + str(nr_pada) +" LED_BLUE : " +str(BLUE))
#print("")
else :
print("brak plików LED dla pada nr : "+ str(nr_pada)) # hmm :)
else :
print("Brak sterowników HID sony podłącz pada i spróbój ponownie : ")
print(bateria(1,"bateria"))
print(bateria(1)) # jak nic nie podamy w drugim parametrze to wyswietli poziom naładowania baterii.
led_rgb(20,10,20,1) # 20R 10G 20B pad 1
ledy=[20,10,20]
led_rgb(*ledy,1) # można też tak robimy tablice i dajemy na nią wskaźnik (niewiem jak to się w pythonie nazywa)
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 6 gości