DEV...ELeferno

tady se pracuje. Kurva, fakt těžce se tu pracuje. Ale už to mám skoro hotový.Lz.

Nedalo nám to a pokusili jsme sezjistit, jakým způsobem jednotka ET-312 komunikuje s připojeným PC. Zde jsou výsledky.

Propojovací kabel
Propojovací kabel je ideálně stíněný trojžilový, v nouzi a na kratší vzdálenosti ale vyhoví i stíněná dvojlinka. Jednotka komunikuje s PC po sériovém rozhraní s vlastním proprietárním komunikačním protokolem. Ze séroového rozhraní jsou využity vodiče RX, TX a GND. Zapojení kabelu (pro konektor DB-9) je následující:


Strana ET-312 (jack 3,5") ------ Strana PC (DB-9P)

kuželka ----------------------------------- pin 2
prstenec ---------------------------------- pin 3
tělo ----------------------------------------- pin 5

Komunikační rychlost je pevná 19 200 Bd, 8 datových bitů, 1 stopbit, bez parity a handshake.

Komunikační protokol je postaven na principu zpráva-odpověď, přičemž iniciátorem komunikace je připojené PC. Zprávy i odpovědi mají variabilní délku v závisalosti na typu přenášené informace.

Zprávy, odesílané jednotkou ET-312.

Jednotka odesílá dva typy zpráv. Prvním typem je jednobajtová zpráva o potvrzení (ACK, 0x06) či odmítnutí (NAK, 0x07) přenesené zprávy od PC. Druhým typem zprávy je trojbajtová zpráva, uvozená kódy 0x22 nebo 0x21, následovaná jednobajtovou hodnotou a kontrolním kódem (KK). Kontrolní kód je určen jako modulo 256 součet prvních dvou bajtů (sečteme a zahodíme případný devátý bit). Aby komunikace nebyla jednoduchá, obsahují některé zprávy dvojici hodnot, uložených v horním a spodním nibblu.

Zahájení komunikace.
Pro zahájení komunikace je žádoucí provést vypnutí jednotky, propojení s PC a její znovuzapnutí. Komunikaci zahajuje PC odesláním bajtu 0x00. Jednotka potvrzuje zahájení přenosu bajtem 0x07(ACK).  

Synchronizace.
Synchronizace je dle všeho vývojáři jednotky založena do protokolu kvůli ztížení odposlouchání protokolu a zlepšení prodejnosti firemního software, praktický význam nemá. Synchronizační zprávy jsou trojbajtové a mají následující strukturu:

PC pro jednotku odesílá výzvu k synchronizaci ve tvaru   0x2F RX KK, kde RX je náhodně zvolená hodnota
Jednotka potvrzuje synchronizaci zprávou   0x21 RY KK, kde RY je náhodná hodnota, volená jednotkou

Po výměně synchronizační informací je spočítán klíčovací bajt MOD podle vzorce MOD = XR xor RY xor 0x55
Pozor na to, že první bajt má prohozený vrchní a spodní nibble ! Takto získaným klíčovacím bajtem musí být od okamžiku synchronizace xorován každý bajt, odesílaný z PC do jednotky. Komunikace směrem od jednotky do PC kódována není.

Čtení dat z jednotky.
PC odesílá jednotce požadavky na sdělení hodnoty jednotlivých parametrů ve čtyřbajtovém formátu 0x3c IK nn KK (každý bajt je xorován hodnotou bajtu MOD), kde IK je identifikace kanálu (kanál A má identifikaci 0x40, kanál B 0x41) a nn je identifikace příslušného parametru, jednotka odpovídá trojbajtovou zprávou ve tvaru (typicky) 0x22 XX KK, Při chybě v přenosu odpovídá jednotka jednobajtovou zprávou NAK (0x07). PC může jednotku požádat o následující hodnoty:

 

Parametr Požadavek (musí být ještě xorován MOD)  Odpověď Poznámka
Doba zapnutí kanálu A                            3C 40 98 KK 22 [00-FF] KK  
Doba zapnutí kanálu B                          3C 41 98 KK  22 [00-FF] KK  
Doba vypnutí kanálu A  3C 40 99 KK 22 [00-FF] KK  
Doba vypnutí kanálu B  3C 41 99 KK 22 [00-FF] KK  
Nastavení intenzity A  3C 40 A5 KK 22 [80-FF] KK  
Nastavení intenzity B  3C 41 A5 KK 22 [80-FF] KK  
Nastavení spodní meze A  3C 40 A6 KK 22 [80-FF] KK  
Nastavení spodní meze B  3C 41 A6 KK 22 [80-FF] KK  
Nastavení horní meze A  3C 40 A7 KK 22 [80-FF] KK  
 Nastavení horní meze B  3C 41 A7 KK 22 [80-FF] KK  
Šířka pulsu A  3C 40 B7 KK 22 [40-FF] KK  
Šířka pulsu B  3C 41 B7 KK 22 [40-FF] KK  
Spodní mez šířky pulsu A  3C 40 B8 KK 22 [40-FF] KK  
Spodní mez šířky pulsu B  3C 41 B8 KK 22 [40-FF] KK  
Horní mez šířky pulsu A  3C 40 B9 KK 22 [40-FF] KK  
Horní mez šířky pulsu B  3C 41 B9 KK 22 [40-FF] KK  
 Časování kanálu A  3C 40 9A KK 22 FN KK  zde nibble F určuje způsob vypnutí 0=normal 2=tempo 4=MultiAdjust
a nibble N        způsob zapnutí 1=normal 5=efekt 9=MultiAdjust
 Časování kanálu B
 
 3C 41 9A KK 22 FN KK  zde nibble F určuje způsob vypnutí 0=normal 2=tempo 4=MultiAdjust
a nibble N        způsob zapnutí 1=normal 5=efekt 9=MultiAdjust
Frekvenční režim kanálu A  3C 40 B5 KK 22 RV KK  
Frekvenční režim kanálu B  3C 41 B5 KK 22 RV KK  
Režim řízení pulsu kanálu A  3C 40 BE KK 22 RV KK  zde nibble R určuje způsob cyklování (rate) 0=nic 2=pacet 4=MultiAdjust
a nibble V určuje hodnotu (value)         1=nic 4=val/width 5=min/width
Režim řízení pulsu kanálu B  3C 41 BE KK 22 RV KK  zde nibble R určuje způsob cyklování (rate) 0=nic 2=pacet 4=MultiAdjust
a nibble V určuje hodnotu (value)         1=nic 4=val/width 5=min/width
Režim řízení intenzity A                         
 
 3C 40 AC KK 22 MR KK  zde nibbly M a R určují nastavený režim: M: 4=nic, 0=depth, R: 4=nic, 0=MA, 6=tempo
Režim řízení intenzity B  3C 41 AC KK 22 MR KK  zde nibbly M a R určují nastavený režim: M: 4=nic, 0=depth, R: 5=nic, 1=MA, 7=tempo
(ne, opravdu nevím, proč zde vývojáři použili nekonzistentní model)
Dotaz na právě běžící mód  3C 40 7B KK 22 MM KK  zde 00=none    76=waves    77=stroke    78=climb    79=combo      7A=intense    7B=rhythm    7C=audio1    7D=audio2    7E=audio3 7F=split    80=random1    81=random2    82=toggle    83=orgasm
84=torment     85=phase1    86=phase2    87=phase3    88=user1  
89=user2    8A=user3    8B=user4    8C=user5
Frekvence kanálu A  3C 40 AE KK 22 [08-FF] KK  zde vyšší hodnotě frekvence odpovídá nižší hodnota dat. Reálná frekvence je rovna f=255-data
Frekvence kanálu B  3C 41 AE KK 22 [08-FF] KK  zde vyšší hodnotě frekvence odpovídá nižší hodnota dat. Reálná frekvence je rovna f=255-data
Maximální frekvence kanálu A  3C 40 AF KK 22 [08-FF] KK  zde vyšší hodnotě frekvence odpovídá nižší hodnota dat. Reálná frekvence je rovna f=255-data
Maximální frekvence kanálu B  3C 41 AF KK 22 [08-FF] KK  zde vyšší hodnotě frekvence odpovídá nižší hodnota dat. Reálná frekvence je rovna f=255-data
Minimální frekvence kanálu A   3C 40 B0 KK 22 [08-FF] KK  zde vyšší hodnotě frekvence odpovídá nižší hodnota dat. Reálná frekvence je rovna f=255-data
Minimální frekvence kanálu B  3C 41 B0 KK 22 [08-FF] KK  zde vyšší hodnotě frekvence odpovídá nižší hodnota dat. Reálná frekvence je rovna f=255-data
Rychlost změny šířky pulsu A  3C 40 BE KK 22 [00-FF] KK  zde vyšší hodnotě odpovídá nižší rychlost změny
Rychlost změny šířky pulsu B  3C 41 BE KK 22 [00-FF] KK  zde vyšší hodnotě odpovídá nižší rychlost změny


Nastavení parametrů jednotky
Pro každý z výše uvedených parametrů (s výjimkou módu zařízení) lze realizovat programové nastavení. Příkaz pro nastavení má obecný tvar

  0x4d IK IP xx KK

kde  IK je identifikace kanálu, IP je identifikace parametru a xx je nově nastavovaná hodnota. Celá zpráva musí být bajt po bajtu xorována bajtem MOD. Jednotka v případě úspěšného provedení příkazu odpovídá bajtem 0x06 ACK, neúspěšný povel ohlásí bajtem 0x07 NAK.

Vyhledávání

Kdo je online

Celkem přihlášeno: 476 uživatelů
No members online
Členů: 0 / Hostí: 476

Nejnovější uživatelé

  • Frfafel
  • PragueMate
  • 5Z28BA7 Thank you for signing up - it was amazing and delightful, wishing you all the best and much success. www.apple.com dsaqwrqw
  • Jiří
  • 11591159altara