Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: vicfebo en 27 Mayo 2008, 02:54 AM

Título: COM1 con VB6 para leer de una balanza
Publicado por: vicfebo en 27 Mayo 2008, 02:54 AM
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
Título: Re: COM1 con VB6 para leer de una balanza
Publicado por: cobein en 27 Mayo 2008, 04:28 AM
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
Título: Re: COM1 con VB6 para leer de una balanza
Publicado por: vicfebo en 27 Mayo 2008, 16:34 PM
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.
Título: Re: COM1 con VB6 para leer de una balanza
Publicado por: cobein en 27 Mayo 2008, 17:06 PM
EDIT

Los flags estan al reves ahora los corrijo
Título: Re: COM1 con VB6 para leer de una balanza
Publicado por: vicfebo en 27 Mayo 2008, 17:22 PM
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?
Título: Re: COM1 con VB6 para leer de una balanza
Publicado por: cobein en 27 Mayo 2008, 17:28 PM
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
Título: Re: COM1 con VB6 para leer de una balanza
Publicado por: vicfebo en 27 Mayo 2008, 17:44 PM
Porque el checksum solo lo calculas a partir del dato y no del dato + el 98?
Título: Re: COM1 con VB6 para leer de una balanza
Publicado por: cobein en 27 Mayo 2008, 17:46 PM
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
Título: Re: COM1 con VB6 para leer de una balanza
Publicado por: vicfebo en 27 Mayo 2008, 18:18 PM
Ahora si !!!!!!!!!!!!! eres un genio tio !! mil gracias !!