Puertos COM (serial) y Balanza Kretz

1,301 views
Skip to first unread message

Guillermo Gioco

unread,
Oct 4, 2016, 3:44:04 AM10/4/16
to Comunidad de Visual Foxpro en Español
Buenas!!
He desarrollado un módulo en VFP 9 que transporta productos y sus precios a las 2 balanzas Kretz de mi cliente, mediante puerto serial (COM). En este momento estoy utilizandos los puertos 9 y 10. El problema es que muchas veces se me cuelgan o me dicen que están en uso, cuando la única aplicación que los utiliza es la mía.
¿Hay forma de "limpiarlos" antes de cada ejecución o de adelantarme a saber si están con problemas? Hay lapsos en que funciona todo perfecto y de pronto comienzan a colgarse o emitir el error mencionado.

Muchas gracias!

Germán Fabricio Valdez

unread,
Oct 5, 2016, 4:24:07 PM10/5/16
to Comunidad de Visual Foxpro en Español
hola encontre esto en la web fijate si te sirve

Es muy fácil leer un puerto COM desde VFP, usando el siguiendo código:

oCom = CreateObject('MSCOMMLIB.MSCOMM')
oCom.CommPort = 1 && Número del puerto
oCom.Settings = "1200,N,8,1" && Seteo de velocidad,paridad,bit de datos,bit stop
oCom.PortOpen = .T. && Abre el puerto
oCom.InBufferCount = 0
Wait TimeOut 1 && Lee durante 1 segundo
lcPeso = oCom.Input && Almacena la lectura en una variable
oCom.PortOpen = .F. && Cierra el puerto

Nota: debe estar presente en el sistema la librería MSCOMM32.OCX

Después se debe tener en cuenta la longitud de datos que tiene la balanza, para extraer de la variable la parte que representa el peso.
Espero que aun sea de ayuda.

Paulo Devai
paul...@hotmail.com

Carlos Alfaro

unread,
Oct 5, 2016, 8:03:44 PM10/5/16
to publice...@googlegroups.com

Creo que no le entendiste a Guillermo, el ya tiene la comunicación, pero a veces le dice que el puerto está ocupado.

 

A mí no me ha ocurrido lo que menciona Guillermo, por esa razón no he comentado.

 

Porque no menciona si el problema se presenta mientras está transmitiendo o es entre transmisiones.

 

Tampoco menciona si lo que ocurre que hoy funciona bien, pero al día siguiente falla.

 

Atentamente,

 

 

Carlos Alfaro

ACEROS CHUBUT

unread,
Oct 6, 2016, 6:09:04 AM10/6/16
to Comunidad de Visual Foxpro en Español
Guillermo:

             Lo ideal es asegurarte que los puertos esten cerrados antes de volver a abrilos.




El martes, 4 de octubre de 2016, 4:44:04 (UTC-3), Guillermo Gioco escribió:

francisco prieto

unread,
Oct 6, 2016, 6:26:02 AM10/6/16
to Comunidad de Visual Foxpro en Español
Guillermo,

He hecho muchos drivers para muchas balanzas y por experiencia el procedimiento es el siguiente.
1) Antes de iniciar la comunicación cerras el puerto que vas a utilizar y luego lo volves a abrir. En general esto resuelve el problema.
2) Te conseguís un monitor de puertos serie e intentas comunicar con el monitor, porque a veces sucede que el puerto no esta disponible y es por eso que no lo puede abrir
3) Si nada de esto funciona trascribí exactamente el error que captura VFP, sobre cual sistema operativo estas corriendo y como abrís el puerto con MSComm (y si es con eso de que forma - Ya que hay dos modos para trabajar con ese control, con delay y con OnComm)

Saludos,
Pancho
Córdoba
Argentina

Guillermo Gioco

unread,
Oct 7, 2016, 1:56:49 PM10/7/16
to Comunidad de Visual Foxpro en Español
Muchas gracias a todos por la colaboración.
Ya logré avanzar algo con esto. Me explicado desde KRETZ que el problema surge porque de windows 7 en adelante los puertos quedan abiertos y no se cierran. En fin, he hecho algo parecido a lo que sugirieron con código fox, pero ahora me surge otro lio:

Me dice que la licencia de MSCOMM32.OCX no es correcta o algo por el estilo (no tengo el error exacto acá, pero de ser necesario, lo publico).

