La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1205 - COMUNICACION DE PC A BÁSCULA ELECTRÓNICA
Autor:  Humberto C
Estoy desarrollando un sistema de pesaje de cargas y control de inventarios.
El problema que tengo es que no puedo recuperar los datos, mostrados en la bascula electronica ,en forma automatica hacia mi computadora. Ya he intentado las funciones de bajo nivel, inclusive el control mscom sin obtener los resultados esperados.
La bascula se conceta al COM1 y el sistema está desarrolado en Visual Foxpro 5.
Cualquier ayuda se las agradecere

  Respuesta:  Manuel Jesus Duran Chusan
Amigo si sabes usar el mscomm y no te captura datos de la bascula comunicate con el tecnico de la bascula para ver si es problema de la bascula, a mi me ocurrio lo mismo y era ese problema, o el cable de comunicacion esta mal hecho

  Respuesta:  vikingo II
hola yo trabajo en un almacen y para lograr la comunicacion e usado un control o libreria de windows llamado Mscomm32.ocx con el cual puedes crear un objeto que te permite la comunicacion serial con los comm disponible, si tienes el manual de la bascula puedes enviar datos y que te responda pero sino, considera a la computador a la computadora como un impresora y lees los datos del puerto, tambien es importante el cable serial que uses. Si es que deseas el fuente en visualfoxpro escribeme al email y dame tu email
chao Vikingo II

  Respuesta:  eye
Holasssamigos:
Querido amigo:
La forma más sencilla (para mi) de poder comunicarte por los puertos paralelos o en serie de tu computadora es utilizar una libreria llamada INPOUT32.DLL, lo puedes bajar tranquilamente de Internet. Ahora la pregunta es ¿Como utilizar está libreria dll?
Fijate en el siguiente código:

DECLARE INTEGER Inp IN inpout32 INTEGER puerto
DECLARE INTEGER Out IN inpout32
local salir,puerto
puerto = 889 && es la direccion en memoria del Puerto Paralelo
salir = 65 && es un caracter
do while salir#27
?inp(puerto)
salir = inkey()
enddo

Ahora, para el puerto en serie no estoy muy seguro de la direccion en memoria (3F8 hex. ????) , pero eso lo puedes averiguar en la Setup de tu máquina.
Cualquier cosa hacemelo saber.

  Respuesta:  Luis Martínez
En caso que no hayas probado esto:

Hay que tener en cuenta que el puerto lo debes abrir de solo lectura y sin buffer.

Visual Foxpro no reconocerá COM1 como un puerto de comunicación si no como un archivo en disco si lo intentas abrir de esta forma: FOPEN("COM1",10)por lo que te aparecerá el error "1103 - Desplazamiento de búsqueda no valido" o FOPEN() devolverá un valor negativo, por lo tanto debes agregar la extensión .DOS al nombre del puerto: FOPEN("COM1.DOS",10)

CODIGO:
Local nFileHandle, nSize, cPeso

nFileHandle = FOPEN("COM1.DOS",10)

* Llevar el puntero a EOF para determinar el número de bytes escritos en el puerto

nSize = FSEEK(nFileHandle, 0, 2)

IF nSize > 0 && Hay datos en el puerto
*Mover el puntero a BOF
=FSEEK(nFileHandle, 0, 0)
*Leer los datos del puerto
cPeso = FREAD(nFileHandle, nSize)
ENDIF
Cierra el archivo
= FCLOSE(nFileHandle)

Nota: He utilizado este código solo para escribir en un puerto de comunicación y me ha funcionado.

Escribeme un mail con más detalles haber si te puedo ayudar o para saber si funciona.