Ayuda con Balanza/Scanner

312 views
Skip to first unread message

Cesar Palomo

unread,
Sep 4, 2012, 12:54:39 AM9/4/12
to publice...@googlegroups.com
Hola a todos.
Estoy modificando mi programa para que se pueda adaptar a unas Balanzas/Scanner marca Datalogic modelo Magellan 8400 que mi cliente compró.
Esto hay que trabajarlo con los drivers OPOS, ya logré hacer funcionar perfectamente el scanner y a la balanza le puedo hacer el "Claim" sin problemas, pero hasta ahi.
No he encntrado la forma de hacer ninguna lectura de pesos, ni utilizando "DirectIO", "LiveWeight" o "ReadWeight".
Sé que las balanzas estan en buen estado y bien conectadas porque el programa que traen como ejemplo, si funciona rebien.
Lo mas seguro es que estoy usando los comandos mal, puesto que los manuales no explican nada y he estado trabajando a ciegas.
Alguien sabe algo con lo que pueda orientarme con esto??? O sabe de algun manual o ejemplos de uso de OPOS con FoxPro???

Cesar Palomo

unread,
Sep 4, 2012, 1:45:47 PM9/4/12
to publice...@googlegroups.com
alguien????
Con que me den una idea de como trabajar con objetos ocx de OPOS me ayudarian muchisimo

Alex Vargas

unread,
Sep 4, 2012, 2:33:12 PM9/4/12
to publice...@googlegroups.com
Quetal Cesar.

Uno de los supermercados que utiliza mi sistema POS tienen scanner/balanza de esta marca y modelo Magellan pero un modelo anterior, pero no hay diferencia en la forma de utilizarlos ya que el OPOS es un estándar.

No tengo el código que utilice pero más o menos es este:

En el Init escribe esto:

With ThisForm

    .DataScale.open("DL_SC_RS232Scale")  && DataScale es el nombre que le di a Activex

     If .DataScale.Resultcode <> 0

        =Messagebox('FALLO LA APERTURA DE LA BALANZA')

        Return

     EndIf

 

     .DataScale.ClaimDevice( 0 )

     .DataScale.DeviceEnabled = .T.

     .DataScale.DataEventEnabled = .T.

EndWith

 

En el DataEvent del objeto Scale:

With Thisform

                .TxtPeso = .DataScale.ScaleLiveWeight

                .DataScale.DataEventEnabled = .T.

                Keyboard '{ENTER}'

Endwith

 

 

Adicionalmente debes agregar un objeto Timer

Y manejar la activación y desactivación de allí.

 

Mas o menos asi:

With Thisform

                If .DataScale.ClaimDevice( 0 ) <> 0

                                .DataScale.ClaimDevice( 0 )

                Endif

 

                If .DataScale.DeviceEnabled <> .T.

                                .DataScale.DeviceEnabled = .T.

                Endif

 

                If .DataScale.AutoDisable <> .F.

                                .DataScale.AutoDisable = .F.

                Endif

 

                If .DataScale.DataEventEnabled <> .T.

                                .DataScale.DataEventEnabled = .T.

                Endif

 

                If .DataScale.DecodeData <> .T.

                                .DataScale.DecodeData = .T.

                Endif

Endwith

 

Not Importante: no olvides escribir en el Init esto _vfp.AutoYield = .F.

 

De la ayuda de VFP en Ingles respecto a Autoyield:

The AutoYield property should be set to false (.F.) when a form contains an ActiveX control. Setting AutoYield to false (.F.) prevents events for an ActiveX control from executing between lines of user program code. For example, if AutoYield is set to true (.T.), clicking an ActiveX control while user program code is executing may cause an event for the ActiveX control to execute, ignoring the user program code for the event, producing undesirable or unpredictable results.

The following occurs when the AutoYield property is set to false (.F.)

Saludos

Alex A. Vargas

Andres Felipe Gomez David

unread,
May 30, 2014, 12:23:16 PM5/30/14
to publice...@googlegroups.com

Buenos dias Alex

implemento tu codigo y me saca error en el ini que dice que FALLO LA APERTURA DE LA BALANZA, que puedo revisar ahi?, cuando lo pruebo con el OleViewComm si abre bien la balanza, pero no se leer el peso con este control, como me puedes colaborar?

Gracias
Reply all
Reply to author
Forward
0 new messages