Esto, por supuesto, no me sucede en la IDE de fox, pero sí en el EXE.
Si me dan una manito con esto, creo que logro resolverlo por completo y les paso los tips, por si alguien lo necesita.

Otra vez, muchas gracias!


El martes, 4 de octubre de 2016, 4:44:04 (UTC-3), Guillermo Gioco escribió:

Guillermo Gioco

unread,
Oct 7, 2016, 1:58:51 PM10/7/16
to Comunidad de Visual Foxpro en Español
Gracias German. Tengo un código muy parecido, pero cuando lo implemento en el cliente (con windows 10), me da un error de licencia de MSCOMM32.OCX. Tenes idea como resolverlo?

Guillermo Gioco

unread,
Oct 7, 2016, 1:59:35 PM10/7/16
to Comunidad de Visual Foxpro en Español
Gracias Fransisco. Tengo un código muy parecido, pero cuando lo implemento en el cliente (con windows 10), me da un error de licencia de MSCOMM32.OCX. Tenes idea como resolverlo?

Germán Fabricio Valdez

unread,
Oct 7, 2016, 2:02:47 PM10/7/16
to Comunidad de Visual Foxpro en Español
creo que ese error lo da cuando queres registrar una dll de 32 bits en system32 en un windows de 64 bits
tenes que copiar la libreria a c:\windows o c:\windows\syswow64 y registrar el ocx con regsvr32



El martes, 4 de octubre de 2016, 4:44:04 (UTC-3), Guillermo Gioco escribió:

Guillermo Gioco

unread,
Oct 7, 2016, 2:06:24 PM10/7/16
to Comunidad de Visual Foxpro en Español
Lo pruebo y aviso.
Gracias German

Carlos Alfaro

unread,
Oct 7, 2016, 2:17:00 PM10/7/16
to publice...@googlegroups.com

Que en Windows 7 en adelante los puertos no se cierran?

 

Que raro, yo tengo varios programas que trabajan con Windows 7 y 8 y si los puedo cerrar despues de usarlos con la propiedad portopen = .f., siempre y cuando yo había abierto el puerto antes en mi aplicación. No puedo cerrar el puerto si ya estaba abierta fuera de mi aplicación.

 

También te comento que cuando si he tenido problemas con el puerto ocupado, es cuando el equipo conectado al puerto envía constantemente y cuando se enciende la computadora, Windows cree que es mouse y lo asigna a mouse, para este caso se debe cambiar un parámetro en el registro de Windows.

 

http://www.taltech.com/support/entry/windows_2000_nt_serial_mice_and_missing_com_port

 

Bendiciones.

 

Carlos Alfaro

 

From: publice...@googlegroups.com [mailto:publice...@googlegroups.com] On Behalf Of Guillermo Gioco
Sent: viernes, 07 de octubre de 2016 11:57 a.m.
To: Comunidad de Visual Foxpro en Español
Subject: [vfp] Re: Puertos COM (serial) y Balanza Kretz

 

Muchas gracias a todos por la colaboración.

Germán Fabricio Valdez

unread,
Oct 7, 2016, 2:48:04 PM10/7/16
to Comunidad de Visual Foxpro en Español
encontre un instalador de microsoft que instala esos archivos solamente en cualquier windows

https://www.microsoft.com/es-ar/download/details.aspx?id=10019


El martes, 4 de octubre de 2016, 4:44:04 (UTC-3), Guillermo Gioco escribió:

Guillermo Gioco

unread,
Oct 7, 2016, 3:29:35 PM10/7/16
to Comunidad de Visual Foxpro en Español, calf...@yahoo.com.ar
Hola Carlos!

Es lo que sucede con las balanzas KRETZ, no sé si sucederá con otros dispositivos. Pero lo curioso es que no sucede siempre, sino que es aleatorio, por lo tanto mucho mas dificil de detectar y resolver.
Gracias Carlos!

Guillermo Gioco

unread,
Oct 7, 2016, 3:30:34 PM10/7/16
to Comunidad de Visual Foxpro en Español
Buenisimo German. Voy a actualizarlos en el cliente y ver si ya responde correctamente.
Muchas gracias!

francisco prieto

unread,
Oct 7, 2016, 3:38:09 PM10/7/16
to Comunidad de Visual Foxpro en Español
Guillermo,

