Skocz do zawartości
Sanjuro

Vmouse Benchmark V0.0.7alfa Oraz Faq Testowania Myszek

Rekomendowane odpowiedzi

VMouse Benchmark jest programem przeznaczonym do testowania myszek. Na razie posiada jedynie kilka udogodnień (w stosunku do zwykłego MSPaint’a którym najczęściej robi się te testy) pomocnych przy wykrywaniu interpolacji oraz mierzeniu rozdzielczości. Może wkrótce będzie miał bardziej kompleksowe rozwiązania, jak znajdę czas na naukę DirectX (bardziej precyzyjne przechwytywanie myszki poprzez DirectInput oraz test na interpolację w środowisku Direct3D), ale najpierw muszę się przygotować do egzaminów oraz zrobić pracę dyplomową :P

 

PROCEDURA TESTOWANIA:

Przygotowania:

Żeby przetestować myszkę należy najpierw przygotować środowisko do rzeczywistego odwzorowywani ruchów myszka. W tym celu należy:

  • We właściwościach myszy („Panel Sterowania”->„Mysz”), w zakładce „Ruch” szybkość kursora ustawić w pozycji środkowej oraz odznaczyć „Zwiększ precyzję kursora” (może być pod inna nazwą np. przy sterownikach A4Tech - „Przyśpieszenie kursora”) ta operacja wyłączy część interpolacji i sztucznego przyśpieszenia wprowadzanego przez sterowniki windowsowe.

  • Zniwelować akcelerację do minimum za pomocą programiku AccelFix produkcji anir’a łatki wprowadzanej do rejestru (mouse_fix produkcji CPL).

  • Po powyższych operacjach należy restartować komputer :)
Testy:

