Comunicación SDK#

Cuando se utiliza cualquier método en FTC® SDK que accede al hardware, ya sea el ajuste de la potencia del motor, la lectura de un codificador, un sensor, etc, se envía un LynxCommand.

Nota

Los LynxCommands no se envían directamente desde el controlador del robot a un Expansion Hub a través de USB; en un expansion hub se envían a través de USB a un FTDI, que convierte la señal USB en una UART. En el Control Hub, este paso USB se omite, en su lugar la placa del control hub envía los datos directamente a través de UART al Expansion hub interno.

Advertencia

El hecho de que LynxCommands sea bloqueante (y más concretamente que haya un bloqueo maestro en cada dispositivo usb) significa que el multiaccionamiento en las llamadas de hardware no es útil en el mejor de los casos y suele ser perjudicial para el rendimiento.

Si se utiliza un teléfono Android y un Hub de Expansión, los LynxCommands se envían a través de USB; sin embargo, si se utiliza un Hub de Control, los LynxCommands se envían a través de UART. Esto es muy importante, no sólo por la mayor fiabilidad con UART en lugar de USB, sino también porque los LynxCommands tardan aproximadamente 3 milisegundos a través de USB y aproximadamente 2 milisegundos a través de UART.

Cualquier expansion hub conectado a través de RS485 recibe sus comandos a través de ese conector. Los concentradores Lynx no tienen que retransmitir paquetes, por lo que la latencia añadida de este proceso no es significativa, pero habrá cierta latencia añadida. En teoría, se pueden conectar hasta 255 expansion hubs.

Nota

Interactuar con dispositivos I2C toma significativamente más tiempo; más de 7 milisegundos sobre USB. Sin embargo, esto no se debe a que cada LynxCommand tarde más tiempo, sino a que se deben enviar múltiples LynxCommands para interactuar con I2C.

Tenga en cuenta que desde la versión 5.5 del SDK, las llamadas I2C en el Control Hub son mucho más rápidas que las del Expansion Hub. Esto se debe a que la tasa de sondeo se incrementó drásticamente, lo que puede reducir el tiempo perdido innecesario.