Page 1 of 1

Como detectar Lector Code-Bar instalado?

Posted: Wed Jun 06, 2018 11:51 pm
by FranciscoA
Amigos.
Hay alguna función en xHarbour-Fivewin que detecte si se tiene instalado un lector de codigo de barras?

Tengo un pequeño software que quiero se pueda ingresar de tres maneras:
1- Normalmente
2- Touch
3- Tarjeta con código de barras

Alguno de ustedes tiene una función (que pueda compartir) para detectar si la pc tiene instalado un lector de código de barras?

Saludos.

Re: Como detectar Lector Code-Bar instalado?

Posted: Thu Jun 07, 2018 3:05 am
by FranciscoA
Hola.
Modifico la pregunta:
Como determinar que tipo de dispositivo se encuentra conectado a un puerto USB? (via programacion por supuesto)
Gracias

Re: Como detectar Lector Code-Bar instalado?

Posted: Thu Jun 07, 2018 2:53 pm
by karinha
Mira \samples\PROTECT.PRG se ayuda.

Saludos.

Re: Como detectar Lector Code-Bar instalado?

Posted: Thu Jun 07, 2018 10:56 pm
by FranciscoA
Karinha.
Gracias por tu interes. No es lo que estoy buscando.

Estoy trabajando con oWMI y voy avanzando.
Gracias.

Re: Como detectar Lector Code-Bar instalado?

Posted: Fri Jun 08, 2018 3:07 am
by Busmatic_wpb
Buenas Estimado.
Mira los lectores la mayoria que se intalan viene en RS232 y USB que deriva un puerto COM en _. A Puedes partir de ahi en ver en la seccion de perifericos la opcion puertos (COM) de tu PC el puerto que ha sido asignado con el lector conectado , para ver si no estas seguro solo desconecta el periferico y veras que desaparece de la lista mencionada y si lo conectar pues nada veras cual puerto asiga el PC.

Ahora para uitlizarlos es mas simple pues la mayoria puedes congiurarlos como si fueran un agregado del teclado que cualquier Get o editor podras ver que graban.

Ahora si por otro lado no esta asi configurado de esa manera debes de accesar el puerto asignado y utilizar la funciones del puertos con los datos de coneccion como ejemplo COM5:4800,N,8,1 , del five win y crear una pequeña rutina de lectura, y algunos lectores manejan varias velocidades de trasmision de datos y otro solo una , pero bueno eso lo veras en la configuracion y informacion del producto que si no la tienes con el nombre y serial podras encontrar suficiente informacion en internet.

Saludes.
_ Chacon.
http://www.Situcr.com

Re: Como detectar Lector Code-Bar instalado?

Posted: Fri Jun 08, 2018 2:17 pm
by FranciscoA
_.
Gracias por tu interés.
Estoy usando el lector sin ningún problema, incluso hago las barras, las imprimo (gracias Marcelo y Cmsof), y las lee perfectamente.

Lo que quiero es que mi programa detecte si existe un lector conectado, para codificar las condiciones pertinentes en mi software.

Como dije anteriormente voy avanzando con WMI.
Saludos.

Re: Como detectar Lector Code-Bar instalado?

Posted: Fri Jun 08, 2018 2:28 pm
by FranciscoA
Amigos.
Aqui les dejo el mencionado avance.
Esta función trabaja bien (hasta el momento), me devuelve TRUE si detecta un lector conectado conforme a la cadena cStrID.
Pero estoy perfeccionándola.
Si alguien desea aportar para su mejoría, todo es bienvenido.

Code: Select all

//-----------------------//Conocer si lector esta conectado
Function LectCBarConect()
local oPC, oQry, oLoc, oWMI, aInfo, lConectado := .f.
local cStrID := '\\SERVER\ROOT\CIMV2:WIN32_PNPENTITY.DEVICEID="USB\\VID_0483&PID_5710\\5&8A0E485&0&1"'

   TRY
      oLoc:= CreateObject( "wbemScripting.SwbemLocator" )
   CATCH 
      MsgStop("No se pudo crear objeto 'wbemScripting.SwbemLocator'","Alto")
      Quit
   END

   TRY
      oWMI := oLoc:ConnectServer()
   CATCH 
      MsgStop("No se pudo conectar a WMI","Alto")
      Quit
   END

   oQry  := oWMI:ExecQuery( "Select * FROM Win32_USBControllerDevice" )

   for each oPC in oQry
      if alltrim(upper(oPC:Dependent)) == cStrID
         lConectado := .t.
         exit
      endif
   next

   Msginfo(if(lConectado,"Lector Conectado","Lector NO CONECTADO"))
Return lConectado
 
Saludos.

Re: Como detectar Lector Code-Bar instalado?

Posted: Mon Jun 11, 2018 5:38 pm
by FranciscoA
Esta es otra mejor función que me está funcionando:

Code: Select all

//-----------------------//Conocer si lector esta conectado
Function LectCBarConect()
local oPC, oQry, oLoc, oWMI,  lConectado := .f., aUSBDev:={}, cDeviceName

   TRY
      oLoc:= CreateObject( "wbemScripting.SwbemLocator" )
   CATCH 
      MsgStop("No se pudo crear objeto 'wbemScripting.SwbemLocator'","Alto")
      Quit
   END

   TRY
      oWMI := oLoc:ConnectServer()
   CATCH 
      MsgStop("No se pudo conectar a WMI","Alto")
      Quit
   END

   oQry  := oWMI:ExecQuery( "Select * FROM Win32_USBControllerDevice" )

 For each oPC in oQry
      cDeviceName := StrTran(HB_ATokens(oPC:Dependent,"=")[2],'"','')  
      aadd(aUSBDev, cDeviceName)
      if Upper(Substr( cDeviceName,1,3 )) = "HID"
         lConectado := .t.
         Exit
      endif
   Next 
   MyXBrowse(aUSBDev,"USBs",{"DeviceName"})

   Msginfo(if(lConectado,"Lector Conectado","Lector NO CONECTADO"))

Return lConectado
 
Saludos.