Testy można wykonać w Paincie, ale ja będę starał się przedstawić większość na moim programie.

  • Test częstotliwości pobierania danych z myszy dokonujemy na zakładce Odświeżanie poruszając myszą w prostokątnym obszarze określonym jako „Pole pomiaru częstotliwości pobierania danych z myszki”. Po prawej będą ukazywały się wyniki pomiaru oraz uśredniony wynik 100 pomiarów (obok napisu AVG:). UWAGA: pwlj po wstępnym teście zauważył, że program na razie nie radzi sobie z odczytem częstotliwości powyżej 500Hz (udaje się zmierzyć ok. 700Hz zamiast 1000Hz), dlatego do tego testu warto ściągnąć program polecany przez pwlj DIMouseHz, który przechwytuję myszkę za pomocą protokołów DirectInput i poprawnie mierzy częstotliwości 1000Hz.

  • Test na obecność interpolacji wykonujemy by przekonać się, czy myszka pracuje w swojej rzeczywistej rozdzielczości, czy też interpolowanej czyli rozdzielczości programowo zwiększanej. W tym celu należy zrobić test 10 pikseli (można dla pewności zrobić więcej pikseli ;) ). W tym celu w zakładce Interpolacja należy przycisnąć i przytrzymać na czas testu LPM, a następnie pomału (żeby myszka zdążyła przesłać informację o ruchu) przesuwać mysz w poziomie lub pionie. Jeśli test wypadnie pomyślnie to wyjdzie nam linia ciągła. Natomiast jeżeli istnieje interpolacja to w równych odstępach będzie widoczna przerwa zwykle o długości 1 piksela (najczęściej spotyka się prostą interpolację 2+1 rozdzielczość zwiększona programowo o 50% lub 4+1 – rozdzielczość zwiększona o 25%)

    Dodatkowo osoby które mają możliwość zmiany częstotliwości pobierania danych z myszki, mogą zaobserwować co dają dodatkowe Hz oraz wszyscy mogą dojść do wniosku, że Paint (czyli płótno „Canvas” po którym się rysuje) to niezbyt dobre narzędzie do określania akceleracji myszki. Tzn. mając np. myszkę PS/2 standardowo ustawioną na ok. 40-60Hz, przy szybkich ruchach rysując okrąg dość łatwo zrobić z okręgu kwadrat :( Jest to związane ze sposobem rysowania ciągłej krzywej, która jest uzyskiwana za pomocą rysowania odcinka linii prostej pomiędzy dwoma sąsiednimi przesunięciami myszy (pobraniem danych z myszy). Dlatego zrezygnowałem z tego rodzaju rysowania w moim programie (rysowanie za pomocą punktów, a nie odcinków), co zaowocowało łatwiejszym wykrywaniem interpolacji :D

  • Test na obecność akceleracji Zazwyczaj występują dwa rodzaje akceleracji:
    • akceleracja (zwykła) – objawia się, że droga przebyta przez wskaźnik na tej samej długości drogi przebytej przez mysz, jest różna w zależności od prędkości ruchu,
    • akceleracja wsteczna – objawia się poprzez gubienie się wskaźnika myszy, tzn wskaźnik ląduje w całkowicie niezamierzonym miejscu (UWAGA! Złe podkładki pod mysz także mogą być przyczyną powstawania akceleracji wstecznej dlatego mysz należy testować na różnych podkładkach, z różnych materiałów, co zaleca producent czujników do myszy optycznych - Avago!). Akceleracja wsteczna może się jednak ujawniać także podobnie jak akceleracja zwykła tzn. jeśli wykonamy szybki ruch myszy, a następnie wrócimy wolnym ruchem myszy do miejsca z którego zrobiliśmy ten szybki ruch, może się okazać, że droga przebyta poprzez szybki ruch może być kilkukrotnie krótsza niż przy wolnym ruchu. Czyli przy szybkim ruchu zostały zgubione kolejne odczyty położenia myszy (tu może trochę pomóc zwiększenie częstotliwości odczytywania danych z myszy),
    Test na akcelerację należy przeprowadzić w grze 3D (najlepiej w strzelance FPS/FPP), w której jest możliwość (lub jest się pewnym) ustawienia pobierania danych z myszy poprzez protokół DirectInput oraz ustawienie niskiej czułości myszy. W grze wykonujemy szybki obrót poprzez szybki ruch myszy (należy zapamiętać miejsce na podkładce z którego wystartowaliśmy myszą) i jeżeli się nie zgubiliśmy czyli zamiast oczekiwanego obrotu w konkretnym kierunku, nasza postać patrzy całkiem w innym kierunku (co wskazywałoby na akcelerację wsteczną), a następnie powolny powrót myszy do miejsca startu testu. Jeżeli nasza postać patrzy tam gdzie patrzyła na początku testu to gratulacje! Mysz nie ma objawów żadnej akceleracji. Natomiast gdy postać wykona większy lub mniejszy ruch to znaczy, że niestety, ale jest obecna akceleracja :(

  • Test rozdzielczości rzeczywistej, gdy wykluczyliśmy na danej rozdzielczości myszy obecność interpolacji oraz akceleracji, możemy zmierzyć rzeczywistą rozdzielczość myszy. W tym celu należy narysować linie prostą przesuwając mysz w poziomie na odległość 1 cala (dla rozdzielczości myszy <800cpi i rozdzielczości ekranu >=800x600) lub 0.5 cala (dla rozdzielczości myszy <=2000cpi i rozdzielczości ekrany <1600xYYYY). Długość pozioma narysowanej lini wyznaczy nam rozdzielczość odpowiednio:

     

    CPImyszy = Llini (dla przesunięcia o 1 cal),

    CPImyszy = Llini*2 (dla przesunięcia o 0.5 cala),

    CPImyszy = Llini*4 (dla przesunięcia o 0.25 cala),

     

    Aby ułatwić sobie pomiar i zwiększyć precyzję pomiaru, można skorzystać ze suwmiarki. Mierzymy szerokość myszy (w tylniej części gdzie jest najszersza), do wyniku pomiaru szerokości dodajemy przesunięcie (1” lub 0.5” lub 0.25”) i tak przygotowaną suwmiarkę kładziemy na podkładce. Mysz opieramy tak by jeden bok opierał się na jednej ze szczęk a jej tył na prowadnicy suwmiarki i rysujemy linię przesuwając mysz prostopadle do prowadnicy (a równolegle do szczęk) w kierunku drugiej szczęki. W moim programie pomiar rozdzielczości dokonuje się w zakładce Rozdzielczość. Rysowanie linii następuje po pierwszym kliknięciu, a po drugim zostaje zatwierdzony koniec linii. Pomiar dokonywany jest automatycznie (wartość bezwzględna z różnicy pomiędzy poziomym wymiarem punktu początkowego i punktu końcowego, tak więc pomiaru można dokonywać z lewej do prawej i z prawej do lewej :P).

Za informację o testach dziękuję Kyle’owi który wymyślił procedurę testowania rozdzielczości oraz pwlj, razem zebrali informacje i dopracowywali procedury testowania myszy.

 

A teraz krótko o programie:

Zmiany w bieżącej wersji 0.0.7 alfa:

  • fix: poprawiono błąd przepełnienia pamięci zasobów (zakładka „Interpolacja”),
Znane błędy:
  • brak dokładności pomiaru częstotliwości pobierania danych z myszy powyżej 500Hz,
Plany na przyszłość:
  • dodanie pomiaru szybkości myszy [~ver 0.0.8a],
  • przejście na DirectInput lub RawInput (WinXP lub nowszy) [~ver 0.0.8a],
  • dodanie zakładki test akceleracji (kamera wewnątrz kuli z podziałką w środowisku Direct3D), [~ver 0.0.10a]
  • dodanie testu przycisków [~ver 0.0.8a],
  • przepisanie kodu do WinAPI (+ kompilator Visual C++, co mam nadzieję że wyeliminuje to błędy pomiaru częstotliwości oraz szybkości myszy) [~ver 0.0.8a],
Program w wersji 0.0.7alfa można ściągnąć tutaj

 

 

P.S. Kyle, pwlj sprawdzie FAQ i dajcie znać czy nie ma jakiś błędów.

 

P.S.2. Jak ktoś bardzo będzie chciał zobaczyć to źródła udostępnię :P Program pisany w Borland C++ Builder 6 (tak wiem, lepiej zastosować Visual C++, ale nie trawię tego programu :| )

Edytowane przez Sanjuro

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Świetny! Doskonały jest ten program! Jak zrobiłeś ten test na interpolację :o

Idealnie! Po prostu mega ułatwienie! Jak tyś to wymyślił?! ;>

Wspaniałe! Gratulacje! Byle tak dalej ;)

BTW: coś dziwnego jest z tym modułem do częstotliwości... Kiedy inne porgramy pokazują mi po podkręceniu myszy na laptopie do 500Hz Twój program pokazuje mi chyba 357Hz, a inne ( wraz z mouserate chcecker ) 500... Hm, co prawda mam z laptopem coś nie tak, bo nie mogę zakręcić myszy wyżej niż 500 nie wiem czemu ( za dużo się zabawiałem z usbport.sys i pewnie coś nie tak jest ), ale różnica jest...

BTW2: DirectInput wydaje mi się, że jest od razu w windowsie, na pulpicie ( mysz nie gubi się tak jak w grach bez directinput, np. CS ) Więc rysowanie masz chyba directiput, co ? ;p

 

Proponuję przykleić ten temat.

 

Rysowanie linii następuje po 2 kliknięciach (pierwsze kliknięcie oznacza początek linii, a drugie koniec linii).

Rysowanie ( w każdym razie widać już tę linię ^^ ) następuje po jednym kliknięciu, a pomiar następuje po drugim ;) Edytowane przez pwlj

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Świetny! Doskonały jest ten program! Jak zrobiłeś ten test na interpolację :o

