Public Class RGB_LED_UI Dim COMName As String = "" Dim TimeOut As Integer = 200 'In milliseconds Dim BaudRate As Integer = 9600 Dim sport As SPortV.SPortV = Nothing Dim Contr_Min As Integer = 70, Contr_Max As Integer = 350 'Dim Contr_Min As Integer = 0, Contr_Max As Integer = 500 Dim Contr_Range As Integer = 500, Current_Range As Single Dim fmt As String = "D3" 'Format - 3 decimal places Dim delay As Integer = 20 'Delay between commands sent to the port (ms) Dim mode As Integer = 0 '0-directly to serial port, 1-to RGB_LED object Dim rgbled As RGB_LED.RGB_LED Private Sub DisplayErrMsg(ByVal rv As Integer) If (rv = 0) Then Call DisplayMsg(Format(rv, "") & " " & sport.LastError) Else Call DisplayMsg(Format(rv, "")) End If End Sub Private Sub DisplayMsg(ByVal msg As String) lblMsg.Text = msg End Sub Private Sub ClearErrMsg() lblMsg.Text = "" End Sub Private Sub mnuOpenPort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuOpenPort.Click Dim rv As Integer rv = sport.Open(COMName, TimeOut, BaudRate) Call DisplayErrMsg(rv) If (rv > 0) Then mnuClosePort.Enabled = True : mnuOpenPort.Enabled = False : btnExe.Enabled = True : mnuLog.Enabled = True : mnuPorts.Enabled = False scrR.Enabled = True : scrG.Enabled = True : scrB.Enabled = True : scrA.Enabled = True chkR.Enabled = True : chkG.Enabled = True : chkB.Enabled = True : chkA.Enabled = True End If End Sub Private Sub mnuClosePort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuClosePort.Click Dim rv As Integer rv = sport.Close() Call DisplayErrMsg(rv) If (rv > 0) Then mnuClosePort.Enabled = False : btnExe.Enabled = False : mnuOpenPort.Enabled = True : mnuLog.Enabled = False : mnuPorts.Enabled = True scrR.Enabled = False : scrG.Enabled = False : scrB.Enabled = False : scrA.Enabled = False chkR.Enabled = False : chkG.Enabled = False : chkB.Enabled = False : chkA.Enabled = False End If End Sub Private Sub btnExe_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExe.Click Dim rv As Integer, str As String = "" Call ClearErrMsg() rv = sport.Write(cboCmd.Text) Call DisplayErrMsg(rv) cboCmd.Items.Insert(0, cboCmd.Text) 'Add on top of the list End Sub Private Sub lblMsg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblMsg.Click lblMsg.Text = "" End Sub Private Sub StatusStrip1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles StatusStrip1.Click lblMsg.Text = "" End Sub Private Sub RGB_LED_UI_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed rgbled = Nothing Call sport.Close() sport = Nothing End Sub Private Sub RGB_LED_UI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sp As String Dim innerItem As ToolStripMenuItem sport = New SPortV.SPortV rgbled = New RGB_LED.RGB_LED(sport) For Each sp In My.Computer.Ports.SerialPortNames innerItem = New ToolStripMenuItem(sp) mnuPorts.DropDownItems.Add(innerItem) AddHandler innerItem.Click, New System.EventHandler(AddressOf OptionClick) Next Call AdjustRanges() End Sub Private Sub AdjustRanges() 'Dim range As Integer 'range = Contr_Max - Contr_Min 'scrR.Minimum = 0 : scrR.Maximum = range 'scrG.Minimum = 0 : scrG.Maximum = range 'scrB.Minimum = 0 : scrB.Maximum = range 'scrA.Minimum = 0 : scrA.Maximum = range Current_Range = Contr_Max - Contr_Min rgbled.LowLimit = Contr_Min : rgbled.HighLimit = Contr_Max End Sub Private Sub OptionClick(ByVal sender As Object, ByVal e As EventArgs) Dim itemClicked As New ToolStripMenuItem itemClicked = CType(sender, ToolStripMenuItem) COMName = itemClicked.Text mnuPorts.Text = "Port-" & COMName mnuOpenPort.Enabled = True End Sub Private Sub mnuLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuLog.Click Call DisplayMsg(sport.ErrorLog()) End Sub Private Sub scrR_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles scrR.Scroll Dim rv As Integer, ctr As Integer, scrv As Integer, cmd As String scrv = scrR.Value If (chkTie.Checked = True) Then Call SetAllColors(scrv) : Return txtR.Text = scrv.ToString(fmt) If (mode = 0) Then 'ctr = Contr_Range - (scrv + Contr_Min) ctr = Contr_Range - (Contr_Min + Convert.ToInt32(Convert.ToSingle(scrv) * Current_Range / 100)) cmd = "AVA" & ctr.ToString(fmt) rv = sport.Write(cmd) Call DisplayMsg(cmd) Else Call rgbled.ChannelIntensity(1, scrv) End If End Sub Private Sub scrG_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles scrG.Scroll Dim rv As Integer, ctr As Integer, scrv As Integer, cmd As String scrv = scrG.Value If (chkTie.Checked = True) Then Call SetAllColors(scrv) : Return txtG.Text = scrv.ToString(fmt) If (mode = 0) Then 'ctr = Contr_Range - (scrv + Contr_Min) ctr = Contr_Range - (Contr_Min + Convert.ToInt32(Convert.ToSingle(scrv) * Current_Range / 100)) cmd = "AVB" & ctr.ToString(fmt) rv = sport.Write(cmd) Call DisplayMsg(cmd) Else Call rgbled.ChannelIntensity(2, scrv) End If End Sub Private Sub scrB_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles scrB.Scroll Dim rv As Integer, ctr As Integer, scrv As Integer, cmd As String scrv = scrB.Value If (chkTie.Checked = True) Then Call SetAllColors(scrv) : Return txtB.Text = scrv.ToString(fmt) If (mode = 0) Then 'ctr = Contr_Range - (scrv + Contr_Min) ctr = Contr_Range - (Contr_Min + Convert.ToInt32(Convert.ToSingle(scrv) * Current_Range / 100)) cmd = "AVC" & ctr.ToString(fmt) rv = sport.Write(cmd) Call DisplayMsg(cmd) Else Call rgbled.ChannelIntensity(3, scrv) End If End Sub Private Sub scrA_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles scrA.Scroll Dim rv As Integer, ctr As Integer, scrv As Integer, cmd As String scrv = scrA.Value If (chkTie.Checked = True) Then Call SetAllColors(scrv) : Return txtA.Text = scrv.ToString(fmt) If (mode = 0) Then 'ctr = Contr_Range - (scrv + Contr_Min) ctr = Contr_Range - (Contr_Min + Convert.ToInt32(Convert.ToSingle(scrv) * Current_Range / 100)) cmd = "AVD" & ctr.ToString(fmt) rv = sport.Write(cmd) Call DisplayMsg(cmd) Else Call rgbled.ChannelIntensity(4, scrv) End If End Sub Private Sub SetAllColors(ByVal scrv As Integer) Dim ctr As Integer, cmdr As String = "", cmdg As String = "", cmdb As String = "", cmda As String = "", sctr As String, slbl As String 'ctr = Contr_Range - (scrv + Contr_Min) ctr = Contr_Range - (Contr_Min + Convert.ToInt32(Convert.ToSingle(scrv) * Current_Range / 100)) sctr = ctr.ToString(fmt) slbl = scrv.ToString(fmt) 'R txtR.Text = slbl : scrR.Value = scrv If (mode = 0) Then cmdr = "AVA" & sctr : Call sport.Write(cmdr) Else Call rgbled.ChannelIntensity(1, scrv) System.Threading.Thread.Sleep(delay) 'G txtG.Text = slbl : scrG.Value = scrv If (mode = 0) Then cmdg = "AVB" & sctr : Call sport.Write(cmdg) Else Call rgbled.ChannelIntensity(2, scrv) System.Threading.Thread.Sleep(delay) 'B txtB.Text = slbl : scrB.Value = scrv If (mode = 0) Then cmdb = "AVC" & sctr : Call sport.Write(cmdb) Else Call rgbled.ChannelIntensity(3, scrv) System.Threading.Thread.Sleep(delay) 'A txtA.Text = slbl : scrA.Value = scrv If (mode = 0) Then cmda = "AVD" & sctr : Call sport.Write(cmda) Else Call rgbled.ChannelIntensity(4, scrv) System.Threading.Thread.Sleep(delay) ' SHOW COMMANDS If (mode = 0) Then Call DisplayMsg(cmdr & ", " & cmdg & ", " & cmdb & ", " & cmda) End Sub Private Sub mnuLowLimit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuLowLimit.Click Dim snew As String, newv As Integer Call ClearErrMsg() snew = InputBox("Enter new Low Limit.", "Low Limit", Contr_Min.ToString) If snew Is "" Then Return If Not IsNumeric(snew) Then Return newv = CInt(snew) If (newv <= 0) Then Return Contr_Min = newv Call DisplayMsg(Contr_Min.ToString) Call AdjustRanges() End Sub Private Sub mnuHighLimit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuHighLimit.Click Dim snew As String, newv As Integer Call ClearErrMsg() snew = InputBox("Enter new High Limit.", "High Limit", Contr_Max.ToString) If snew Is "" Then Return If Not IsNumeric(snew) Then Return newv = CInt(snew) If (newv <= 0) Then Return Contr_Max = newv Call DisplayMsg(Contr_Max.ToString) Call AdjustRanges() End Sub Private Sub chkR_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkR.CheckedChanged Dim cmd As String If (mode = 0) Then If (chkR.Checked = True) Then cmd = "AVA000" Else cmd = "AVA500" Call sport.Write(cmd) : Call DisplayMsg(cmd) Else If (chkR.Checked = True) Then Call rgbled.ChannelIntensity(1, "on") Else Call rgbled.ChannelIntensity(1, "off") End If End Sub Private Sub chkG_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkG.CheckedChanged Dim cmd As String If (mode = 0) Then If (chkG.Checked = True) Then cmd = "AVB000" Else cmd = "AVB500" Call sport.Write(cmd) : Call DisplayMsg(cmd) Else If (chkG.Checked = True) Then Call rgbled.ChannelIntensity(2, "on") Else Call rgbled.ChannelIntensity(2, "off") End If End Sub Private Sub chkB_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkB.CheckedChanged Dim cmd As String If (mode = 0) Then If (chkB.Checked = True) Then cmd = "AVC000" Else cmd = "AVC500" Call sport.Write(cmd) : Call DisplayMsg(cmd) Else If (chkB.Checked = True) Then Call rgbled.ChannelIntensity(3, "on") Else Call rgbled.ChannelIntensity(3, "off") End If End Sub Private Sub chkA_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkA.CheckedChanged Dim cmd As String If (mode = 0) Then If (chkA.Checked = True) Then cmd = "AVD000" Else cmd = "AVD500" Call sport.Write(cmd) : Call DisplayMsg(cmd) Else If (chkA.Checked = True) Then Call rgbled.ChannelIntensity(4, "on") Else Call rgbled.ChannelIntensity(4, "off") End If End Sub Private Sub mnuMode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuMode.Click Dim snew As String, newv As Integer Call ClearErrMsg() snew = InputBox("Enter new Mode: 0-directly to serial port, 1-to RGB_LED object", "Mode", mode) If snew Is "" Then Return If Not IsNumeric(snew) Then Return newv = CInt(snew) If ((newv <> 0) And (newv <> 1)) Then Return mode = newv Call DisplayMsg(mode.ToString) End Sub End Class