‘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