Como comunicarme con una Bascula

‘Respondiendo a la pregunta :

‘ ¿Cómo puedo establecer comunicación con una bascula que tiene un RS232?

‘En este ejemplo podremos ver diferentes formas de enviar una petición

‘ a una bascula, simulando que nos responde al enviar el carácter ‘P’

‘ y visualizar su respuesta en una etiqueta llamada ‘Recibidos’

 

Public Class Form1

    ‘Constructores

    Private BasculaCom As New System.IO.Ports.SerialPort        ‘Puerto conectado a la báscula

    Private Recibidos As New Label                              ‘Etiqueta para visualizar la recepción

    Private Peticion As New Button                              ‘Botón para disparar el envío

    Delegate Sub MostrarRecepcion(ByVal Texto As String)        ‘Delegado para asignar el valor recibido

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ‘ Ajustar los parámetros de comunicaciones

        ‘ adaptándolos a las especificaciones o configuración

        ‘ de la bascula en concreto.

        BasculaCom.PortName = «COM1»                            ‘Conectaremos la bascula al puerto COM1

        BasculaCom.BaudRate = 9600                              ‘La velocidad de intercambio será de 9600

        BasculaCom.Parity = IO.Ports.Parity.None                ‘No verificaremos la paridad

        BasculaCom.StopBits = 1                                 ‘Final de Byte con 1 bit de Stop

        BasculaCom.Open()                                       ‘Abrir las comunicaciones con la bascula

       

        ‘ marco

        Dim marcoDGV = New FlowLayoutPanel                      ‘Conformar los controles del form

        marcoDGV.BorderStyle = BorderStyle.Fixed3D

        marcoDGV.Width = Me.Width

        marcoDGV.Height = Me.Height

        ‘ Añadir el marco con el Label y el Buton

        Recibidos.Text = «-«

        Peticion.Text = «Enviar p»

        marcoDGV.Controls.AddRange(New Control() {Peticion, Recibidos})

        Me.Controls.Add(marcoDGV)

 

        ‘Dirigir los eventos a las funciones para procesarlos

        AddHandler Peticion.Click, AddressOf EnviarUnaP         ‘Ejecución de ‘EnviarUnaP’ al pulsar el boton

        AddHandler BasculaCom.DataReceived, AddressOf Recibir   ‘Ejecución de ‘Recibir’ al recibir respuesta de la bascula

    End Sub

   

    ‘ Enviar una solicitud a la bascula

    Sub EnviarUnaP()

        ‘enviar una p

        BasculaCom.Write(«P»)

        ‘tambien puede ver/probar…

        BasculaCom.WriteLine(«P»)

        BasculaCom.Write(Chr(80))

        ‘… etc

    End Sub

 

    ‘al recibir de la bascula los bytesToRead indicara

    ‘un valor superior a 0, indicando el numero de caracteres

    Sub Recibir()

        ‘Dim NumeroDeBytesEnBuffer As Integer = BasculaCom.BytesToRead

        MostrarRececibidos(BasculaCom.ReadExisting)

    End Sub

   

    ‘ Mostrar los bytes recibidos en el Label recibidos

    Private Sub MostrarRececibidos(ByVal [texto] As String)

        If Recibidos.InvokeRequired Then

            Dim delegado As New MostrarRecepcion(AddressOf MostrarRececibidos)

            Me.Invoke(delegado, New Object() {[texto]})

        Else

            Me.Recibidos.Text = [texto]

        End If

    End Sub

 

End Class

 

