La Web del Programador: Comunidad de Programadores
 
    Pregunta:  58126 - COMUNICACION BASCULA
Autor:  Miguel Salomon Carvajal Davalos
Saludos

Necesito comunicarme con una báscula "Cardinal Scale" Modelo 210 el cual se conecta a la PC mediante puerto serial COM. En la PC está establecido el puerto COM1 para la lectura de bascula.
Se estableció en la bascula: Baudios=9600, Paridad=ninguna, Bits Datos= 8, Bits de Parada=1.Se construyo un cable serial de acuerdo a dicho manual.
Sin embargo poniendo las mismas configuraciones en el Hyperterminal para el puerto COM1, no me muestra en la PC lo que muestra en la bascula.

Sinceramente no sabria si habra que hacer algo adicional para que pueda recibir datos.

Agradezco su ayuda

  Respuesta:  Jesús Manuel Ares González
Saludos
Este programita en VISUAL BASIC, lo hice para leer el peso de una bascula, En mi modelo primero le tenia que enviar una cadena de petición de datos.
¿ Es posible que en la tuya también haya que hacerlo?

[email protected]
Enviame si puedes los manuales y trato de ayudarte.

Private Function LeerPesoBascula()

Dim cCadIni As String
Dim cCadFin As String
Dim cBuffer As String
Dim cResult As String
Dim cCharVa As String
Dim nAux1 As Integer

On Error GoTo Error
'Caracteres validos
cCharVa = "+.0123456789"
' Parametros para bascula EPELSA MODELO MARTE 10 V4
cCadIni = "$" + vbCrLf
cCadFin = vbCr + Chr$(3)
cBuffer = ""
cResult = ""
'Compruebo si el puerto esta abierto y lo cierro
If MSComm1.PortOpen Then
MSComm1.PortOpen = False
End If
' Usar COM1.
MSComm1.CommPort = ConfLocalTPV.Basculas.Puerto
' 9600 baudios, sin paridad, 8 bits de datos y 1 bit de parada.
MSComm1.Settings = "9600,n,8,1"
'MSComm1.Handshaking = comNone
' Indicar al control que lea todo el búfer al usar Input.
MSComm1.InputLen = 0
' Abrir el puerto.
MSComm1.PortOpen = True
' Pero me aseguro que el puerto este abierto
If MSComm1.PortOpen Then
' Enviar al puerto serie la petición de datos
MSComm1.Output = cCadIni
'Esperar a que vuelvan los datos al puerto serie.
Do
DoEvents
cBuffer = cBuffer & MSComm1.Input
Loop Until InStr(cBuffer, cCadFin)
End If
' Leer los datos de respuesta de aceptación en el puerto serie.
' Cerrar el puerto.
MSComm1.PortOpen = False
'If insstr(cBuffer, "A") > 0 Then
'Limpiamos los datos
For nAux1 = 1 To Len(cBuffer)
If InStr(cCharVa, Mid$(cBuffer, nAux1, 1)) > 0 Then
cResult = cResult + Mid(cBuffer, nAux1, 1)
End If

Next
gridLineas.Columns(cCantidad).text = fVal(cResult)
gridLineas.Update
CalcularTicket
Exit Function
Error:
' Cerrar el puerto.
If MSComm1.PortOpen Then MSComm1.PortOpen = False

End Function