Hola, tengo conectada una balanza para una panadería a un PC mediante el COM1, el tema esta en que tengo que leer de la aplicación el peso de la balanza con VB. Se como se configura el COM1 en VB, ambiñen como se lee y como se escribe. Pero no se construir el mensaje de la instrucción que le tengo que mandar a la balanza para que me devuelva el peso y el subtotal del artículo a partir del peso. Adjunto la imagen que viene en el PDF del manual de la balanza para que me ayude alguien a construir esa peticion.
(http://www.muguerval.com/balanza.jpg)
Esa es la comunicación entre PC y balanza
Gracias y saludos
Es bastante precario, espero que sea util
Private Sub Form_Load()
Dim sVal As String
Dim sCheck As String
Dim i As Long
Dim svData() As Byte
Dim sPacket As String
sVal = "25" '// Valor
sVal = Right$(String(5, "0") & sVal, 5) '// Formateado para tener un largo de 5 caracteres
svData = StrConv(sVal, vbFromUnicode) '// Lo convertimos en un bytearray
For i = 1 To 4
svData(0) = svData(0) Xor svData(i) '// Checksum
Next
sCheck = Chr$(svData(0)) '// convertimos el valor del checksum en un caracter
'////////////////////////////////////////// Corregido
sPacket = Chr$(&H39) & Chr$(&H38) & sVal & sCheck & vbCr & vbLf '// armamos el pedido
Debug.Print sPacket
End Sub
He cogido el codigo que me has puesto y le he añadido al final el envio:
MSComm1.PortOpen = True
MSComm1.Output = sPacket
y un boton para capturar la respuesta de la balanza mediante un Msgbox
Private Sub Command1_Click()
Dim sPacket As String
sPacket = MSComm1.Input
MsgBox sPacket
End Sub
Que puedo estar haciendo mal cobein?? Ayuda, por favor.
EDIT
Los flags estan al reves ahora los corrijo
Sigue sin funcionarme, el Cr y Lr estan bien puestos?
Es que es muy raro, no ocurre absolutamente nada. la manera de enviar y recibir que te he puesto es correcta?
como dije anteriormente nunca en mi vida use una balanza de esas ni tengo una para probar nada.
La estructura del paquete parece estar bien, lo unico que se me ocurre es que purebes con un paquete asi "98000000" & vbcr & vblF en donde el importe es 0 y el checksum 0 a ver si obtenes respuesta.
Sino, telefono y a comunicarse con el fabricante! otra no se me ocurre
Porque el checksum solo lo calculas a partir del dato y no del dato + el 98?
Proba haciendo el checksum de todo....
Private Sub Form_Load()
Dim sVal As String
Dim sCheck As String
Dim i As Long
Dim svData() As Byte
Dim sPacket As String
sVal = "25" '// Valor
sVal =Chr$(&H39) & Chr$(&H38) & Right$(String(5, "0") & sVal, 5) '// Formateado para tener un largo de 5 caracteres
svData =StrConv(sVal, vbFromUnicode) '// Lo convertimos en un bytearray
For i = 1 To 6
svData(0) = svData(0) Xor svData(i) '// Checksum
Next
sCheck = Chr$(svData(0)) '// convertimos el valor del checksum en un caracter
'////////////////////////////////////////// Corregido
sPacket = Chr$(&H39) & Chr$(&H38) & sVal & sCheck & vbCr & vbLf '// armamos el pedido
Debug.Print sPacket
End Sub
Ahora si !!!!!!!!!!!!! eres un genio tio !! mil gracias !!