41 pensamientos en “Como comunicarme con una Bascula”

  1. Hola Pep, gracias ante todo por darnos ayuda.
    Te explico ya yo realice un proyecto con basculas y tus ejemplos y explicaciones me sirvieron excelentes, trate de aplicar el mismo modelo a otro indicador diferente pero no me funciona nisiquiera me muestra datos.
    Lo que noto es que con el otro indicador si usaba el hyperterminal enviaba los datos de la siguiente forma
    0.00 kg
    0.01 kg
    .
    .
    .
    1.00 kg

    mientras que este otro indicador muestra
    en el hyperterminal los valores pero no de forma continua si no que el valor se va sobreponiedo al anterior de modo que al final solo quedaria mostrandose el 1.00 kg como ejemplo

    Estoy usando este mismo modelo que presentas en este ejemplo solo que no le envio el parametro «P»

    Por favor espero puedas ayudarme saludos

  2. Hola Joehit,
    Entiendo que el otro indicador envia una secuencia que finaliza con el Chr(13) y el que estas comentando no, por lo que deberias revisar que dice el manual del fabricante que describe el protocolo.

    Pep Lluis,

  3. Ahora Pep, puede influir en la recepcion de los datos el hecho de que no tenga el CR al final de la secuencia?
    Yo no le tengo seteado a la aplicacion que busque este caracter.
    Es realmente necesario enviar el «P» ?
    espero tus atinados comentarios

  4. No exactamente, solo digo que quizas exista esa diferencia, aunque deberias estar visualizando los datos si estos realmente estan llegando del visualizador. Por eso deberias ver las especificaciones del fabricante para saber exactamente que protocolo esta utilizando para intercambiar datos. Es obvio que no requiere una «p», simplemente es un ejemplo, pues existen mil y un visualizadores que pueden conectarse a unas celulas de carga para realizar funciones de pesaje.

    Saludos,
    Pep Lluis,

  5. Listo Pep, corregi el problemita con la bascula, con el ejemplo y un par de adecuaciones para procesar la información del pesaje quedo de maravilla

    Gracias por ofrecer siempre una buena guia.

  6. Hola Pep como estas, espero bien
    Ya he desarrollado por completo mi aplicacion de pesaje, pero aun hay algo que me sigue dando lata y es que al momento de intentar cerrar el puerto aveces la aplicacion tiende como a congelarce
    tengo el siguiente fragmento de codigo para cerrar el puerto

    ‘Verifico si esta abierto para entonces
    If RS232.IsOpen Then
    RS232.Close()
    End If

    Si tienes alguna idea o sugerencia que pudiera ayudarme a corregir esta situacion

    Agradecido como siempre de antemano por tu ayuda

  7. Hola Joe,
    Dependiendo de donde tengas ubicado el codigo, es correcto. En todo caso si lo incluyes en la sub de «Unload» o «Finalice» no es necesario verificar si esta abierto : con Close es suficiente.

    Saludos,
    Pep Lluis,

  8. hola PepLluis,
    antes que nada gracias por este fabuloso Blog e aprendido mucho gracias ati
    yo ya logre la comunicacion con la bascula y me devuelve el peso en un textbox presionando un boton, ahora lo que quiero lograr es que me aparesca el peso en el textbox al subir algo a la bascula y no esperar a dar click al boton.
    te dejo el codigo en vb.net 2005 que utilize para que lo cheques y si me puedes ayudar a realizar lo que te digo

  9. Hola Juan Carlos,
    Gracias por tu amables comentarios acerca del Blog, Referente a tu pregunta ya te respondi directamente a tu correo. Si no recibiste la respuesta, te ruego contactes de nuevo [Contact] (Opcion menu) en la parte superior derecha.

    Saludos,
    Pep Lluis,

  10. Hola PepeLluis, es ungusto encontrar blogs y gente como tu muy intelectual y mas aun anuentes a compartir conocimientos.

    Yo necesito hacer una lectura de bascula como la que realizo Juan Carlos, que me despliegueen un textbox el peso despues de hacer clir en un boton, te agradeciria si me pudieras apoyar, es para un mi proyecto de la U. Gracias

  11. Estimado Pep Luis

    Mucho gusto, mi nombre es Fernando Renteria. Aprovecho el medio para agradecerte el post que realizaste. Quería saber si alguna vez intentaste configurar el dispositivo bluetooth como puerto com para comunicar la bascula. Yo lo intente y me hace el open, de ahí lo que no hace es mandar los parámetros. Alguna idea de lo que puedo haber sido?

    De antemano muchas gracias.

  12. Hola Fernando, Gracias por tus amables comentarios.
    Si he tenido algunas experiencias con este tipo de disposivos y no existe ningun problema siempre y cuando ambos conversores esten configurados adecuandamente. Puedes contactarme directamente si lo deseas y concretarme tu problema.
    Saludos,
    Pep Lluis,

  13. Que tal peplluis

    oye apenas estoy entrando con esto de la bascula con VB6 y tengo una duda. tengo una bascula que pesa camiones de carga, es una bascula de marca RICE LAKE, Modelo: IQ-710-2A
    y he estado notando que la bascula no da el mismo peso el ticket y el sistema pues varia generalmente 10 o 20 Kg y maximo 40 Kg. rara vez pesa lo exacto.

    Es normal esto?? Como puedo corregir este tipo de detalle?

    Espero puede ayudarme

    Saludos

  14. Que tal peplluis

    oye apenas estoy entrando con esto de la bascula con VB6 y tengo una duda. tengo una bascula que pesa camiones de carga, es una bascula de marca RICE LAKE, Modelo: IQ-710-2A
    y he estado notando que la bascula no da el mismo peso el ticket y el sistema pues varia generalmente 10 o 20 Kg y maximo 40 Kg. rara vez pesa lo exacto.

    Es normal esto?? Como puedo corregir este tipo de detalle?

    Espero puede ayudarme

    Saludos

  15. Hola Grimaldo,

    En función a la precisión de las células de carga y su mecánica es un efecto totalmente correcto, pues debes tener en cuenta que el mínimo movimiento cuando estas pesando un camión, provoca esa oscilación de entre 10/40Kg. Una forma para evitarlo sería promediar el desvío producido por las oscilaciones manteniendo dicho dato con un refresco temporizado antes de darlo por definitivo. Con ello minimizaras esas inevitables oscilaciones.

    Saludos,

    Pep Lluis

  16. Hola amigos, Estoy hacindo un programa en Visual basic .net 2005 que maneja el peso de camiones en una bascula y debo obtener el valor del peso en un textbox, vi que algunos tienen esa solución y yo he estado ya 5 dias investigando y probando y nada, si alguno de los que tienen el codigo mepuede ayudar o tu Pep tienes el codigo corregido, se los agradeceria es para un proyecto que debo entregar pronto. Yo he intentado con todo lo que he encontrado y no me lee nada, les agradeceria por favor que me envien aquellos amigos lo que lo solucionaron a mi correo y asi nos ayudamos todos y compartir mi experiencia tambien. Muchas gracias
    Mi correo es: aasahito@yahoo.com.ar/shinigami_darkx@hotmail.com
    Muchas gracias y espero que me puedan ayudar.

  17. Hola Pep Luis,

    He intentado unirme a tu blog, pero no he tenido la suerte, la verdad es que estoy interesado en especial en una de las necesidades en la que apoyaste en este tema de «Como comunicarme con una Báscula», y es precisamente en referencia a la consulta que te hace Jose Carlos: «ahora lo que quiero lograr es que me aparesca el peso en el textbox al subir algo a la bascula y no esperar a dar click al boton.»

    Gracias de antemano por atender mi comentario, y además espero contar con tu apoyo para resolver este dilema.

    Saludos,

    Raúl Flores

  18. Hola Pep Luis,

    He intentado unirme a tu blog, pero no he tenido la suerte, la verdad es que estoy interesado en especial en una de las necesidades en la que apoyaste en este tema de «Como comunicarme con una Báscula», y es precisamente en referencia a la consulta que te hace Jose Carlos: «ahora lo que quiero lograr es que me aparesca el peso en el textbox al subir algo a la bascula y no esperar a dar click al boton.»

    Gracias de antemano por atender mi comentario, y además espero contar con tu apoyo para resolver este dilema.

    Saludos,

    Raúl Flores

  19. Hola Pep Luis,

    He intentado unirme a tu blog, pero no he tenido la suerte, la verdad es que estoy interesado en especial en una de las necesidades en la que apoyaste en este tema de «Como comunicarme con una Báscula», y es precisamente en referencia a la consulta que te hace Jose Carlos: «ahora lo que quiero lograr es que me aparesca el peso en el textbox al subir algo a la bascula y no esperar a dar click al boton.»

    Gracias de antemano por atender mi comentario, y además espero contar con tu apoyo para resolver este dilema.

    Saludos,

    Raúl Flores

  20. Buenas tarde PepLluis muy buen aporte, pero me puedes ayudar con el codigo, porque necesito realizar un programa que lea el peso de la bascula y colocarlo en un textbox, por favor si me pueden ayudar aqui dejo mi correo.

    Gracias de antemano

  21. Gracias por tu ayuda, corrí el código en VB y la balanza que utilizo responde bien, utilizo c# para la programación y al cambiar el código no logro que funcione bien la parte de la recepción de datos. Utilizo un evento Click de un botón para enviar la instrucción, y coloco: BasculaCom.DataReceived += new SerialDataReceivedEventHandler(BasculaCom_DataReceived);

    luego tengo el evento de recepción de datos

     private void BasculaCom_DataReceived(object sender, SerialDataReceivedEventArgs e)

           {

               SerialPort sp = (SerialPort)sender;

               string indata = sp.ReadExisting();

           }

    pero nunca se dispara este evento. La idea es que luego los datos leídos se muestren en un textbox. De antemano muchas gracias

  22. Buenas tardes Pep, quisiera ver si me puede ayudar. Necesito hacer una aplicación en C# o VB#, en Visual Studio 2005, que pueda leer datos del pesaje de una bascula SIPEL y ponerlos en un textbox. Mi correo es lesternp@gmail.com.

  23. Pep,
    Buen dia, genial tu blog,de verdad agradecemos mucho a las personas como tu que comparten sus conocimientos. Por fa, necesito tu ayuda, estoy realizando un sistema para una recicladora, debe pasarme el peso de la báscula CAS CI-2001A, al dar click en algun boton debe obtener el peso, y realizar los cálculos respectivos.
    Agradeceria muchísmo tu ayuda.
    lexy_1624@hotmail.com

  24. Pep,
    Buen dia, genial tu blog,de verdad agradecemos mucho a las personas como tu que comparten sus conocimientos. Por fa, necesito tu ayuda, estoy realizando un sistema para una recicladora, debe pasarme el peso de la báscula CAS CI-2001A, al dar click en algun boton debe obtener el peso, y realizar los cálculos respectivos.
    Agradeceria muchísmo tu ayuda.

  25. Hola Pep, gracias por tu block pero si quiero recuprerar los pesos de una balanza atravez de un convertidor rs232 via ethernet cual seria el codigo de conexion utlizando sockets?

    1. Hola Fe,
      Lamento no disponer de una respuesta concreta, pues dependerá del fabricante del conversor. Debes remitirte a la documentación del mismo, lo mas probable es que disponga de un SDK para poder integrarlo en tu aplicación.
      Saludos,
      PepLluis,

  26. Me ayudarian con recomendaciones de que tipo de balanzas estan trabajando, quiero hacer un proyecto con una basica. no mas de 4Kg.
    Si me ayudan con modelos que usaron o podria usar.

  27. Buenas noches, esta estupendo el programa para probar conexion con una balanza, pero me gustaria saber como puedo realizar un programa que tenga constante comunicacion con la balanza, es decir que cuando coloque un producto en la balanza automaticamente el programa de recepcion de datos obtenga esa informacion y se pueda copiar automaticamente al programa de facturacion. Me encantaria poder saber si alguien tiene alguna solucion a esto,. Muchas gracias

  28. Hola me podrian ayudar estoy tratando de traer los datos de un scaner/Balanza Datalogic, sucede que se bloquea al momento de traer el dato esperando la señal CTS y no me muestra nada, ¿como hago para enviarle esta señal CTS de control desde VB .NET?

  29. Hola me podrian ayudar estoy tratando de traer los datos de un scaner/Balanza Datalogic, sucede que se bloquea al momento de traer el dato esperando la señal CTS y no me muestra nada, ¿como hago para enviarle esta señal CTS de control desde VB .NET?

  30. HOla — Nesecito Apoyo .. Quiero Obtener el peso de una Balanza Mettle Toledo 8530 , aplique todo lo del post no me tira ningun error , pero solo me devuelve solo vacios ..

    me ayudas ?

  31. -Hola Estoy integrando una bascula EQM 400 de Torrey por el puerto rs232 pero no consigo obtener el peso, saben que parámetro se debe enviar para que responda?

  32. Hola Pep Luis, quisieramos conectarnos a las balanzas torrey via USB desde un apk android. Podemos desarrollarlo internamente o contratarlo. Te interesaria ayudarnos con eso? Gracias!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *