Conectando mediante USB (CreateUsb)
Esta guía explica cómo establecer una conexión con un TPV Integrado usando el transporte USB (serie).
¿Qué es la conexión USB?
El modelo de conexión USB establece un enlace físico directo entre el sistema de automatización y el terminal TPV mediante una interfaz serie. Llamas a CreateUsb con los parámetros requeridos para tu plataforma; la función devuelve una instancia de Connector que expone las mismas funciones de operación de dispositivo que los conectores HTTP.
Cuándo usar la conexión USB
Usa una conexión USB cuando:
- El terminal TPV esté físicamente cerca del sistema de automatización
- La conectividad de red no esté disponible o esté restringida
- Se requiera una conexión directa, punto a punto
El USB ofrece un canal simple y determinista, pero es sensible a la desconexión física: si se desconecta el cable, el canal se pierde y debes restablecerlo.
Si usas setupParams (Kotlin) o el comando Setup (.NET) con el terminal, revisa las secciones de comportamiento de reconexión de esta documentación.
Antes de comenzar
Antes de conectar por USB, asegúrate de que:
- El terminal TPV esté encendido y configurado para el modo TPV Integrado
- El cable USB esté correctamente conectado entre el TPV y el sistema de automatización
- La biblioteca del TPV Integrado esté disponible en tu aplicación
- El sistema operativo reconozca el TPV como un dispositivo serie (por ejemplo, puerto COM en Windows,
/dev/ttyACM0en Linux)
Paso 1: Crear el USB Connector
Crea un Connector con CreateUsb usando el parámetro requerido para tu plataforma.
Parámetros:
| Parámetro | Tipo | Obligatorio | Descripción | Disponibilidad |
|---|---|---|---|---|
address | string | Sí | La dirección del puerto serie local (por ejemplo, Windows: COM1, COM3; Linux: /dev/ttyACM0). | .NET |
usbDevice | UsbDevice | Sí | Objeto de dispositivo Android para la conexión USB. | Kotlin |
setupParams | HashMap<String, String> | No | Configuración del terminal (por ejemplo, friendly name). Consulta la sección de flujo de reconexión para más detalles. | Kotlin |
Ejemplo — C#:
Connector connector = Connector.CreateUsb("COM3");Ejemplo — Kotlin:
fun setupConnectorInstance(context: Context): POSIntegrado? {
val usbManager = context.getSystemService(Context.USB_SERVICE) as UsbManager
// Retrieve available device for USB connection
val deviceList: List<UsbDevice> = usbManager.deviceList.map { it.value }
// Select a available device
val selectedDevice = deviceList.firstOrNull()
val connectorInstance = if (selectedDevice != null) {
POSIntegrado.createUsb(
context = context,
usbDevice = selectedDevice,
setupParams = hashMapOf(
SetupParameters.SELLER_FRIENDLY_NAME to "My Store"
)
)
} else {
null
}
return connectorInstance
}Cuando la llamada es exitosa, se devuelve una instancia de Connector. La conexión se inicializa, pero el terminal aún no se ha validado.
Paso 2: Validar el terminal
Antes de ejecutar cualquier operación de dispositivo, valida el terminal con Polling:
var pollingResult = connector.PollingAsync();Procede solo si la respuesta de Polling indica que el terminal está listo.
Paso 3: Ejecutar operaciones
Una vez validado, usa el Connector para ejecutar operaciones de dispositivo como Sale, Refund o GetReports. Solo se puede procesar una operación a la vez por Connector.
Paso 4: Cerrar la conexión
Después de completar todas las operaciones, libera la conexión:
connector.Close();La instancia de Connector deja de ser válida después del cierre y no se puede reutilizar.
Siguientes pasos
- Modelos de conexión — Comparación de USB y red.
- Connector y flujos de comunicación — Regla del ciclo de vida y de ejecución secuencial.
- Reconexión, Polling y resiliencia — Cuándo hacer polling y cómo funciona la reconexión.
- Referencia de métodos y parámetros — Lista detallada de parámetros y ejemplos de código para .NET y Kotlin.