Idealnie! Po prostu mega ułatwienie! Jak tyś to wymyślił?! ;>

Wspaniałe! Gratulacje! Byle tak dalej ;)

Wyjaśniłem to w ostanim poście o programie w temacie A4Techa: 2452196" target="_blank">http://forum.purepc.pl/index.php?act=findp...amp;pid=2452196

 

BTW: coś dziwnego jest z tym modułem do częstotliwości... Kiedy inne porgramy pokazują mi po podkręceniu myszy na laptopie do 500Hz Twój program pokazuje mi chyba 357Hz, a inne ( wraz z mouserate chcecker ) 500... Hm, co prawda mam z laptopem coś nie tak, bo nie mogę zakręcić myszy wyżej niż 500 nie wiem czemu ( za dużo się zabawiałem z usbport.sys i pewnie coś nie tak jest ), ale różnica jest...

Uhhhh... tak też myślałem :| Sprobuję znaleźć jakieś lepsze rozwiązanie, dopóki nie przejdę na DI.

 

BTW2: DirectInput wydaje mi się, że jest od razu w windowsie, na pulpicie ( mysz nie gubi się tak jak w grach bez directinput, np. CS ) Więc rysowanie masz chyba directiput, co ? ;p

Ano własnie, że nie (nawet nie mam podpiętych nagłówków DirectInput :P ), chyba że Microsoft jakoś zemulował mychę (DI przechwytuje mychę i jest przekazywana do zwykłego API) ale wątpię :P pozatym takie rozwiązanie pewnie wprowadzałoby więcej błędów i opóźnień niż przy moim odczytywaniu częstotliwości :P Które też nie jest przechwytywane bezpośrednio z mychy (API lub DI) tylko przez protezę "MouseMove" która zapewne wprowadza opóźnienia :(

 

Hmmm... a może zamist mierzyć długość poziomom lini przy pomiarze częstotliwości to wyliczyć długość z Pitagotasa? Co o tym myślicie? Może mniejszy wpływ miałoby odjechanie myszt w góre, na dokładność pomiaru rozdzielczości :?

Edytowane przez Sanjuro

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Można by umieścić/dodać moduł pomiaru prędkości przemieszczania myszy. Potrzebne dane to w sumie jedynie rozdzielczość myszy którą byśmy wprowadzali. Dane byłyby przedstawiane w m/s.

 

 

poglądowo to widzę tak:

 

 

R- rozdz myszy czyli droga na calu ( wprowadzamy przed pomiarem z klawiatury ) ; I - ilość impulsów z myszy w sekundzie ( tutaj już gorzej bo program musi to pobierać podczas machania );

 

I:R= ilość cali na sek

 

I:R:39,37007874015748031496062992126 = ilość metrów na sek

 

Hmmm... a może zamist mierzyć długość poziomom lini przy pomiarze częstotliwości to wyliczyć długość z Pitagotasa? Co o tym myślicie? Może mniejszy wpływ miałoby odjechanie myszt w góre, na dokładność pomiaru rozdzielczości :?

Myślę że nie bo kiedyś jakiś producent może wpaść na pomysł interpolacji tylko w jednej płaszczyźnie - radzę robić 2 pomiary - w pionie i poziomie osobno - sprawdzamy wówczas poprawność każdej osi z osobna Edytowane przez Kyle

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

O kurczę, to jest dobry pomysł z prędkością! Byłoby nieźle!

Tylko jak miałoby się do tego taktowanie portu USB?

( wiem znów zamulam, ale to powinno mieć jakieś konsekwencje )

Albo i nie, bo skoro mysz się nie gubi to powinna odczytać prędkość.

 

Więc nie musisz odpowiadać ;)

Edytowane przez pwlj

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Można by umieścić/dodać moduł pomiaru prędkości przemieszczania myszy. Potrzebne dane to w sumie jedynie rozdzielczość myszy którą byśmy wprowadzali. Dane byłyby przedstawiane w m/s.

