Está en la página 1de 5

Este programa fue elaborado con el fin de controlar el giro de un motor hacia los dos sentidos a travs de un puerto

serial RS232. El encabezado del programa empieza declarando las variables: Public Class Form1 Dim StrBufferOut As String Dim StrBufferIn As String Se inicializan los controles para conectar: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load StrBufferOut = "" StrBufferIn = "" BtnConectar.Enabled = False BtnEnviarDato.Enabled = False Atras.Enabled = False TmrTimer.Enabled = False TxtBufferOut.Text = "1"

El control sobre los datos que ingresan desde cualquier dispositivo serial, se realiza en el codigo que se genero para el timer: Private Sub tmrTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrTimer.Tick StrBufferIn = spPuerto.ReadExisting If StrBufferIn "" Then txtBufferIn.Text = StrBufferIn StrBufferIn = "" spPuerto.DiscardInBuffer() End If End Sub El tiempo de giro en los dos sentidos es de una aproximacin de 15 segundos. Al terminar este tiempo de giro el motor se detiene. Ahora se muestra toda la estructura del programa completa: Public Class Form1 Dim StrBufferOut As String Dim StrBufferIn As String

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load StrBufferOut = "" StrBufferIn = "" BtnConectar.Enabled = False BtnEnviarDato.Enabled = False Atras.Enabled = False TmrTimer.Enabled = False TxtBufferOut.Text = "1" End Sub Private Sub BtnDeterminarConexion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDeterminarConexion.Click CboPuertos.Items.Clear() For Each puertodisponible As String In My.Computer.Ports.SerialPortNames CboPuertos.Items.Add(puertodisponible) Next If CboPuertos.Items.Count > 0 Then CboPuertos.Text = CboPuertos.Items(0) MessageBox.Show("SELECCIONE EL PUERTO A TRABAJAR") BtnConectar.Enabled = True Else MessageBox.Show("NINGUN PUERTO ENCONTRADO") BtnConectar.Enabled = False BtnEnviarDato.Enabled = False CboPuertos.Items.Clear() CboPuertos.Text = (" End If End Sub Private Sub BtnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConectar.Click ")

If BtnConectar.Text = "CONECTAR" Then spPuertos.PortName = CboPuertos.Text

BtnConectar.Text = "DESCONECTAR" BtnEnviarDato.Enabled = True Atras.Enabled = True TmrTimer.Interval = 15000 TmrTimer.Enabled = True spPuertos.Open() ElseIf BtnConectar.Text = "DESCONECTAR" Then BtnConectar.Text = "CONECTAR" BtnEnviarDato.Enabled = False Atras.Enabled = False TmrTimer.Enabled = False spPuertos.Close()

End If End Sub Private Sub BtnEnviarDato_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEnviarDato.Click Dim x As VariantType x=0 Do While x < 15000 x=x+1 spPuertos.DiscardOutBuffer() StrBufferOut = TxtBufferOut.Text spPuertos.Write(StrBufferOut) ' spPuertos.RtsEnable = True Loop 'spPuertos.RtsEnable = False End Sub

Private Sub TmrTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TmrTimer.Tick

StrBufferIn = spPuertos.ReadExisting If StrBufferIn <> "" Then TxtBufferIn.Text = StrBufferIn StrBufferIn = "" spPuertos.DiscardInBuffer() End If End Sub Private Sub Atras_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Atras.Click Dim x As VariantType x=0 Do While x < 150000 x=x+1 spPuertos.DiscardOutBuffer() StrBufferOut = TxtBufferOut.Text 'spPuertos.Write(StrBufferOut) spPuertos.RtsEnable = True Loop spPuertos.RtsEnable = False End Sub End Class

También podría gustarte