Por acá no te puedo responder esa pregunta pues va en contra de las normas del foro, pero si cuento con la solución... Escribime por privado y te digo.

Saludos,

Pancho
Córdoba
Argentina

Carlos Alfaro

unread,
Oct 7, 2016, 4:04:35 PM10/7/16
to publice...@googlegroups.com

Proba lo que dice en el link:

 

A ver si con eso se resuelve tu problema.

·         Click on the Windows start button

·         In the search box, type in: regedit and press the enter key on your keyboard

·         The Registry editor windows will open

·         Navigate to the registry key named: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sermouse

·         On the right hand side of the registry editor window you should find subkey named: start

·         Double click on the "start" subkey and modify the value of the key to: 4 and click the OK button to return to the registry editor window
Note: setting the "start" subkey value to 4 will disable windows from looking for serial mice at startup

·         Exit the regitstry editor window

Bendiciones.

 

 

Carlos Alfaro

 

From: publice...@googlegroups.com [mailto:publice...@googlegroups.com] On Behalf Of Guillermo Gioco


Sent: viernes, 07 de octubre de 2016 01:30 p.m.
To: Comunidad de Visual Foxpro en Español

Guillermo Gioco

unread,
Oct 11, 2016, 5:36:36 AM10/11/16
to Comunidad de Visual Foxpro en Español, calf...@yahoo.com.ar
Gracias Carlos, hoy lo probaré y mañana les cuento.
Saludos!

PD: El error exacto es: "appropriate license for this class not found foxpro"

Carlos Alfaro

unread,
Oct 11, 2016, 7:16:39 AM10/11/16
to publice...@googlegroups.com

Mencionas que el programa funciona bien a veces y en algún momento muestra este mensaje de error?

 

Ese no es error de comunicación, dice que el activex no tiene licencia para ser usado por foxpro.

 

Según mi experiencia el mscomm32 no tiene límite de licencia.

 

Estas usando mscomm32 para comunicarte por puerto serial?

francisco prieto

unread,
Oct 11, 2016, 7:29:49 AM10/11/16
to publice...@googlegroups.com
Carlos...

El MSCOMM si tiene licencia, si es usado con CreateObject en vez de como un control visual.

Saludos,

Pancho
Córdoba
Argentina

fut...@lobocom.es

unread,
Oct 11, 2016, 8:21:43 AM10/11/16
to francisco prieto, publice...@googlegroups.com

Exacto create una clase, por ejemplo container e incluye en ella el activex, no debe darte problemas.

 

Jose Enrique Llopis

 

 

Enviado desde mi Lumia 950 con Windows 10

Guillermo Gioco

unread,
Oct 11, 2016, 8:27:43 AM10/11/16
to Comunidad de Visual Foxpro en Español, calf...@yahoo.com.ar
Utilizo este código:
   PUBLIC ComForm
   ComForm = CREATEOBJECT('Form')
   ComForm.AddObject("Testcom","Olecontrol","MSCOMMLib.MSComm")
   ComForm.Testcom.CommPort = 2 && Use Comm2, The second Serial Port.
   ComForm.Testcom.Settings = "14400,N,8,1"  && 14.4 Kbaud, No Parity,
                                             && 8 data Bits, 1 Stop Bit
   ComForm.Testcom.PortOpen = .T.
   ComForm.Testcom.Output = "ATDT555-1234" + chr(13) && Dialing the number
   * The chr(13) is needed to complete the modem command sequence
   ComForm.Testcom.PortOpen = .F.
   ***** End Code *****

Y ya tengo registrados mscomm32.ocx y par mas.

Guillermo Gioco

unread,
Oct 11, 2016, 9:31:23 AM10/11/16
to Comunidad de Visual Foxpro en Español
Jose, justamente con este código tengo el error.
Voy a probar lo que mencionó Francisco y les cuento

GRACIAS A TODOS!

Germán Fabricio Valdez

unread,
Oct 11, 2016, 3:06:12 PM10/11/16
to Comunidad de Visual Foxpro en Español
genere un nuevo proyecto e hice un prg y un ejecutable exe con este codigo