poglądowo to widzę tak:

R- rozdz myszy czyli droga na calu ( wprowadzamy przed pomiarem z klawiatury ) ; I - ilość impulsów z myszy w sekundzie ( tutaj już gorzej bo program musi to pobierać podczas machania );

 

I:R= ilość cali na sek

 

I:R:39,37007874015748031496062992126 = ilość metrów na sek

Mała poprawka powinno być chyba I:R*39,37007874015748031496062992126

 

Myślę że nie bo kiedyś jakiś producent może wpaść na pomysł interpolacji tylko w jednej płaszczyźnie - radzę robić 2 pomiary - w pionie i poziomie osobno - sprawdzamy wówczas poprawność każdej osi z osobna

Ok to dorobię pomiar rozdzielczości pionowej. Pewnie bedzie przełanczane tak jak długość przesunięcia myszy.

 

 

O kurczę, to jest dobry pomysł z prędkością! Byłoby nieźle!

Tylko jak miałoby się do tego taktowanie portu USB?

( wiem znów zamulam, ale to powinno mieć jakieś konsekwencje )

Albo i nie, bo skoro mysz się nie gubi to powinna odczytać prędkość.

Ano bedzie miało konsekwencje, będzie. Tzn narazie bedzie ograniczone podobnie jak odczytywanie częstotliwości, czyli będą tu powstawały błędy, które później postaram się usunąć. Edytowane przez Sanjuro

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mała poprawka powinno być chyba I:R*39,37007874015748031496062992126

W tym wypadku 1 cal na sekundę byłby równy niemal 40 metrom na sekundę ( chyba dobrze myślę ). A powinno być 1/40 metra czyli 0,025 m/s ( right? ).

 

[około]

Edytowane przez Kyle

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ano bedzie miało konsekwencje, będzie. Tzn narazie bedzie ograniczone podobnie jak odczytywanie częstotliwości, czyli będą tu powstawały błędy, które później postaram się usunąć.

No, ale skoro mysz nie pomija pikseli w takim ustawieniu ( A4Tech na przykład - 125Hz ) to jaki to będzie miało wpływ?

Co prawda przy bardzo szybkoich okrężnych ruchach, myszna 125Hz rysuje wielokąty zamiast okręgów, ale mimo wszystko działa sprawnie. Hm, wyjaśnij proszę dlaczego miałaby znaczenie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W tym wypadku 1 cal na sekundę byłby równy niemal 40 metrom na sekundę ( chyba dobrze myślę ). A powinno być 1/40 metra czyli 0,025 m/s ( right? ).

 

[około]

Sorry :oops: rzeczywiściemasz racje :D

 

No, ale skoro mysz nie pomija pikseli w takim ustawieniu ( A4Tech na przykład - 125Hz ) to jaki to będzie miało wpływ?

Co prawda przy bardzo szybkoich okrężnych ruchach, myszna 125Hz rysuje wielokąty zamiast okręgów, ale mimo wszystko działa sprawnie. Hm, wyjaśnij proszę dlaczego miałaby znaczenie.

Tak zgadza się. Dopóki nie będzie gubić pikseli to bedzie wszystko ok, pod warunkiem, że pomiar czasu będzie dobry. A, że już wiemy że coś narazie pomiar czasu nie działa dokładnie... to pewnie będą przekłamania dla częstotliwości >125Hz :? .

 

Kurcze.... Niech ktoś mnie sprawdzi:

 

((CPU / CPImyszy)*(127/5000)) * (DrogaWskaźnika / (IlośćCykli)) wynik powinien wyjść w [m/s]

 

DrogaWskaźnika = sqrt((abs(X-X1))^2+(abs(Y-Y1))^2)

 

CPU - prędkość procesora w Hz,

CPImyszy - jak nazwa wskazuje ustawiona rozdzielczość,

127/5000 - to wspołczynnik zamiany cali na metry,

DrogaWskaźnika - liczona z pitagorasa,

X, Y - bierzące punkt w którym jest wskaźnik myszy,

X1,Y1 - punkt poprzedni w którym był wskaźnik myszy,

IlośćCykli - brana z różnicy wskazań ilości cykli pomiędzy pomiarami (przesunięciem myszy)

 

i tak dla wyjaśnienia:

CPU/IlośćCykli - da nam czas pomiędzy pomiarami,

DrogaWskaźnika/CPIMyszy - da nam drogę przebytą przez wskaźnik w calach,

 

Jeśli wszystko jest wporządku to... kurcze może zostawimy na calach?? Bo trzeba nieźle machnąć, żeby wyszedł 1m/s :P

Edytowane przez Sanjuro

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja umiem ponad 2 :P

Jeśli obliczenia są dobre to spróbuj programik w wersji tymczasowej

Rozdzielczość myszy standardowo po uruchomieniu wynosi 800cpi, na liście są standardowe (400,600,1000,1200,1600,2000,2500) można wpisać swoją (tylko liczbę całkowitą), po czym po zmianie (zarówno z listy, jak i po wpisaniu swojej wartości) należy zatwierdzić wpis przyciskiem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Hm, hm przy szybkich ruchach nie daje rady - wychodzą jakieś kosmiczne 3-4m/s a mysz wcale nie dostaje zawału... Coś jest nie tak. Nawet jak nie wjeżdżam na tne obszar, gdzie wyśiwatlane są prękości. Myślę, że zrobiłeś wszystko poprawnie, ale coś jednak tu psuje.

