' Não sei qual a função destes imports mas podem ser omitidos
Imports System
Imports System.Threading
Imports System.IO.Ports
'Imports System.ComponentModel
Public Class Form1
Dim serial_port_list As Array ' array que recebe a lista das portas seriais
Delegate Sub settextcallback(ByVal [text] As String)
Dim send_string As String ' string que de envio pela serial - caracteres ASCII
Dim valor_recebido As Integer ' variável que armazena o valor recebido pela serial
Dim contador_dados_recebidos As Integer = 0 ' conta quantos dados foram recebidos
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CheckForIllegalCrossThreadCalls = False ' previne o erro de segurança threads diferentes
serial_port_list = IO.Ports.SerialPort.GetPortNames() ' salva no array a lista de portas disponíveis
serial_port_box.Items.AddRange(serial_port_list) ' adicionar as portas disponíveis ao combobox
open_serial_button.Enabled = False ' botão desabilitado - abrir conexao
send_button.Enabled = False ' botão desabilitado - enviar dado
' Chart1.ChartAreas("ChartArea1").AxisX.Minimum = 0 ' define min eixo X - valores fixos
' Chart1.ChartAreas("ChartArea1").AxisX.Maximum = 64 ' define max eixo X - valores fixos
' Chart1.ChartAreas("ChartArea1").AxisY.Minimum = 0 ' define min eixo Y - valores fixos
' Chart1.ChartAreas("ChartArea1").AxisY.Maximum = 255 ' define max eixo Y - valores fixos
End Sub
Private Sub open_serial_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles open_serial_button.Click
serial_rs232.PortName = serial_port_box.Text ' define a porta serial escolhida no combobox
Try
serial_rs232.Open() ' tenta abrir a conexão
Catch ex As Exception
MsgBox(Err.Description) ' em caso de erro - MSG
Finally
If serial_rs232.IsOpen = False Then ' se não conseguir abrir - exibe mensagem
MsgBox("Esta conexão não pode ser aberta", MsgBoxStyle.Exclamation)
open_serial_button.Enabled = False ' botão desabilitado
End If
End Try
If serial_rs232.IsOpen Then ' se estiver aberta
send_button.Enabled = True ' habilita botão - enviar
End If
End Sub
Private Sub send_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles send_button.Click
send_string = TextBox1.Text ' salva o valor to textbox na string de envio
serial_rs232.Write(send_string) ' escreve a string na porta serial - envia string
If CheckBox1.Checked Then ' caso checkbox marcado
Timer1.Enabled = True ' habilita o timer de repetição de envio
Else
Timer1.Enabled = False
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
send_string = TextBox1.Text ' timer para rotina de repetição de envio
serial_rs232.Write(send_string) ' envia a string de envio
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
Timer1.Interval = TrackBar1.Value ' salva o valor do trackbar como intervalo do timer
End Sub
Private Sub serial_port_box_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles serial_port_box.SelectedIndexChanged
open_serial_button.Enabled = True ' habilita o botão de envio após selecionar uma porta no combobox
End Sub
' rotina de tratamente da interrupção (evento) serial
Private Sub serial_rs232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serial_rs232.DataReceived
valor_recebido = serial_rs232.ReadByte ' salva o byte recebido na variável
contador_dados_recebidos += 1 ' incrementa o contador de dados recebidos
Label1.Text = "Valor recebido: " + valor_recebido.ToString ' escreve o valor recebido no label1
Label2.Text = "Contador: " + contador_dados_recebidos.ToString ' escreve o contador no label2
Chart1.Series("Series1").Points.AddY(valor_recebido) ' adiciona um novo ponto no gráfico com o valor recebido
If contador_dados_recebidos = 65 Then ' se a quantidade recebida for igual a
contador_dados_recebidos = 0 ' zera o contador
Chart1.Series("Series1").Points.Clear() ' zera os pontos do gráfico
End If
End Sub
Private Sub desconnect_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles desconnect_btn.Click
Timer1.Enabled = False ' desabilita o timer de repetição de envio antes de desconectar
serial_rs232.Close() ' fecha a conexaão
open_serial_button.Enabled = True ' habilita o botão de abrir conexão
End Sub
End Class