Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Que pasa con el control total USB en Linux?
#1

Hola:

Voy a comentar este tema a modo de ponencia, sin que sea realmente "la verdad" sobre el USB en Linux.

Me explico. Desde hace mas de un año he tratado de incluir el uso de USB en mis proyectos de hardware e IoT tratando de encontrar la manera de que la transferencia de información entre la PC y el dispositivo externo sea a través de hiddev.

Pese a los esfuerzos no lo he conseguido y aunque hiddev aparece en /dev cuando conecto mis dispositivos externos no logro encontrar la aplicación que logre la conexión.

Cosa que en Windows si existe. Pero de ninguna manera voy a "ensalzar" al Win2.

Bien, ahora pongo lo que he observado. Por ejemplo Arduino hizo su IDE creando un puerto en Win2 como Com3, 5, 7 etc., Y en cambio en Linux los crea como /dev/ttyUSB0, 1, 2 etc, lo que me da la impresión de que por ahora, las distros de Linux no han desarrollado la API adecuada para trabajar directamente con hiddev.

Lo harán en algún momento?

La desventaja de usar ttyUSB0 es la máxima velocidad de transferencia, ya que al tratarse de un puerto serie "de los viejos" sus velocidades pudieran no alcanzar mas allá de los 900,000 bps (aprox) lo cual es una limitante, porque se trataría de usar siempre USB1.0, quedando descartado, por ahora, USB2.0 o USB3.0.

Bueno, pues entonces si no hay de otra opción, haré mis proyectos usando ttyUSBX y así salir del paso....

Estoy en lo correcto? o hay algo mas???...

Saludos...

Es mejor saber un poco de todo, que todo de muy poco. Lo primero, garantiza la supervivencia humana.
    ¡Gracias!
#2

(01-05-2021, 21:09)AlfredoSC escribió:  Estoy en lo correcto? o hay algo mas???...

Hola Alfredo, desconozco el tema ya que es una asignatura pendiente para mi pero estoy seguro que existe una forma fiable y veloz de comunicarse mediante usb en linux solo hay que ver algún ejemplo.
Preguntare en la lista internacional de gambas y te invito a que hagas lo mismo si lo deseas.
Saludos.
[-] Los siguientes 1 usuarios dice gracias a tincho por este post:
  • AlfredoSC
    ¡Gracias!
#3

(01-05-2021, 21:32)tincho escribió:  estoy seguro que existe una forma fiable y veloz de comunicarse mediante usb en linux solo hay que ver algún ejemplo.

Temiendo cometer un error por desconocimiento del tema USB_CDC, probé mi aplicación en vb6 para controlar un dispositivo electrónico de mi propio diseño y conectado a la PC por un cable USB, bajo las siguientes consideraciones:

Nota: Todo lo que sigue lo hago en Win2, pero la finalidad es migrarlo a Ubuntu (y otras distros)

1.- La PC creará un puerto Serial Virtual (digamos COM7) el cual configuro a 57600 bps.
2.- El dispositivo electrónico, tiene configurados 2 periféricos por hardware/software. Uno para USB_CDC (para el cable USB) y otro RS-232 a 9600 bps.
3.- De vuelta en el PC abro hyperterminal en COM1 (ojo: no COM7), por donde recibiré los datos del dispositivo electrónico a 9600 bps. Esto es con el fin de monitorear lo que está sucediendo.

En la Aplicación VB6 de la PC envío una serie de datos por USB (haciendo uso de COM7 a 57600 bps) al dispositivo electrónico. Éste último, recibe los datos y los manda luego por RS-232 de regreso a la PC quien los recibe por COM1 en hyperterminal a 9600 bps.

Conclusión:

Cada hardware/software funciona independiente, tanto en la PC como en el dispositivo electrónico, mientras se cumpla la premisa de hacer las transmisiones y recepciones en tiempos diferentes, es decir no de manera simultánea. Así que USB cumple su función de enviar a la velocidad que le permite su estándar:

USB 1.0 ------ 1.5 Mbps
USB 1.1 ------ 12 Mbps
USB 2.0 ------ 480 Mbps
USB 3.0 ------ 4.8 Gbps

De todos modos, si se quisiera enviar datos en "tiempo real" usando USB_CDC, no sería posible con ésta tecnología, pues al crearse puertos virtuales COMX éstos, debido a su "lentitud" con respecto a USB, serían el cuello de botella.

Bien, pues ahora sabiendo ésto, procedo a mi aplicación con Gambas para correr en Linux.

Saludos.

Es mejor saber un poco de todo, que todo de muy poco. Lo primero, garantiza la supervivencia humana.
    ¡Gracias!
#4

(14-06-2021, 17:59)AlfredoSC escribió:  Bien, pues ahora sabiendo ésto, procedo a mi aplicación con Gambas para correr en Linux.
Bueno, algo te sigo pero ya nos contaras como fue la cosa.
Saludos.
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)