A może jak akceleruje już to program świruje? Ale to bez sensu. Później popatrzę jeszcze z razerem

Edytowane przez pwlj

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Hm, hm przy szybkich ruchach nie daje rady - wychodzą jakieś kosmiczne 3-4m/s a mysz wcale nie dostaje zawału... Coś jest nie tak. Nawet jak nie wjeżdżam na tne obszar, gdzie wyśiwatlane są prękości. Myślę, że zrobiłeś wszystko poprawnie, ale coś jednak tu psuje.

A może jak akceleruje już to program świruje? Ale to bez sensu. Później popatrzę jeszcze z razerem

:blink: Uhhh... zalecałbym:

1) ustawić odświeżanie myszy 125Hz i sprawdź na "Rozdzielczości" czy poprawnie odczytuje wartość odświeżania,

2) pamiętaj po zmianie rozdzielczości myszy jak ją już wpiszesz to kliknij na przycisk, który ma za zadanie przeliczyć stałe z nową wartością rozdzielczości myszki,

 

I narazie tyle przychodzi mi do głowy :|

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

fajnyyy :) ten test prędkości. Chyba działa dobrze. Nastawiłem na 1600, zatwierdziłem buttonem i myszą działałem w trybie ~1800 dpi więc oczywiście w tej wersji wyniki odstępują od prawdy. Fajnie byłoby dać jeszcze okienko ze szczytową prędkością i jakiś przycisk resetujący przechwycone wartości. Oczywiście ten moduł wymaga testów ale tak na pierwszy ogień "for fun" to jest "cacy" . :wink:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Niestety nadal dyrdymały. Ponad 2.20m/s ;/ To niemożliwe - na 125Hz ta mysz wymięka przy 1m/s, a przestaje działać przy 2.10m/s.

Jak już zaczęłaby akcelerować, to prędkość powinno wskazywać niższą, a tu wcale nie, nawet jak minąłem te 2.10 i kursor "odelciał w kosmos", to nadal pokazywało jakieś wysokie prędkości.

Kurczę mam za małą rozdzielczosć ekranu ;/

Dobry test na szybkość byłby w 3D - jakimś środowisku, które bez przerwy możnaby obracać - wtedy mógłbym się rozpędzić bez uderzania kursorem o krawędź ekranu...

Edytowane przez pwlj

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Niestety nadal dyrdymały. Ponad 2.20m/s ;/ To niemożliwe - na 125Hz ta mysz wymięka przy 1m/s, a przestaje działać przy 2.10m/s.

Jak już zaczęłaby akcelerować, to prędkość powinno wskazywać niższą, a tu wcale nie, nawet jak minąłem te 2.10 i kursor "odelciał w kosmos", to nadal pokazywało jakieś wysokie prędkości.

Kurczę mam za małą rozdzielczosć ekranu ;/

Dobry test na szybkość byłby w 3D - jakimś środowisku, które bez przerwy możnaby obracać - wtedy mógłbym się rozpędzić bez uderzania kursorem o krawędź ekranu...

Kurcze tak się zastanawiam co tu może nawalać u ciebie :| Później jak wrócę do domu to spróbuję napisać prosty programik dla ciebie do testów, bo może pomiary czasu/procesora coś nawalają :|

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A może to wina mojego laptopa? On ma problemy z DIMouseHz - coś dziwnie wolno działa. Mam tutaj AXP 1600+ ( 1400MHz ).

Jak wrócę do domu to sprawdzę na sempronie ( 2200MHz ). Bo jeszcze na nim nie sprawdzałem ;p

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

BTW Sanjuro: Nie znasz może sposobu jak wyłączyć tryb standby w myszy - żeby po prostu w niego nie przechodziła?

Powienenem się raczej zapytać czy umiesz napisać taki program ;p

hmmm... nie jestem pewnien czy to nie sprawa firmware'u myszki, jak tak to... nie bardzo. Tzn. dać się da, ale wtedy trzeba znać assembler proca siedzącego w myszce, zdeassemblować firmware i spróbować znaleźć część odpowiedzialną za stand-by (a niestety nie zawsze się da skombinować firmware :( ).

 

Możeby się dało programowo poprzez wymuszanie na myszce odpowiedzi... np. przez inicjalizację oraz odrazu zwalnianie myszy w DirectInput, ale nie wiem czy by wtedy nie zgupiała mycha np. w grach.

 

A tu ten programik co ci mowiłem żebyś sprawdził czy dobrze liczy czas. Od góry pokazuje: szybkość procesora w MHz, częstotliwość odczytu czasu w Hz, okres odczytu czasu w ms (odczyty częstotliości/okresu oraz szybkości proca robione są bezpośredio z liczników procesora :) ). Suwakiem nastawiasz okres timera "wzorcowego" (co jest oczywiście żartem, bo ten timer to porażka, no ale na szybkiego może być :P).

 