oCom = CreateObject('MSCOMMLIB.MSCOMM')
oCom.CommPort = 1 && Número del puerto
oCom.Settings = "1200,N,8,1" && Seteo de velocidad,paridad,bit de datos,bit stop
oCom.PortOpen = .T. && Abre el puerto
oCom.InBufferCount = 0
Wait TimeOut 1 && Lee durante 1 segundo
lcPeso = oCom.Input && Almacena la lectura en una variable
oCom.PortOpen = .F. && Cierra el puerto

y no me dio error de licencia y las propiedades se setearon bien

windows 10 32 bits actualizado

francisco prieto

unread,
Oct 11, 2016, 3:14:37 PM10/11/16
to Comunidad de Visual Foxpro en Español
Y una pregunta... esa prueba la hiciste en la pc del cliente?
O acaso en esa pc tenes instalado el Visual Basic?

Saludos,

Pancho
Córdoba
Argentina

Germán Fabricio Valdez

unread,
Oct 11, 2016, 3:58:25 PM10/11/16
to Comunidad de Visual Foxpro en Español
miren lo que encontre en la historia

Luis Maria Guayan

15/11/12
Creo que no hay problemas para ello. hay que crear un archivo de texto  y agregarle las siguientes líneas:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905]
@="kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun"

Guardarlo con la extensión .REG y hacerle doble clic para que se agregue el valor de la clave en el registro de Windows. Reiniciar la PC y listo.

Pero todo esto si se invoca la librería con CREATEOBJET() en tiempo de ejecución. Con las otras técnicas mencionadas en este hilo no debería haber problemas.
Auto Generated Inline Image 1

francisco prieto

unread,
Oct 11, 2016, 4:54:27 PM10/11/16
to Comunidad de Visual Foxpro en Español
German,

Estas son las cosas que no se pueden pasar por el foro... mas alla que te solucionen el inconveniente.

Saludos,

Pancho
Córdoba
Argentina

Roberto Tello & Asoc. - Estudio Informatico

unread,
Oct 11, 2016, 5:03:12 PM10/11/16
to publice...@googlegroups.com

German que modelo de Kretz es.....???

Sdos.

Roberto

SAN JUAN

--
Roberto H. Tello & Asoc.
Estudio Informático
Msn: robertote...@hotmail.com
Skype: robertotellomoreno

Guillermo Gioco

unread,
Oct 12, 2016, 6:30:10 AM10/12/16
to Comunidad de Visual Foxpro en Español
German, ese mismo código, en el EXE, me da el error. Muy raro, pero es así. En mi notebook no lo dá, pero sí en la pc del cliente. En ella no está instalado visual basic, solo utilizo FOX. Voy a probar lo que mandó Luis María también. 
Sinceramente, gracias a todos por las respuesta y el interés en darme un mano!
Saludos!!

francisco prieto

unread,
Oct 12, 2016, 6:36:34 AM10/12/16
to Comunidad de Visual Foxpro en Español
Guillermo,

El codigo no va en el exe...

Va al momento de instalar la ocx en la pc del cliente y el error da cuando se ejecuta el exe desde afuera, no da en modo desarrollo.

Por eso lo utilizo en el instalador..

Saludos,

Pancho
Córdoba
Argentina

Germán Fabricio Valdez

unread,
Oct 12, 2016, 10:52:14 AM10/12/16
to Comunidad de Visual Foxpro en Español
hice un instalador de los runtime de visual foxpro sp2 7423 y inclui las librerias ocx y dll de visual basic

he leido que haciendo esto no pide licencia

probalo

https://mega.nz/#!YFcHwQzI!OT1xsTL6yfS-CqNWA3RABguuJcHU5yrAouFkpuTtipo

Guillermo Gioco

unread,
Oct 12, 2016, 3:56:21 PM10/12/16
to Comunidad de Visual Foxpro en Español
German, millones de gracias!! realmente no sé como agradecerte, al margen de que me funcione o no jaja. Lo pruebo y les aviso. Mil gracias nuevamente.!

Germán Fabricio Valdez

unread,
Oct 12, 2016, 11:33:56 PM10/12/16
to Comunidad de Visual Foxpro en Español
encontre mas informacion y cree nuevo instalador
hice un instalador de los runtime de visual foxpro sp2 7423 y inclui mas las librerias ocx y dll de visual basic
link de descarga v8.0
https://mega.nz/#!xAUk2BRT
!MEQYGnfPbTYoVgjQ08IIlZYjKnJP6tU4mmPQVUhy1Uk

Reply all
Reply to author
Forward
0 new messages