Page 1 of 1

Manejar puerto USB (serial)

Posted: Fri Jul 29, 2011 10:44 am
by JmGarcia
Para acceder a un puerto USB emulador serie, los que aparecen dentro del apartado "Puertos (COM y LPT)" del administrador de despositivos de MiPC, lo hago de la siguiente forma:
hPuerto:=oPenComm("COM1:",1024,128)
WriteComm(hPuerto,"Lo que sea...")
CloseComm(hPuerto)
.../...


Pero mi problema viene cuando ese dispositivo no aparece en Puertos (COM y LPT) si no en "Controladoras de bus serie universal" con los nombres:
USB Serial Converter A
USB Serial Converter B

¿ Como manejo esos puertos con los comandos/funciones de xHarbour/FW ?

Re: Manejar puerto USB (serial)

Posted: Thu Aug 04, 2011 3:47 pm
by JmGarcia
¡¡¡ Socorroooooo.... !!! :(

Re: Manejar puerto USB (serial)

Posted: Thu Aug 11, 2011 2:01 pm
by MarioG
Esto es un O.T. aunque afin a este tema
Existe alguna función que me indique que es un DataDrive lo que esta coenctado al puerto USB?. algo así como IsDiskette()

gracias

Re: Manejar puerto USB (serial)

Posted: Thu Aug 11, 2011 2:31 pm
by JmGarcia
No es ningun device de almacenamiento. Es un transmisor de información, tipo modem, tipo bascula, etc...
Mi problema es que no se manejarlo ya que no esta definido como un COM.

Re: Manejar puerto USB (serial)

Posted: Thu Aug 11, 2011 7:55 pm
by Antonio Linares

Re: Manejar puerto USB (serial)

Posted: Thu Aug 11, 2011 9:06 pm
by JmGarcia
Antonio, gracias por el enlace, pero mi problema es que los puertos serie USB que quiero manejar no aparecen en Puertos (COM y LPT) del "Administrador de dispositivos" si no que aparecen en Controladoras de bus serie universal y no tienen NUMERO de puerto, se llaman:
USB Serial Converter A
USB Serial Converter B

Re: Manejar puerto USB (serial)

Posted: Mon Sep 26, 2011 10:09 pm
by JmGarcia
¿ Alguna pista ? :oops:

Re: Manejar puerto USB (serial)

Posted: Mon Sep 26, 2011 11:33 pm
by admsoporte
Checa bien en propiedades del com que aparece en los drivers usb, tiene asociado un com configurable como los normales, puede ser com4, com5 o tu lo puedes modificar para que sea com1.
Lo anterior quiere decir que aunque sean puesrtos serie a traves de USB, tienen asociado un com virtual
Saludos

Re: Manejar puerto USB (serial)

Posted: Tue Sep 27, 2011 6:51 pm
by JmGarcia
admsoporte wrote:Checa bien en propiedades del com que aparece en los drivers usb...
Pues solo sale en "Controladoras bus serie universal". En el apartado "Puertos (COM y LPT)" no hay cambios.

Te adjunto el panel del "Administrador de Dispositivos" antes y después de enchufar el periférico que quiero manejar.
Image

Re: Manejar puerto USB (serial)

Posted: Sat Apr 14, 2012 9:06 pm
by JmGarcia
Ahora sin embargo me encuentro con un puerto serie de un aparato de USB que me aparece en el apartado de "Puertos (COM y LPT)" y sin embargo no lo puedo manejar con las funciones de manejo de puertos serie.

Cuando hago el OpenComm me devuelve números mayores que cero y cuando uso, acto seguido, BuildCommDcb me da false es decir que no reconoce los puertos serie que no sean físicos. Tampoco el SetCommState.

Con el hyperterminal si manejo todos los puertos.

¿ Alguna idea ?

Re: Manejar puerto USB (serial)

Posted: Sun Apr 15, 2012 4:59 pm
by JmGarcia
¿ Alguna libreria de comunicaciones serie de licencia GNU (libre) ?

Re: Manejar puerto USB (serial)

Posted: Tue Apr 17, 2012 12:53 pm
by JmGarcia
"Wrapeando" la funcion CreateFile de la librería kernerl32.dll, que es como se manejan los puertos COM en Win32, al consultar GetLastError me da error 123 (ERROR_INVALID_NAME. The filename, directory name, or volume label syntax is incorrect) para un dispoditivo de comunicaciones que al instalarlo aparece como COM21.

El código:

Code: Select all

CreateFile("COM21:",nOr(GENERIC_READ,GENERIC_WRITE),0,nil,OPEN_EXISTING,0,nil) // Devuelve -1
GetLastError() // Devuelve 123
DLL32 FUNCTION GetLastError() AS LONG PASCAL FROM "GetLastError" LIB "kernel32.dll"
DLL32 FUNCTION CreateFile(lpFileName AS LPSTR,;
                          dwDesiredAccess AS LONG,;
                          dwShareMode AS LONG,;
                          lpSecurityAttributes AS LONG,;
                          dwCreationDisposition AS LONG,;
                          dwFlagsAndAttributes AS LONG,;
                          hTemplateFile AS LONG) AS LONG PASCAL FROM "CreateFileA" LIB "kernel32.dll"
Para otros COMs como COM1 y COM2 (puertos físicos no virtuales) me devuelve datos válidos.

¿ Alguna idea ?

Re: Manejar puerto USB (serial)

Posted: Tue Apr 17, 2012 3:53 pm
by JmGarcia
¿ Y si me dedico a usar un control OCX ?

¿ Como usar CreateOleObject("MSCommLib.MSComm") ?
¿ Que DLLs o LIBs hacen falta ?

¡¡¡ SOCORRO !!!

Re: Manejar puerto USB (serial)

Posted: Tue Aug 21, 2012 2:25 am
by Simon
Hola Jm tengo el mismo problema con dispositivos usb, lo solucionaste ? como hiciste ?