Ver Mensaje Individual
  #2  
Antiguo 24-09-2019
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Reputación: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Debería devolver la info en un array de bytes.
Creo que devuelve una cadena más o menos así: xx1234567xxxxx
Donde los valores del peso son de la posición 3 a 9, o sea 2 a 8 teniendo que empieza a contar desde cero.

También, dependiendo de la balanza, hay que configurarla para que devuelva en formato tinsa, porque algunas sabes que ofrecen distintos protocolos.

Te paso el código en otro lenguaje y para otro sistema operativo, por si acaso sirve de algo:
Código:
' cada tick se pide el peso 
Sub tmscale_tick 
    getWeight 
End Sub 

' pedir el peso 
Sub getWeight 
    asytreamms.Write( Array As Byte(Asc("$")) )    ' la balanza está configurada para recibir un $ y devolver info con el peso leido 
End Sub 

' devuelve la info 
Private Sub balanza_Streamm_NewData( Buffer() As Byte ) 
    Dim cPeso As String 
    Dim fPeso As Double 
    ' 
    cPeso = byc.StringFromBytes(Buffer,"ASCII") 
    ' 
    If Not (IsNumber(cPeso)) Then 
        cPeso = funciones.LimpiarNumeroDecimal(cPeso) 
        If cPeso="" Then cPeso="0" 
    End If     
    ' 
    If (cPeso.CompareTo(cLastPeso)<>0) Then 
        cPeso = byc.StringFromBytes(Buffer,"ASCII")         
        If Not (IsNumber(cPeso)) Then 
            cPeso = funciones.LimpiarNumeroDecimal(cPeso) 
            If cPeso="" Then cPeso="0" 
        End If         
        ' 
        cLastPeso=cPeso 
        fPeso = cPeso 
        '         
        If fPeso=0 Then 
            lbBalanza.Text = "" 
        Else 
          lbBalanza.Text = NumberFormat2(fPeso,1,3,3,False) &" g" 
        End If 
        '         
    End If     
End Sub

Private Sub dibal_Stream_NewData( Buffer() As Byte ) 
    Dim peso As Int 
    ' 
    peso = decodePeso( Buffer ) 
    CallSubDelayed2( a, subResultArrived, peso ) 
End Sub 
 
Private Sub decodePeso( buf() As Byte ) As Int 
    Dim cTxt As String 
    Dim peso As Int 
    ' 
    cTxt=bc.StringFromBytes(buf,"ASCII") 
    cTxt=cTxt.SubString2(2,8) 
    peso=(0+cTxt)/1000 
    Return peso     
End Sub
Responder Con Cita