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