COM1 con VB6 para leer de una balanza

Iniciado por vicfebo, 27 Mayo 2008, 02:54 AM

0 Miembros y 2 Visitantes están viendo este tema.

vicfebo

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.



Esa es la comunicación entre PC y balanza

Gracias y saludos

cobein

#1
Es bastante precario, espero que sea util

Código (vb) [Seleccionar]
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
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

vicfebo

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.

cobein

#3
EDIT

Los flags estan al reves ahora los corrijo
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

vicfebo

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?

cobein

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
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

vicfebo

Porque el checksum solo lo calculas a partir del dato y no del dato + el 98?

cobein

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
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

vicfebo

Ahora si !!!!!!!!!!!!! eres un genio tio !! mil gracias !!