Comunicare SDK#

When using any method in the FTC® SDK that accesses hardware, be that setting motor power, reading an encoder, a sensor, etc., a LynxCommand is sent.

Notă

LynxCommand-urile nu sunt trimise direct din Robot Controller către un Expansion Hub prin USB; în un expansion hub ele sunt trimise prin USB la un FTDI, care convertește semnalul USB într-un semnal UART. În control hub, acest pas USB este sărit, iar în schimb placa control hub-ului trimite datele direct prin UART către expansion hub-ul intern.

Atenționare

LynxCommand-urile fiind blocante (și mai specific un master lock fiind prezent pe fiecare dispozitiv usb) înseamnă că apelurile hardware multithreading sunt, în cel mai bun caz, nefolositoare și în general dăunătoare performanței.

Dacă un telefon Android și un Expansion Hub sunt folosite, LynxCommand-urile sunt trimise prin USB; însă, dacă un Control Hub este folosit, LynxCommand-urile sunt trimise prin UART. Acest lucru este foarte important, datorită fiabilității prin UART față de USB, dar și deoarece LynxCommand-urile iau aproximativ 3ms prin USB și aproximativ 2ms prin UART.

Orice expansion hub conectat prin RS485 primește comenzile prin acel conector. Hub-urile Lynx nu trebuie să retrimită pachete, așa că latența adăugată prin acest proces nu este semnificativă, însă va fi o latență adaugată. Până la 255 expansion hub-uri pot fi conectate în teorie.

Notă

Interacțiunea cu dispozitivele I2C poate lua semnificativ mai mult; până la 7ms prin USB. Însă, acest lucru nu se întamplă deoarece LynxCommand-ul ia mai mult, însă deoarece mai multe LynxCommands-uri trebuie trimise pentru a interacționa cu I2C.

Reține că începând cu versiunea 5.5 a SDK-ului, apelurile I2C pe Control Hub sunt mult mai rapide decât cele pe Expansion Hub. Acest lucru se întâmplă deoarece rata de actualizare a fost crescută dramatic, care poate reduce din timpul irosit.