Add VB Sample Program
This commit is contained in:
@@ -0,0 +1,350 @@
|
||||
'Serial Port Interfacing with VB.net 2010 Express Edition
|
||||
'Copyright (C) 2010 Richard Myrick T. Arellaga
|
||||
'
|
||||
'This program is free software: you can redistribute it and/or modify
|
||||
'it under the terms of the GNU General Public License as published by
|
||||
'the Free Software Foundation, either version 3 of the License, or
|
||||
'(at your option) any later version.
|
||||
'
|
||||
'This program is distributed in the hope that it will be useful,
|
||||
'but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
'GNU General Public License for more details.
|
||||
'
|
||||
' You should have received a copy of the GNU General Public License
|
||||
' along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
Imports System
|
||||
Imports System.ComponentModel
|
||||
Imports System.Threading
|
||||
Imports System.IO.Ports
|
||||
Public Class frmMain
|
||||
Dim myPort As Array 'COM Ports detected on the system will be stored here
|
||||
Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data
|
||||
|
||||
Dim Buffer(4) As Byte
|
||||
Dim CommandSend As String
|
||||
Dim AllIndex As String
|
||||
|
||||
|
||||
|
||||
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
|
||||
'When our form loads, auto detect all serial ports in the system and populate the cmbPort Combo box.
|
||||
myPort = IO.Ports.SerialPort.GetPortNames() 'Get all com ports available
|
||||
cmbBaud.Items.Add(9600) 'Populate the cmbBaud Combo box to common baud rates used
|
||||
|
||||
For i = 0 To UBound(myPort)
|
||||
cmbPort.Items.Add(myPort(i))
|
||||
Next
|
||||
cmbPort.Text = cmbPort.Items.Item(0) 'Set cmbPort text to the first COM port detected
|
||||
cmbBaud.Text = cmbBaud.Items.Item(0) 'Set cmbBaud text to the first Baud rate on the list
|
||||
|
||||
btnDisconnect.Enabled = False 'Initially Disconnect Button is Disabled
|
||||
|
||||
Me.Text =
|
||||
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name.ToString() & " " & _
|
||||
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
|
||||
SerialPort1.PortName = cmbPort.Text 'Set SerialPort1 to the selected COM port at startup
|
||||
SerialPort1.BaudRate = cmbBaud.Text 'Set Baud rate to the selected value on
|
||||
|
||||
'Other Serial Port Property
|
||||
SerialPort1.Parity = IO.Ports.Parity.None
|
||||
SerialPort1.StopBits = IO.Ports.StopBits.One
|
||||
SerialPort1.DataBits = 8 'Open our serial port
|
||||
SerialPort1.Open()
|
||||
|
||||
btnConnect.Enabled = False 'Disable Connect button
|
||||
btnDisconnect.Enabled = True 'and Enable Disconnect button
|
||||
GroupBox1.Enabled = True
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
|
||||
SerialPort1.Close() 'Close our Serial Port
|
||||
|
||||
btnConnect.Enabled = True
|
||||
btnDisconnect.Enabled = False
|
||||
GroupBox1.Enabled = False
|
||||
Timer1.Enabled = False
|
||||
CheckBoxWTauto.Checked = False
|
||||
CheckBoxRTauto.Checked = False
|
||||
CheckBoxPHauto.Checked = False
|
||||
CheckBoxALLauto.Checked = False
|
||||
End Sub
|
||||
|
||||
Private Sub btnWaterTemp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWaterTemp.Click
|
||||
|
||||
'AA 01 01 BB , Enquiry DS18B20 temperature
|
||||
'AA 01 02 BB , Enquiry LM35 temperature
|
||||
'AA 01 03 BB , Enquiry PH reading
|
||||
'AA 01 04 BB , Enqyiry DS18B20 , LM35 and Ph
|
||||
Buffer(0) = &HAA
|
||||
Buffer(1) = &H1
|
||||
Buffer(2) = &H1
|
||||
Buffer(3) = &HBB
|
||||
SerialPort1.Write(Buffer, 0, 3)
|
||||
CommandSend = "WT" 'Enquiry Water Temperature Command Send
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
|
||||
'ReceivedText(SerialPort1.ReadExisting()) 'Automatically called every time a data is received at the serialPort
|
||||
ReceivedText(SerialPort1.ReadTo(Chr(10))) ' Read until New Line Char(10)
|
||||
End Sub
|
||||
Private Sub ReceivedText(ByVal [text] As String)
|
||||
'compares the ID of the creating Thread to the ID of the calling Thread
|
||||
If Me.rtbReceived.InvokeRequired Then
|
||||
Dim x As New SetTextCallback(AddressOf ReceivedText)
|
||||
Me.Invoke(x, New Object() {(text)})
|
||||
Else
|
||||
'Me.rtbReceived.Text &= [text]
|
||||
Dim newString As String = [text].Replace(vbCr, "") 'Remove Carriage Return
|
||||
Dim y As String
|
||||
Select Case CommandSend
|
||||
Case "WT"
|
||||
y = " Water Temperature : "
|
||||
Me.labelWaterTemperature.Text = newString
|
||||
If CheckBoxWTlog.Checked = True Then
|
||||
Dim file As System.IO.StreamWriter
|
||||
file = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\water.csv", True)
|
||||
file.WriteLine(Format(TimeOfDay, "HH:mm:ss") + "," + newString)
|
||||
file.Close()
|
||||
End If
|
||||
Case "RT"
|
||||
y = " Room Temperature : "
|
||||
Me.labelRoomTemperature.Text = newString
|
||||
If CheckBoxWTlog.Checked = True Then
|
||||
Dim file As System.IO.StreamWriter
|
||||
file = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\room.csv", True)
|
||||
file.WriteLine(Format(TimeOfDay, "HH:mm:ss") + "," + newString)
|
||||
file.Close()
|
||||
End If
|
||||
Case "PH"
|
||||
y = " PH : "
|
||||
If CheckBoxWTlog.Checked = True Then
|
||||
Dim file As System.IO.StreamWriter
|
||||
file = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\ph.csv", True)
|
||||
file.WriteLine(Format(TimeOfDay, "HH:mm:ss") + "," + newString)
|
||||
file.Close()
|
||||
End If
|
||||
Me.labelPhReading.Text = newString
|
||||
Case "ALL"
|
||||
Select Case AllIndex
|
||||
Case "1"
|
||||
y = " Water Temperature : "
|
||||
Me.labelWaterTemperature.Text = newString
|
||||
If CheckBoxWTlog.Checked = True Then
|
||||
Dim file As System.IO.StreamWriter
|
||||
file = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\water.csv", True)
|
||||
file.WriteLine(Format(TimeOfDay, "HH:mm:ss") + "," + newString)
|
||||
file.Close()
|
||||
End If
|
||||
AllIndex = "2"
|
||||
Case "2"
|
||||
y = " Room Temperature : "
|
||||
Me.labelRoomTemperature.Text = newString
|
||||
If CheckBoxWTlog.Checked = True Then
|
||||
Dim file As System.IO.StreamWriter
|
||||
file = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\room.csv", True)
|
||||
file.WriteLine(Format(TimeOfDay, "HH:mm:ss") + "," + newString)
|
||||
file.Close()
|
||||
End If
|
||||
AllIndex = "3"
|
||||
Case "3"
|
||||
y = " PH : "
|
||||
Me.labelPhReading.Text = newString
|
||||
If CheckBoxWTlog.Checked = True Then
|
||||
Dim file As System.IO.StreamWriter
|
||||
file = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\ph.csv", True)
|
||||
file.WriteLine(Format(TimeOfDay, "HH:mm:ss") + "," + newString)
|
||||
file.Close()
|
||||
End If
|
||||
AllIndex = ""
|
||||
Case Else
|
||||
y = " Invaild Command Send "
|
||||
End Select
|
||||
Case Else
|
||||
y = " Invaild Command Send "
|
||||
End Select
|
||||
|
||||
|
||||
Me.rtbReceived.AppendText(Format(TimeOfDay, "HH:mm:ss") + y + newString + vbCrLf)
|
||||
Me.rtbReceived.ScrollToCaret()
|
||||
|
||||
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPort.SelectedIndexChanged
|
||||
If SerialPort1.IsOpen = False Then
|
||||
SerialPort1.PortName = cmbPort.Text 'pop a message box to user if he is changing ports
|
||||
Else 'without disconnecting first.
|
||||
MsgBox("Valid only if port is Closed", vbCritical)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub cmbBaud_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBaud.SelectedIndexChanged
|
||||
If SerialPort1.IsOpen = False Then
|
||||
SerialPort1.BaudRate = cmbBaud.Text 'pop a message box to user if he is changing baud rate
|
||||
Else 'without disconnecting first.
|
||||
MsgBox("Valid only if port is Closed", vbCritical)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub txtTransmit_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub btnRoomTemp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRoomTemp.Click
|
||||
'AA 01 01 BB , Enquiry DS18B20 temperature
|
||||
'AA 01 02 BB , Enquiry LM35 temperature
|
||||
'AA 01 03 BB , Enquiry PH reading
|
||||
'AA 01 04 BB , Enqyiry DS18B20 , LM35 and Ph
|
||||
Buffer(0) = &HAA
|
||||
Buffer(1) = &H1
|
||||
Buffer(2) = &H2
|
||||
Buffer(3) = &HBB
|
||||
SerialPort1.Write(Buffer, 0, 3)
|
||||
CommandSend = "RT" 'Enquiry Room Temperature Command Send
|
||||
End Sub
|
||||
|
||||
Private Sub btnPh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPh.Click
|
||||
'AA 01 01 BB , Enquiry DS18B20 temperature
|
||||
'AA 01 02 BB , Enquiry LM35 temperature
|
||||
'AA 01 03 BB , Enquiry PH reading
|
||||
'AA 01 04 BB , Enqyiry DS18B20 , LM35 and Ph
|
||||
Buffer(0) = &HAA
|
||||
Buffer(1) = &H1
|
||||
Buffer(2) = &H3
|
||||
Buffer(3) = &HBB
|
||||
SerialPort1.Write(Buffer, 0, 3)
|
||||
CommandSend = "PH" 'Enquiry PH Command Send
|
||||
End Sub
|
||||
|
||||
Private Sub bntReadAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntReadAll.Click
|
||||
'AA 01 01 BB , Enquiry DS18B20 temperature
|
||||
'AA 01 02 BB , Enquiry LM35 temperature
|
||||
'AA 01 03 BB , Enquiry PH reading
|
||||
'AA 01 04 BB , Enqyiry DS18B20 , LM35 and Ph
|
||||
Buffer(0) = &HAA
|
||||
Buffer(1) = &H1
|
||||
Buffer(2) = &H4
|
||||
Buffer(3) = &HBB
|
||||
SerialPort1.Write(Buffer, 0, 3)
|
||||
CommandSend = "ALL" 'Enquiry All Command Send
|
||||
AllIndex = "1"
|
||||
End Sub
|
||||
|
||||
Private Sub rtbReceived_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtbReceived.TextChanged
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub CheckBoxWTauto_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBoxWTauto.CheckedChanged
|
||||
If CheckBoxWTauto.Checked = True Then
|
||||
CheckBoxRTauto.Checked = False
|
||||
CheckBoxPHauto.Checked = False
|
||||
Timer1.Enabled = True
|
||||
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
|
||||
|
||||
'AA 01 01 BB , Enquiry DS18B20 temperature
|
||||
'AA 01 02 BB , Enquiry LM35 temperature
|
||||
'AA 01 03 BB , Enquiry PH reading
|
||||
'AA 01 04 BB , Enqyiry DS18B20 , LM35 and Ph
|
||||
|
||||
If CheckBoxWTauto.Checked = True Then
|
||||
Buffer(0) = &HAA
|
||||
Buffer(1) = &H1
|
||||
Buffer(2) = &H1
|
||||
Buffer(3) = &HBB
|
||||
SerialPort1.Write(Buffer, 0, 3)
|
||||
CommandSend = "WT" 'Enquiry Water Temperature Command Send
|
||||
End If
|
||||
|
||||
If CheckBoxRTauto.Checked = True Then
|
||||
Buffer(0) = &HAA
|
||||
Buffer(1) = &H1
|
||||
Buffer(2) = &H2
|
||||
Buffer(3) = &HBB
|
||||
SerialPort1.Write(Buffer, 0, 3)
|
||||
CommandSend = "RT" 'Enquiry Room Temperature Command Send
|
||||
End If
|
||||
|
||||
If CheckBoxPHauto.Checked = True Then
|
||||
Buffer(0) = &HAA
|
||||
Buffer(1) = &H1
|
||||
Buffer(2) = &H3
|
||||
Buffer(3) = &HBB
|
||||
SerialPort1.Write(Buffer, 0, 3)
|
||||
CommandSend = "PH" 'Enquiry PH Command Send
|
||||
End If
|
||||
|
||||
If CheckBoxALLauto.Checked = True Then
|
||||
Buffer(0) = &HAA
|
||||
Buffer(1) = &H1
|
||||
Buffer(2) = &H4
|
||||
Buffer(3) = &HBB
|
||||
SerialPort1.Write(Buffer, 0, 3)
|
||||
CommandSend = "ALL" 'Enquiry All Command Send
|
||||
AllIndex = "1"
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
|
||||
Me.rtbReceived.Text = ""
|
||||
End Sub
|
||||
|
||||
Private Sub CheckBoxALLauto_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBoxALLauto.CheckedChanged
|
||||
If CheckBoxALLauto.Checked = True Then
|
||||
CheckBoxWTauto.Checked = False
|
||||
CheckBoxWTauto.Enabled = False
|
||||
CheckBoxRTauto.Checked = False
|
||||
CheckBoxRTauto.Enabled = False
|
||||
CheckBoxPHauto.Checked = False
|
||||
CheckBoxPHauto.Enabled = False
|
||||
Timer1.Enabled = True
|
||||
Else
|
||||
CheckBoxWTauto.Enabled = True
|
||||
CheckBoxRTauto.Enabled = True
|
||||
CheckBoxPHauto.Enabled = True
|
||||
Timer1.Enabled = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub CheckBoxRTauto_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBoxRTauto.CheckedChanged
|
||||
|
||||
If CheckBoxRTauto.Checked = True Then
|
||||
CheckBoxWTauto.Checked = False
|
||||
CheckBoxPHauto.Checked = False
|
||||
Timer1.Enabled = True
|
||||
Else
|
||||
Timer1.Enabled = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub CheckBoxPHauto_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBoxPHauto.CheckedChanged
|
||||
|
||||
If CheckBoxPHauto.Checked = True Then
|
||||
CheckBoxWTauto.Checked = False
|
||||
CheckBoxRTauto.Checked = False
|
||||
Timer1.Enabled = True
|
||||
Else
|
||||
Timer1.Enabled = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user