Aha przez pewnien czas chyba nie bedzie update'ów programu, bo postaram się przepisać program do Visual C++ (co powinno zmniejszyc kod i może poprawi trochę dokładność wskazań), tyle że najpierw muszę uporać się z czystym WinAPI :mur: oraz znaleźć czas między robieniem projektów do budy :P uhhh... mam nadzieję, że zdąże przed sesją egzaminacyjną :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pomału uczę się już WinAPI (ciężkie to jest, ale za to są same plusy :D ) i przy okazji co widzę? DirectInput to przeżytek :P Microsoft dla "High Definition Inputs" (czyli nasze HiRes myszy :P ) zaleca użyć WM_INPUT czyli coś co bezpośrenio pobiera informacje z urządzenia wejściowego (Raw Input) :D czyli jeśli dobrze rozumiem pomija balast sterowników (akceleracja na sterach i inne śmieci :P). Zobaczymy czy uda mi się zrozumieć dobrze to WinAPI (kurde Billu był szalony wymyślając coś takiego :P ) i napisać dobry szybki soft do testowania myszek B-)

 

Ale narazie to tak jak mówiłem zwolnię tempo prac nad programem, gdyż nauka ważniejsza <_<

 

 

pwlj sprawdź mi jeszcze czy dobrze mierzy częstotliwość mychy ten programik (mój pierwszy z WinAPI i Raw Input :D ) jak nie działa poprawnie na żadnych ustawieniach odświeżania myszy to sprawdź i daj znać co pokazuje ten programik z powyższego postu.

Edytowane przez Sanjuro

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wygląda dobrze - ten drugi.

Bo w tym pierwszym to nie wiem o co chodzi nawet ;p ;p

Mógłbyś ew. dodać jakieś uśrednienie wyniku, bo na 1000Hz, to szybko migają te numerki [;

Edytowane przez pwlj

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja mam kilka spraw. Ale od początku. Dziś zakupiłem sobie gryzonia od A4 model wszystkim znany czyli X-718BF, podłączyłem myshę pod USB.

 

1. pierwsza sprawa to to, że VBenchmark wykrywa mi 124 Hz, z początku po włączeniu programu kilka razy pojawiają się wartości rzędu 1000-3000 (ale to uznaję za nieprawdę b z początku program może głupieć), a po ułamku sekundy rejestruje wartości ok 124. Z postów wyczytałem, iż powinno być 1000, ale może się mylę. Więc jak to wreszcie jest?

2. Zassałem AccelFixa z linka podanego w FAQ, i po rozpakowaniu miałem plik bez rozszerzenia ale zmieniłem na *.exe i uruchomiłem jednak akceleracja nadal była (2+1). Spróbowałem więc innego MousFixa którego sciągnąłem wcześniej i który zadziałał z moją starą mychą kulkową Mediatech cośtam (800@314 cpi - tak działała po 3latach). I również akceleracja występuje... Kompa oczywiście zrestartowałem i nic...

 

Jeśli ktoś ma pomysł jakiś to będę dźwięczny.

 

Aha Mychę próbowałem zarówno pod USB jak i pod PS/2 i pod PS/2 było jeszcze gorzej tzn częstotliwość=99 Hz.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A4Tech X-7XX mają blokadę na podkręcanie. To po pierwsze. Po drugie ssij to na acc http://aion.n0.be/accelfix/ [;

Poza tym, to spróbuj podkręcić ją na PS/2 - polecam do tego sterowniki Microsoftu - IntelliPoint - tam masz opcję w jakiś właściwościach myszy ustawienia częstotliwośći. Niestety 200Hz to max dla PS/2. Próbuj (;

Edytowane przez pwlj

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wygląda dobrze - ten drugi.

Bo w tym pierwszym to nie wiem o co chodzi nawet ;p ;p

Mógłbyś ew. dodać jakieś uśrednienie wyniku, bo na 1000Hz, to szybko zapie***** te numerki [;

Spokojnie to był tylko test. Na BCB robiłem ułatwiając sobie życie (pod rękoą wszystko co trzeba: komponenty, funkcje/procedury, właświwości, zdarzenia), ale okazało się co się okazało - czyli, że nie idzie uzyskać wymaganej szybkości i precyzji pomiaru (częstotliwość i szybkość). Dlatego zdecydowałem się wkońcu nauczyć tego dziwnego języka Microsoftu czyli WinAPI które najlepiej kompiluje się (najbardziej optymalnie) pod Visual C++. Po drodze znalazłem RawInput (co zastosowałem w tym teście) czyli coś co od czasów WinXP ma zastępować DirectInput i co zresztą poleca Microsoft (nawet łatwiej się go implementuje :), ale mój VisualC++6 nie czaił tego :P dobrze, że Microsoft wypuszcza SDK - biblioteki, nagłówki, kompilatory VisualC++ :) ). Narazie probuję przebrnąć przez gmatwaninę WinAPI (uhhh... niby łatwo zmaksymilizować okno, ale już gorzej jak się chce na początku to zrobić, jednocześnie usówając przycisk maksymalizacji okna :? ). Tak czy inaczej, kolejna wersja 0.0.8alfa będzie już wpełni na WinAPI co niestety nie nastąpi szybko :( może po drodze będą jakieś nie oficjalne wersje pre-alfa jakbym miał wątpliwości z czymś.

A... no własnie Kyle chciał maksymalnej wartości pomiarów. Na BCB pierwotnie była (zakładka Odświeżanie), ale usunąłem ją, bo czasami pojawiały się wyniki z kosmosu. Narazie pierwsze testy na WinAPI nie zapowiadają takich zachowań :P

 

Piterro no dziwne z tym AccelFix'em bo wlaśnie sprawdziłem i wygląda na to że wszystko jest ok :| Reszta to tak jak mówi pwlj

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

pwlj AccelFix z linka podanego przez ciebie pomógł chociaż jest jakoś dziwnie. Mianowicie na rozdziałkach myszy 800 i 1600 nie stwierdziłem akceleracji, na 600 i 1200 jest 2+1 a na 2000 jest 4+1. To chyba dlatego że 800 i 1600 to rozdzielczości prawdziwe a reszta to interpolowane sprzętowo. Mam rację?

Druga sprawa, czyli częstotliwość. Mnie nie chodziło o oc myszy tylko o jej fabryczne taktowanie. W specyfikacjach wyraźnie jest napisane, iż czas reakcji wynosi 1 ms czyli taktowanie powinno wynosić 1000 Hz, a przy wykrywanej w mojej myszy częstotliwości jest to 8 ms. Wystarcza mi te 125 (w poprzedniej myszce Bench wykrywał 35 Hz w porywach i w paincie wykreślenie kwadratu nie było problemem). Jednak skoro pisze, że standart w tej myszy to 1000 to dociekam czemu ja mam 125.

Mysz na stałe jest podłączona pod USB... Jutro zobacze te stery do M$.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

pwlj AccelFix z linka podanego przez ciebie pomógł chociaż jest jakoś dziwnie. Mianowicie na rozdziałkach myszy 800 i 1600 nie stwierdziłem akceleracji, na 600 i 1200 jest 2+1 a na 2000 jest 4+1. To chyba dlatego że 800 i 1600 to rozdzielczości prawdziwe a reszta to interpolowane sprzętowo. Mam rację?

Druga sprawa, czyli częstotliwość. Mnie nie chodziło o oc myszy tylko o jej fabryczne taktowanie. W specyfikacjach wyraźnie jest napisane, iż czas reakcji wynosi 1 ms czyli taktowanie powinno wynosić 1000 Hz, a przy wykrywanej w mojej myszy częstotliwości jest to 8 ms. Wystarcza mi te 125 (w poprzedniej myszce Bench wykrywał 35 Hz w porywach i w paincie wykreślenie kwadratu nie było problemem). Jednak skoro pisze, że standart w tej myszy to 1000 to dociekam czemu ja mam 125.

Mysz na stałe jest podłączona pod USB... Jutro zobacze te stery do M$.

Wiesz A4Tech narabia pisaniem między wierszami :P Owszem pisze 1ms, ale zauważ, że jest to SPI czyli typ szeregowej magistrali jaką komunikuje się czujnik z mikrokontrolerem, który także w myszy siedzi. Dalej już niestety transfer ustala właśnie ten mikrokontroler :( Napisałem maila do a4Techa żeby się wyspowiadali z tego, ale niestety odpowiedzi niet :(

 

Co do rozdzielczości i akceleraci to pewnie masz rację i 800 i 1600 sa rzeczywiste, a pozostałe interpolowane (własnie przez ten wspomniany mikrokontroler i już na to nic nie poradzisz :( ).

Edytowane przez Sanjuro

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ok dzięki, mycha nawet jeśli ma te 125 Hz i tak wymiata (jedyna wada to kabel ale nie można mieć wszystkiego).

 

Sanjuro, jakiś inny link daj do AccelFixa bo jak pisałem już rozpakowuje plik bez rozszeżenia i nie wiadomo jakie rozszerzeniu mu dać żeby działał.

A sam probram również wymiata, i zniecierliwością czekam na wersję w WinApi. Ale oczywiście zaczekam aż skończy się sesja, bo wiem co to znaczy - sam jestem studentem.:-)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A jednak maksymalnych wartości nie bedzie :| Czasami (najwiecej na poczatku programu) pojawiaja sie wartosci kosmiczne :/

 

Co do pomiaru prędkości to pwlj bedziesz mógł się rozpędzić mychą :P Jako, że RawInput ma zastąpić ponoć DirectInput tak więc informacja jest przekazywana bezpośrednio z myszki, a więc postaci informacji o przesunięciu myszy względem ostatniego punktu w trórym został pobrany odczyt :) Tak więc mimo, że wskaźnik zatrzyma się na końcu ekranu to pomiar będzie dokonywany dalej :) Dużo plusów, ale są też minusy :( Ale to na poziomie obsługi kontrolek, narazie walczę :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No to się stało wypuszczam PreRelase wersji 0.0.8Alpha :P Czyli chwalę się postępami opanowywania terenów WinAPI :damage_wall:

Czego możecie się spodziwać? Dużo błędów :P, dużo niedociągnięć, kilka rozwiązań testowych. Po kolei:

 

Zastosowałem RawInput do określania (jak narazie):

- częstotliwości - pobranie informacji o przesłaniu danych, niech ktoś sprawdzi czy dobrze działa bo zrobiłem małą optymalizację wielkości kodu przez co może kilka cykli później pobierać z proca stan liczników, co za tym idzie błędnie odczytywać częstotliwości,

- prędkości - w zasadzie to samo co przy częstotliwości + pobranie danych o przesunięciu myszy (nie wskaźnika!!!)

- testowo do rozdzielczości poziomej - przy pierwszym kliknięciu pobierane jest info o miejscu wskaźnika, a później już jest dokonywany pomiar rozdzielczości polegający na dodawaniu informacji o przesunięciu myszy (teoretycznie zmiana ustawień w windowsie nie powinna miec wpływ na rozdzielczośc, choć co prawda tego jeszcze nie sprawdzałem, bo przed chwilą wpadłem na pomysł, żeby tak mierzyć rozdzielczość ;) )

 

A teraz bugi i niedociągnięcia:

- [bug] po pewnym czasie gubi się przy pomiarach częstotliwości/pręskości :blink: (pomaga restart programu, więc coś chyba z pamięcia zasobów :-| ),

- [bug] czasami nie rysuje białej "planszy" na zakładkach Interpolacji i Rozdzielczości,

- [bug] czasami coś się chrzani z rysowaniem :? (na rozdzielczości nie rysuje 1 linii tylko wiele, nie przerysowywuje zakładek etc. - pomaga restart programu, więc coś chyba z pamięcia zasobów :-| ),

- [bug] okno się nie minimalizuje

- czasami nie pokrywa się wskaźnik z końcem linii (RawInput a zwykłe API + niedociągnięcie :P)

- zostają czasem pozostałości po wcześniejszych napisach,

- brak ustawień przeuniecia myszy na zakładce rozdzielczości (narazie wynik jest przedsatwiany dla 1 cala :P )

- nie zaczęta nawet zakładka O programie ;)

- zakładka Akceleracja, istnieje tylko z zapędu :P DŁUUUGOOOO nie bedzie jeszcze wykorzystana,

 

Plany do "finalnej" wersji 0.0.8Alfa:

- naprawienie błędów (jak zrozumiem, przyczynę ich powstawania :blink: )

- poprawienie niedociągnięć,

- Rozszerzenie info myszy, wykończenie zakładek, dostrojenie mechanizmu auto-usatwiania kontrolek (ze względu na różna rozdzielczość ekranu lub jej zmianę),

- usatwienie czcionki własnej (Tahoma - 8) - narazie czcionka jest pobierana z systemu, więc może się zdażyć, że się wszystko pochrzani i najdą na siebie niektóre kontrolki (jeśli ktoś ma inne niż sandardowe ustawinie wyglądu/czcionek systemowych)

 

Jak zauważycie, jakiś błąd, niedociągnięcie, czy macie jakąś sugestię to piszcie.

 

Program do ściagnięcia tutaj

 

 

EDIT:

-------

Lekko odświeżyłem powyższy program (na tym samym linku):

- odczyt i zmiana położenia wskaźnika z danych Raw Input na białym polu w zakładce Interpolacja oraz Rozdzielczość

- dodałem RadioButtony od długości rysowanej linii

 

Co do tego pierwszego to na zakładce Interpolacja RawInput jest ORT: ORT: ORT: <span style='color: red;'>ORT: włancza</span>ny tylko na czas przytrzymania lewego klawisza myszy (oraz tylko na polu białym)

A na zakładce Rozdzielczość Raw Input podczymywany jest od pierwszego klikniecia do drugiego (czyli tu jak w poprzednim PreRelase), jedyna zmiana to taka, że teraz także wskaźnik myszy podczas odczytów z RawInput jest poruszany zgodnie z tymi danymi (czyli ruchem myszy), przez co ma się wrażenie jakby mysz była oporna gdy ma się usatwioną większą szybkość myszy w windowsie i jak się wyjedzie poza ekran (zakł rozdzielczość) to po powrocie wskaźnik chwilę jeszcze trzyma się krawędzi Co jest spowodowane tym, że wskazanie obliczone poprzez RawInput przekroczyło fizyczny rozmiar ekranu (Win zatrzymuje wskaźnik przy końcu ekranu, a program nakazuje mu przejść dalej niestety - a może stety windows wygrywa)

Jak się ma wiekszą szybkość ustawioną w windowsie to na tych zakładkach podczas aktywnego RawInput wskaźnik czasami skacze. Spowodowane jest tym, że Widnows ma pierwszeństwo - przeniesie wskaźnik tam gdzie chce, a następnie program nakaże mu powrócić do innego miejsca (drobne drgnięcie). Jak już pisałem usatwcie myszę tak jak ma być to tego efektu nie bedzie ;)

 

- [bug] czasami coś się chrzani z rysowaniem (na rozdzielczości nie rysuje 1 linii tylko wiele

Tą częśc problemu chyba zrozumiałem - po zmianie zakładek zwalniam bufor, ale nie zeruję licznika klików, przez co nie jest pobierany nowy bufor :P Przynajmniej mam taką nadzieję, że to to ;) Jak będę miał czas to zobaczę na to :P

Edytowane przez Sanjuro

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...