ssy99 2cfef90f03 feat: 최초 커밋
기존 프로그램 업로드
2025-04-30 16:23:29 +09:00

2092 lines
70 KiB
VB.net

Imports System.IO
Imports System.IO.Ports
Imports System.Text
Imports System.Threading
Imports System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar
Imports uPLibrary.Networking.M2Mqtt
Public Class Main_Form
Public Const programName As String = "DUALSONIC Cartridge Film Pressing JIG Program_"
Public Const programVer As String = "Ver 1.1.0"
Private Const ch20FullCount As Int16 = 20
Private Const ch10FullCount As Int16 = 10
'Private stateCount As Int32 = 1023
Private Enum chState
wait
start
play
middleStop
endStop
End Enum
Private runState(portCount) As Int16 ''각 채널 동작 상태
Private openStart As Boolean = False
Private portCount As Int16
Private defSecond As Integer
Private startTime(portCount) As Integer ''시작시간
Private nowTime(portCount) As Integer ''현재시간
Private runColor(portCount) As Boolean ''동작 시 색상 변화
Private playDate(portCount) As String '' 제조일자(mqtt)
Private playTime(portCount) As String '' 제조시간(mqtt)
Private playNumber(portCount) As String '' 카트리지 번호(mqtt)
Private playOKNG(portCount) As Boolean ''합불판정(mqtt)
Private runTime(portCount) As String '' 필름부착시간(mqtt)
Private makeCount As Integer = 0 '' 제작개수 (카트리지번호에 사용)
Private chTimeText(portCount) As TextBox
Private chTimePanel(portCount) As Panel
Private chTimeMin(portCount) As NumericUpDown
Private chTimeSec(portCount) As NumericUpDown
Private chTimebtn(portCount) As Button
Private chStartbtn(portCount) As Button
Private chResetbtn(portCount) As Button
Private chGroup(portCount) As GroupBox
Private Enum serialList
serial1
serial2
End Enum
Private chSerial(serialList.serial2) As SerialPort
Private chSerialCbb(serialList.serial2) As ComboBox
Private Enum saveList
min
sec
chCount
com1
com2
End Enum
Private Enum commandList
nowState
upState
downState
emoState
End Enum
Private commandSelect(commandList.emoState) As String
''thread
Private runCH1_Thread As Thread
Private runCH2_Thread As Thread
Private Delegate Sub uploadDelegate(serialNum As Int16, thName As String)
Private uploadDelegateFunc As uploadDelegate
Private rxMessage, cmdMessage, tmpCmdMessage As String
''MQTT
Public mqttBroker As String = String.Empty
Public mqttTopic As String = String.Empty
Private mqttSendData As String = String.Empty
Private MQTClient As MqttClient
''LocalFile 저장
Private filePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\TestCount"
Private Const csvSaveForm As String = "TestDate,RunCount"
Private Sub Main_Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Text = programName & programVer
formSetting()
ReDim chSerial(serialList.serial2)
chSerial(serialList.serial1) = Serial_1Port
chSerial(serialList.serial2) = Serial_2Port
loadConfig()
formLoad()
If mqttConnection() = False Then
MqttForm.txbMqttAd.Text = String.Empty
MqttForm.txbMqttTp.Text = String.Empty
mqttBroker = String.Empty
mqttTopic = String.Empty
End If
If loadLocalFile() = False Then
makeCount = 0
End If
txbToday.Text = makeCount
End Sub
Private Sub ch1_ThreadRun()
runCH1_Thread = New Thread(New ParameterizedThreadStart(AddressOf threadFunc))
If runCH1_Thread.IsAlive = True Then
runCH1_Thread.Abort()
End If
runCH1_Thread.Name = "TH1"
runCH1_Thread.IsBackground = True
runCH1_Thread.Start(runCH1_Thread.Name)
End Sub
Private Sub ch2_ThreadRun()
runCH2_Thread = New Thread(AddressOf threadFunc)
If runCH2_Thread.IsAlive = True Then
runCH2_Thread.Abort()
End If
runCH2_Thread.Name = "TH2"
runCH2_Thread.IsBackground = True
runCH2_Thread.Start(runCH2_Thread.Name)
End Sub
Private Sub threadFunc(name As String)
Dim serialNum As Int16
Do
If name = "TH1" Then
serialNum = serialList.serial1
Else
serialNum = serialList.serial2
End If
uploadDelegateFunc = New uploadDelegate(AddressOf ReceiveData)
Me.Invoke(uploadDelegateFunc, serialNum, name)
Thread.Sleep(500)
Loop
End Sub
Private Sub ReceiveData(serialNum As Int16, thName As String)
Try
Dim cmdVal() As String
If chSerial(serialNum).IsOpen = True Then
rxMessage = String.Empty
cmdMessage = String.Empty
rxMessage = chSerial(serialNum).ReadExisting
If rxMessage <> "" Then
ManagerForm.rtbState.AppendText(thName & ". " & rxMessage)
ManagerForm.rtbState.ScrollToCaret()
Dim commandCount As Integer = UBound(Split(rxMessage, vbCr)) - 1
For i = 0 To commandCount
Dim nowMessage As String = Mid(rxMessage, 1, InStr(rxMessage, vbCr) - 1)
If i <> commandCount Then
rxMessage = Mid(rxMessage, InStr(rxMessage, vbCr) + 1, rxMessage.Length)
End If
cmdMessage = Mid(rxMessage, 1, InStr(rxMessage, vbCr) + 1)
nowMessage = Mid(nowMessage, InStr(nowMessage, "[") + 1, nowMessage.Length)
Dim rsCommand As String = Mid(nowMessage, 1, InStr(nowMessage, " ") - 1)
nowMessage = Mid(nowMessage, InStr(nowMessage, " ") + 1, nowMessage.Length)
nowMessage = Mid(nowMessage, 1, InStr(nowMessage, "]") - 1)
Dim cmdCount As Int16 = UBound(Split(nowMessage, ","))
ReDim cmdVal(cmdCount)
For cnt = 0 To cmdCount
If cnt = cmdCount Then
cmdVal(cnt) = Mid(nowMessage, 1, nowMessage.Length)
Else
cmdVal(cnt) = Mid(nowMessage, 1, InStr(nowMessage, ",") - 1)
nowMessage = Mid(nowMessage, InStr(nowMessage, ",") + 1, nowMessage.Length)
End If
Next
Select Case rsCommand
Case commandSelect(commandList.nowState)
txbState.BackColor = Color.Green
'If cmdVal(1) = stateCount Then
' Dim stopBol As Boolean = False
' Dim runNum() As Int16 = chRunParsing(cmdVal(0))
' If runNum(0) = -1 Then
' Exit Sub
' End If
' Dim chRunNum As Int16 = 0
' For cnt = ch10FullCount To 1 Step -1
' stopBol = False
' For run = 0 To runNum.Length - 1
' If thName = "TH2" Then
' chRunNum = chRunNum + ch10FullCount
' End If
' If cnt = runNum(run) Then
' If runState(chRunNum) <> chState.wait Then
' runState(chRunNum) = chState.wait
' stopBol = True
' Exit For
' End If
' End If
' Next
' If stopBol = False Then
' If runState(chRunNum) <> chState.play Then
' runState(chRunNum) = chState.play
' End If
' End If
' Next
'End If
Case commandSelect(commandList.upState)
If cmdVal(0) > 0 Then
Dim runNum() As Int16 = chRunParsing(cmdVal(0))
If runNum(0) = -1 Then
Exit Sub
End If
Dim chRunNum As Int16
For run = 0 To runNum.Length - 1
chRunNum = runNum(run)
If thName = "TH2" Then
chRunNum = chRunNum + ch10FullCount
End If
If runState(chRunNum) = chState.start Or runState(chRunNum) = chState.play Then
If nowTime(chRunNum) = 0 Then
runState(chRunNum) = chState.endStop
Else
runState(chRunNum) = chState.middleStop
End If
End If
Next
End If
Case commandSelect(commandList.downState)
If cmdVal(0) > 0 Then
Dim runNum() As Int16 = chRunParsing(cmdVal(0))
If runNum(0) = -1 Then
Exit Sub
End If
Dim chRunNum As Int16
For run = 0 To runNum.Length - 1
chRunNum = runNum(run)
If thName = "TH2" Then
chRunNum = chRunNum + ch10FullCount
End If
If runState(chRunNum) = chState.wait Then
runState(chRunNum) = chState.start
End If
Next
End If
Case commandSelect(commandList.emoState)
Dim runNum As Int16
For emo = 1 To ch10FullCount
If thName = "TH2" Then
runNum = emo + ch10FullCount
Else
runNum = emo
End If
runState(runNum) = chState.middleStop
Next
End Select
Next
chSerial(serialNum).DiscardInBuffer()
chSerial(serialNum).DiscardOutBuffer()
rxMessage = String.Empty
cmdMessage = String.Empty
Else
txbState.BackColor = Color.Red
chSerial(serialNum).DiscardInBuffer()
chSerial(serialNum).DiscardOutBuffer()
End If
Else
txbState.BackColor = Color.Red
End If
Catch ex As Exception
MsgBox("데이터 불러오기 에러 발생 ::" & ex.Message, vbCritical)
End Try
End Sub
Private Function chRunParsing(chBinary As Int16) As Int16()
Dim SetUpList(0) As Int16
Dim Count, ArrayCount As Int16
Dim ChCount As Int16 = 0
SetUpList(0) = -1
Dim chNum As String = Convert.ToString(chBinary, 2)
For i = Len(chNum) To 1 Step -1
ChCount += 1
Count = Mid(chNum, i, 1)
If Count = 1 Then
If SetUpList(0) = -1 Then
SetUpList(0) = ChCount
Else
ArrayCount = SetUpList.Length
ReDim Preserve SetUpList(SetUpList.Length)
SetUpList(ArrayCount) = ChCount
End If
End If
Next
Return SetUpList
End Function
Private Sub formLoad()
For i = 1 To portCount
chTimeText(i).Enabled = True
chTimeText(i).Visible = True
chTimePanel(i).Enabled = False
chTimePanel(i).Visible = False
chTimebtn(i).Enabled = True
chTimebtn(i).Text = "타이머 수정"
chStartbtn(i).Enabled = True
chResetbtn(i).Enabled = True
Next
End Sub
Private Sub formSetting()
Me.Size = New Size(1920, 1080)
Me.WindowState = WindowState.Maximized
End Sub
Private Function mqttConnection() As Boolean
If MqttForm.loadMqtt = False Then
Return False
Else
If mqttConnect() = False Then
Return False
End If
End If
Return True
End Function
Private Sub rdbPort_CheckedChanged(sender As Object, e As EventArgs) Handles rdbPort.CheckedChanged
If rdbPort.Checked = True Then
gbTimeSet.Visible = False
gb_comport.Visible = True
End If
End Sub
Private Sub rdbTime_CheckedChanged(sender As Object, e As EventArgs) Handles rdbTime.CheckedChanged
If rdbTime.Checked = True Then
gbTimeSet.Visible = True
gb_comport.Visible = False
End If
End Sub
Private Sub rdbport20_CheckedChanged(sender As Object, e As EventArgs) Handles rdbport20.CheckedChanged
If rdbport20.Checked = True Then
serialChange()
ReDim chSerial(serialList.serial2)
chSerial(serialList.serial1) = Serial_1Port
chSerial(serialList.serial2) = Serial_2Port
pn10Port.Visible = False
pn10Port.Enabled = False
pn10Port.Location = New Point(1930, 80)
pn20Port.Visible = True
pn20Port.Enabled = True
pn20Port.Location = New Point(5, 90)
gbPort2.Enabled = True
DataSetting()
Dim timeData As String = timeSetting(Val(nudMinute.Value), Val(nudSecond.Value))
If timeData = "FAIL" Then
Exit Sub
End If
For i = 1 To portCount
startTime(i) = defSecond
chTimeText(i).Text = timeData
Next
If openStart = True Then
saveConfig()
Else
openStart = True
End If
formLoad()
systemOnOff(False)
End If
End Sub
Private Sub rdbport10_CheckedChanged(sender As Object, e As EventArgs) Handles rdbport10.CheckedChanged
If rdbport10.Checked = True Then
serialChange()
ReDim chSerial(serialList.serial1)
chSerial(serialList.serial1) = Serial_1Port
pn20Port.Visible = False
pn20Port.Enabled = False
pn20Port.Location = New Point(1930, 80)
pn10Port.Visible = True
pn10Port.Enabled = True
pn10Port.Location = New Point(5, 90)
gbPort2.Enabled = False
DataSetting()
Dim timeData As String = timeSetting(Val(nudMinute.Value), Val(nudSecond.Value))
If timeData = "FAIL" Then
Exit Sub
End If
For i = 1 To portCount
startTime(i) = defSecond
chTimeText(i).Text = timeData
Next
If openStart = True Then
saveConfig()
Else
openStart = True
End If
formLoad()
systemOnOff(False)
End If
End Sub
Private Sub serialChange()
For i = 0 To chSerial.Length - 1
If chSerial(i).IsOpen = True Then
If i = serialList.serial1 Then
If runCH1_Thread.IsAlive = True Then
runCH1_Thread.Abort()
End If
Else
If runCH2_Thread.IsAlive = True Then
runCH2_Thread.Abort()
End If
End If
chSerial(i).Close()
chSerialCbb(i).SelectedIndex = -1
chSerialCbb(i).Text = "PRESS!"
End If
Next
btnComport.Text = "스캔"
End Sub
Private Sub btnTimeSet_Click(sender As Object, e As EventArgs) Handles btnTimeSet.Click
If nudMinute.Text.Replace(" ", "") = "" Or nudSecond.Text.Replace(" ", "") = "" Or nudMinute.Text.Replace(" ", "") = Nothing Or nudSecond.Text.Replace(" ", "") = Nothing Then
MsgBox("시간이 입력되지 않았습니다. 시간을 입력하여 주십시오.", vbExclamation)
Exit Sub
End If
If nudMinute.Text.Replace(" ", "") = 0 And nudSecond.Text.Replace(" ", "") = 0 Then
MsgBox("카운트 할 시간이 존재하지 않습니다. 시간을 지정하여 주십시오.", vbExclamation)
Exit Sub
End If
Dim timeData As String = timeSetting(Val(nudMinute.Value), Val(nudSecond.Value))
If timeData = "FAIL" Then
Exit Sub
End If
For i = 1 To portCount
startTime(i) = defSecond
chTimeText(i).Text = timeData
chTimeText(i).BackColor = Color.FromArgb(255, 192, 128)
Next
saveConfig()
End Sub
Private Function timeSetting(minData As Int16, secData As Int16) As String
If minData = 0 And secData = 0 Then
defSecond = 0
Else
defSecond = secondFunc(minData, secData)
If defSecond = -1 Then
defSecond = 0
Return "FAIL"
End If
End If
Return TimeSpan.FromSeconds(defSecond).ToString("mm\:ss")
End Function
Private Function secondFunc(hour As Int16, second As Int16) As Int16
Try
Const hourSecond As Int16 = 60
Return (hour * hourSecond) + second
Catch ex As Exception
MsgBox("시간 변환 오류 :: " & ex.Message, vbCritical)
Return -1
End Try
End Function
Private Sub btnRunning(chNum As Int16)
Dim useSerial As SerialPort
Dim useCh As Int16
If chNum > ch10FullCount Then
useCh = chNum - ch10FullCount
useSerial = chSerial(serialList.serial2)
Else
useCh = chNum
useSerial = chSerial(serialList.serial1)
End If
If runState(chNum) = chState.wait Or runState(chNum) = chState.start Then
If state_updown(useCh, 0, useSerial) Then
processRun(chNum)
Else
runState(chNum) = chState.wait
MsgBox("데이터 통신 불량", vbCritical)
End If
ElseIf runState(chNum) = chState.play Or runState(chNum) = chState.middleStop Or runState(chNum) = chState.endStop Then
If state_updown(useCh, 1, useSerial) Then
processRun(chNum)
Else
runState(chNum) = chState.wait
MsgBox("데이터 통신 불량", vbCritical)
End If
Else
MsgBox("상태 오류 발생")
End If
End Sub
Private Sub btn_updown_ch1_Click(sender As Object, e As EventArgs) Handles btn_updown_ch1.Click
Const chNum As Int16 = 1
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch2_Click(sender As Object, e As EventArgs) Handles btn_updown_ch2.Click
Const chNum As Int16 = 2
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch3_Click(sender As Object, e As EventArgs) Handles btn_updown_ch3.Click
Const chNum As Int16 = 3
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch4_Click(sender As Object, e As EventArgs) Handles btn_updown_ch4.Click
Const chNum As Int16 = 4
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch5_Click(sender As Object, e As EventArgs) Handles btn_updown_ch5.Click
Const chNum As Int16 = 5
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch6_Click(sender As Object, e As EventArgs) Handles btn_updown_ch6.Click
Const chNum As Int16 = 6
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch7_Click(sender As Object, e As EventArgs) Handles btn_updown_ch7.Click
Const chNum As Int16 = 7
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch8_Click(sender As Object, e As EventArgs) Handles btn_updown_ch8.Click
Const chNum As Int16 = 8
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch9_Click(sender As Object, e As EventArgs) Handles btn_updown_ch9.Click
Const chNum As Int16 = 9
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch10_Click(sender As Object, e As EventArgs) Handles btn_updown_ch10.Click
Const chNum As Int16 = 10
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch11_Click(sender As Object, e As EventArgs) Handles btn_updown_ch11.Click
Const chNum As Int16 = 11
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch12_Click(sender As Object, e As EventArgs) Handles btn_updown_ch12.Click
Const chNum As Int16 = 12
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch13_Click(sender As Object, e As EventArgs) Handles btn_updown_ch13.Click
Const chNum As Int16 = 13
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch14_Click(sender As Object, e As EventArgs) Handles btn_updown_ch14.Click
Const chNum As Int16 = 14
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch15_Click(sender As Object, e As EventArgs) Handles btn_updown_ch15.Click
Const chNum As Int16 = 15
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch16_Click(sender As Object, e As EventArgs) Handles btn_updown_ch16.Click
Const chNum As Int16 = 16
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch17_Click(sender As Object, e As EventArgs) Handles btn_updown_ch17.Click
Const chNum As Int16 = 17
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch18_Click(sender As Object, e As EventArgs) Handles btn_updown_ch18.Click
Const chNum As Int16 = 18
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch19_Click(sender As Object, e As EventArgs) Handles btn_updown_ch19.Click
Const chNum As Int16 = 19
btnRunning(chNum)
End Sub
Private Sub btn_updown_ch20_Click(sender As Object, e As EventArgs) Handles btn_updown_ch20.Click
Const chNum As Int16 = 20
btnRunning(chNum)
End Sub
Private Sub btnSglStart1_Click(sender As Object, e As EventArgs) Handles btnSglStart1.Click
Const chNum As Int16 = 1
btnRunning(chNum)
End Sub
Private Sub btnSglStart2_Click(sender As Object, e As EventArgs) Handles btnSglStart2.Click
Const chNum As Int16 = 2
btnRunning(chNum)
End Sub
Private Sub btnSglStart3_Click(sender As Object, e As EventArgs) Handles btnSglStart3.Click
Const chNum As Int16 = 3
btnRunning(chNum)
End Sub
Private Sub btnSglStart4_Click(sender As Object, e As EventArgs) Handles btnSglStart4.Click
Const chNum As Int16 = 4
btnRunning(chNum)
End Sub
Private Sub btnSglStart5_Click(sender As Object, e As EventArgs) Handles btnSglStart5.Click
Const chNum As Int16 = 5
btnRunning(chNum)
End Sub
Private Sub btnSglStart6_Click(sender As Object, e As EventArgs) Handles btnSglStart6.Click
Const chNum As Int16 = 6
btnRunning(chNum)
End Sub
Private Sub btnSglStart7_Click(sender As Object, e As EventArgs) Handles btnSglStart7.Click
Const chNum As Int16 = 7
btnRunning(chNum)
End Sub
Private Sub btnSglStart8_Click(sender As Object, e As EventArgs) Handles btnSglStart8.Click
Const chNum As Int16 = 8
btnRunning(chNum)
End Sub
Private Sub btnSglStart9_Click(sender As Object, e As EventArgs) Handles btnSglStart9.Click
Const chNum As Int16 = 9
btnRunning(chNum)
End Sub
Private Sub btnSglStart10_Click(sender As Object, e As EventArgs) Handles btnSglStart10.Click
Const chNum As Int16 = 10
btnRunning(chNum)
End Sub
Private Sub processRun(chNum As Int16)
If runState(chNum) = chState.wait Or runState(chNum) = chState.start Then
If runState(chNum) = chState.wait Then
runState(chNum) = chState.start
End If
runDataReset(chNum)
playDate(chNum) = Format(Now, "yyyy") & "-" & Format(Now, "MM") & "-" & Format(Now, "dd")
playTime(chNum) = Format(Now, "HH") & ":" & Format(Now, "mm") & ":" & Format(Now, "ss")
makeCount += 1
playNumber(chNum) = makeCount
chTimebtn(chNum).Enabled = False
chResetbtn(chNum).Enabled = False
chStartbtn(chNum).Text = "정 지"
chTimeText(chNum).Text = TimeSpan.FromSeconds(startTime(chNum)).ToString("mm\:ss")
chTimeText(chNum).BackColor = Color.Yellow
runColor(chNum) = False
nowTime(chNum) = startTime(chNum)
runState(chNum) = True
runSystemOnOff(True)
runState(chNum) = chState.play
Else
Dim OkNg As Boolean = False
If nowTime(chNum) = 0 Then
runState(chNum) = chState.endStop
OkNg = True
chTimeText(chNum).BackColor = Color.Green
Else
runState(chNum) = chState.middleStop
OkNg = False
chTimeText(chNum).BackColor = Color.Red
End If
chTimebtn(chNum).Enabled = True
chResetbtn(chNum).Enabled = True
chStartbtn(chNum).Text = "시 작"
runState(chNum) = False
runSystemOnOff(False)
saveLocalFile(chNum)
Dim chPlayTime As Integer = startTime(chNum) - nowTime(chNum)
mqttSendData = "[{""jigch"":""" & chNum & """},{""testdate"":""" & playDate(chNum) & """},{""testtime"":""" & playTime(chNum) & """},{""cartnum"":""" & playNumber(chNum) & """},{""test_result"":""" & OkNg & """},{""runtime"":""" & TimeSpan.FromSeconds(chPlayTime).ToString("mm\:ss") & """}]"
Mqtt_DataSend(mqttSendData)
finishRefresh(chNum)
txbToday.Text += 1
runState(chNum) = chState.wait
End If
End Sub
Private Function state_updown(ch_num As Int16, state_num As Int16, srlPort As SerialPort) As Boolean
tmpCmdMessage = "setsolch"
cmdMessage = "[" & tmpCmdMessage & " " & ch_num & "," & state_num & "]" + vbCrLf
If SendData(cmdMessage, srlPort) Then
Return False
End If
Return True
End Function
Private Function SendData(SendMessage As String, srl_name As SerialPort) As Boolean
Try
If srl_name.IsOpen = True Then
srl_name.DiscardInBuffer()
srl_name.DiscardOutBuffer()
If srl_name.BytesToRead Then
srl_name.DiscardInBuffer()
End If
srl_name.WriteTimeout = 10
srl_name.WriteLine(SendMessage)
Return False
Else
MsgBox("통신 포트가 열리지 않았습니다.", vbCritical)
Return True
End If
Catch ex As Exception
Return True
End Try
Return True
End Function
Private Sub runSystemOnOff(onOff As Boolean) '' true : 동작 시작 시 / false : 동작 종료 시
If onOff = True Then
If btnAllReset.Enabled = True Then
For i = 1 To portCount
If runState(i) = True Then
gbTimeSet.Enabled = False
btnAllReset.Enabled = False
End If
Next
End If
Else
For i = 1 To portCount
If runState(i) = True Then
Exit Sub
End If
Next
gbTimeSet.Enabled = True
btnAllReset.Enabled = True
End If
End Sub
Private Sub playTimer_Tick(sender As Object, e As EventArgs) Handles playTimer.Tick
For i = 1 To portCount
If runState(i) = chState.play Then
nowTime(i) -= 1
chTimeText(i).Text = TimeSpan.FromSeconds(nowTime(i)).ToString("mm\:ss")
If runColor(i) = True Then
runColor(i) = False
chTimeText(i).BackColor = Color.Moccasin
Else
runColor(i) = True
chTimeText(i).BackColor = Color.Pink
End If
If nowTime(i) = 0 Then
btnRunning(i)
End If
ElseIf runState(i) = chState.middleStop Or runState(i) = chState.endStop Or runState(i) = chState.start Then
btnRunning(i)
End If
Next
End Sub
Private Sub runDataReset(chNum As Int16)
playDate(chNum) = String.Empty
playTime(chNum) = String.Empty
playNumber(chNum) = String.Empty
playOKNG(chNum) = False
runTime(chNum) = String.Empty
mqttSendData = String.Empty
End Sub
Private Sub btn_reg_ch1_Click(sender As Object, e As EventArgs) Handles btn_reg_ch1.Click
Const chNum As Int16 = 1
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch2_Click(sender As Object, e As EventArgs) Handles btn_reg_ch2.Click
Const chNum As Int16 = 2
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch3_Click(sender As Object, e As EventArgs) Handles btn_reg_ch3.Click
Const chNum As Int16 = 3
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch4_Click(sender As Object, e As EventArgs) Handles btn_reg_ch4.Click
Const chNum As Int16 = 4
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch5_Click(sender As Object, e As EventArgs) Handles btn_reg_ch5.Click
Const chNum As Int16 = 5
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch6_Click(sender As Object, e As EventArgs) Handles btn_reg_ch6.Click
Const chNum As Int16 = 6
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch7_Click(sender As Object, e As EventArgs) Handles btn_reg_ch7.Click
Const chNum As Int16 = 7
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch8_Click(sender As Object, e As EventArgs) Handles btn_reg_ch8.Click
Const chNum As Int16 = 8
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch9_Click(sender As Object, e As EventArgs) Handles btn_reg_ch9.Click
Const chNum As Int16 = 9
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch10_Click(sender As Object, e As EventArgs) Handles btn_reg_ch10.Click
Const chNum As Int16 = 10
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch11_Click(sender As Object, e As EventArgs) Handles btn_reg_ch11.Click
Const chNum As Int16 = 11
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch12_Click(sender As Object, e As EventArgs) Handles btn_reg_ch12.Click
Const chNum As Int16 = 12
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch13_Click(sender As Object, e As EventArgs) Handles btn_reg_ch13.Click
Const chNum As Int16 = 13
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch14_Click(sender As Object, e As EventArgs) Handles btn_reg_ch14.Click
Const chNum As Int16 = 14
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch15_Click(sender As Object, e As EventArgs) Handles btn_reg_ch15.Click
Const chNum As Int16 = 15
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch16_Click(sender As Object, e As EventArgs) Handles btn_reg_ch16.Click
Const chNum As Int16 = 16
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch17_Click(sender As Object, e As EventArgs) Handles btn_reg_ch17.Click
Const chNum As Int16 = 17
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch18_Click(sender As Object, e As EventArgs) Handles btn_reg_ch18.Click
Const chNum As Int16 = 18
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch19_Click(sender As Object, e As EventArgs) Handles btn_reg_ch19.Click
Const chNum As Int16 = 19
timeChangeForm(chNum)
End Sub
Private Sub btn_reg_ch20_Click(sender As Object, e As EventArgs) Handles btn_reg_ch20.Click
Const chNum As Int16 = 20
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit1_Click(sender As Object, e As EventArgs) Handles btnSglEdit1.Click
Const chNum As Int16 = 1
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit2_Click(sender As Object, e As EventArgs) Handles btnSglEdit2.Click
Const chNum As Int16 = 2
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit3_Click(sender As Object, e As EventArgs) Handles btnSglEdit3.Click
Const chNum As Int16 = 3
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit4_Click(sender As Object, e As EventArgs) Handles btnSglEdit4.Click
Const chNum As Int16 = 4
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit5_Click(sender As Object, e As EventArgs) Handles btnSglEdit5.Click
Const chNum As Int16 = 5
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit6_Click(sender As Object, e As EventArgs) Handles btnSglEdit6.Click
Const chNum As Int16 = 6
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit7_Click(sender As Object, e As EventArgs) Handles btnSglEdit7.Click
Const chNum As Int16 = 7
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit8_Click(sender As Object, e As EventArgs) Handles btnSglEdit8.Click
Const chNum As Int16 = 8
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit9_Click(sender As Object, e As EventArgs) Handles btnSglEdit9.Click
Const chNum As Int16 = 9
timeChangeForm(chNum)
End Sub
Private Sub btnSglEdit10_Click(sender As Object, e As EventArgs) Handles btnSglEdit10.Click
Const chNum As Int16 = 10
timeChangeForm(chNum)
End Sub
Private Sub timeChangeForm(chNum As Int16)
If chTimePanel(chNum).Visible = True Then
Dim secondValue As Integer = secondFunc(Val(chTimeMin(chNum).Value), Val(chTimeSec(chNum).Value))
If secondValue = -1 Then
Exit Sub
End If
Dim timeChange As String = TimeSpan.FromSeconds(secondValue).ToString("mm\:ss")
startTime(chNum) = secondValue
chTimeText(chNum).Text = timeChange
chTimeText(chNum).BackColor = Color.FromArgb(255, 192, 128)
chTimeText(chNum).Visible = True
chTimeText(chNum).Enabled = True
chTimePanel(chNum).Visible = False
chTimePanel(chNum).Enabled = False
chTimebtn(chNum).Text = "타이머 수정"
chStartbtn(chNum).Enabled = True
chResetbtn(chNum).Enabled = True
Else
chTimePanel(chNum).Visible = True
chTimePanel(chNum).Enabled = True
chTimeText(chNum).Visible = False
chTimeText(chNum).Enabled = False
chTimeMin(chNum).Value = startTime(chNum) \ 60
chTimeSec(chNum).Value = startTime(chNum) Mod 60
chTimebtn(chNum).Text = "완료"
chStartbtn(chNum).Enabled = False
chResetbtn(chNum).Enabled = False
End If
End Sub
Private Sub btn_reset_ch1_Click(sender As Object, e As EventArgs) Handles btn_reset_ch1.Click
Const chNum As Int16 = 1
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch2_Click(sender As Object, e As EventArgs) Handles btn_reset_ch2.Click
Const chNum As Int16 = 2
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch3_Click(sender As Object, e As EventArgs) Handles btn_reset_ch3.Click
Const chNum As Int16 = 3
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch4_Click(sender As Object, e As EventArgs) Handles btn_reset_ch4.Click
Const chNum As Int16 = 4
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch5_Click(sender As Object, e As EventArgs) Handles btn_reset_ch5.Click
Const chNum As Int16 = 5
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch6_Click(sender As Object, e As EventArgs) Handles btn_reset_ch6.Click
Const chNum As Int16 = 6
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch7_Click(sender As Object, e As EventArgs) Handles btn_reset_ch7.Click
Const chNum As Int16 = 7
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch8_Click(sender As Object, e As EventArgs) Handles btn_reset_ch8.Click
Const chNum As Int16 = 8
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch9_Click(sender As Object, e As EventArgs) Handles btn_reset_ch9.Click
Const chNum As Int16 = 9
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch10_Click(sender As Object, e As EventArgs) Handles btn_reset_ch10.Click
Const chNum As Int16 = 10
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch11_Click(sender As Object, e As EventArgs) Handles btn_reset_ch11.Click
Const chNum As Int16 = 11
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch12_Click(sender As Object, e As EventArgs) Handles btn_reset_ch12.Click
Const chNum As Int16 = 12
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch13_Click(sender As Object, e As EventArgs) Handles btn_reset_ch13.Click
Const chNum As Int16 = 13
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch14_Click(sender As Object, e As EventArgs) Handles btn_reset_ch14.Click
Const chNum As Int16 = 14
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch15_Click(sender As Object, e As EventArgs) Handles btn_reset_ch15.Click
Const chNum As Int16 = 15
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch16_Click(sender As Object, e As EventArgs) Handles btn_reset_ch16.Click
Const chNum As Int16 = 16
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch17_Click(sender As Object, e As EventArgs) Handles btn_reset_ch17.Click
Const chNum As Int16 = 17
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch18_Click(sender As Object, e As EventArgs) Handles btn_reset_ch18.Click
Const chNum As Int16 = 18
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch19_Click(sender As Object, e As EventArgs) Handles btn_reset_ch19.Click
Const chNum As Int16 = 19
timeResetFunc(chNum)
End Sub
Private Sub btn_reset_ch20_Click(sender As Object, e As EventArgs) Handles btn_reset_ch20.Click
Const chNum As Int16 = 20
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset1_Click(sender As Object, e As EventArgs) Handles btnSglReset1.Click
Const chNum As Int16 = 1
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset2_Click(sender As Object, e As EventArgs) Handles btnSglReset2.Click
Const chNum As Int16 = 2
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset3_Click(sender As Object, e As EventArgs) Handles btnSglReset3.Click
Const chNum As Int16 = 3
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset4_Click(sender As Object, e As EventArgs) Handles btnSglReset4.Click
Const chNum As Int16 = 4
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset5_Click(sender As Object, e As EventArgs) Handles btnSglReset5.Click
Const chNum As Int16 = 5
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset6_Click(sender As Object, e As EventArgs) Handles btnSglReset6.Click
Const chNum As Int16 = 6
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset7_Click(sender As Object, e As EventArgs) Handles btnSglReset7.Click
Const chNum As Int16 = 7
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset8_Click(sender As Object, e As EventArgs) Handles btnSglReset8.Click
Const chNum As Int16 = 8
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset9_Click(sender As Object, e As EventArgs) Handles btnSglReset9.Click
Const chNum As Int16 = 9
timeResetFunc(chNum)
End Sub
Private Sub btnSglReset10_Click(sender As Object, e As EventArgs) Handles btnSglReset10.Click
Const chNum As Int16 = 10
timeResetFunc(chNum)
End Sub
Private Sub timeResetFunc(chNum As Int16)
chTimeText(chNum).Text = TimeSpan.FromSeconds(startTime(chNum)).ToString("mm\:ss")
chTimeText(chNum).BackColor = Color.FromArgb(255, 192, 128)
End Sub
Private Sub btnManager_Click(sender As Object, e As EventArgs) Handles btnManager.Click
If ManagerLogin.ShowDialog = DialogResult.OK Then
ManagerForm.Show()
End If
End Sub
Private Sub btnAllReset_Click(sender As Object, e As EventArgs) Handles btnAllReset.Click
For i = 1 To portCount
chTimeText(i).Text = TimeSpan.FromSeconds(startTime(i)).ToString("mm\:ss")
chTimeText(i).BackColor = Color.FromArgb(255, 192, 128)
Next
End Sub
Private Sub btnComport_Click(sender As Object, e As EventArgs) Handles btnComport.Click
If btnComport.Text = "스캔" Then
serialSetting()
For i = 0 To chSerial.Length - 1
If LoadComportName(i) Then
btnComport.Text = "연결"
systemOnOff(False)
Else
Exit Sub
End If
Next
Else
For i = 0 To chSerial.Length - 1
If chSerial(i).IsOpen = True Then
chSerial(i).Close()
End If
If chSerialCbb(i).SelectedIndex = -1 Then
MsgBox("선택하지 않은 포트가 존재합니다. 확인하여 주십시오.", vbExclamation)
Exit Sub
Else
If chSerialCbb(serialList.serial1).SelectedItem = chSerialCbb(serialList.serial2).SelectedItem Then
MsgBox("같은 COM포트를 사용할 수 없습니다. 다시 설정하여 주십시오.", vbExclamation)
Exit Sub
End If
End If
Next
For i = 0 To chSerial.Length - 1
If OpenSerial(i) Then
systemOnOff(True)
saveConfig()
Else
systemOnOff(False)
Exit For
End If
Next
rdbTime.Checked = True
rdbPort.Checked = False
btnComport.Text = "스캔"
End If
End Sub
Private Sub serialSetting()
If rdbport10.Checked = True Then
ReDim chSerial(serialList.serial1)
chSerial(serialList.serial1) = Serial_1Port
Else
ReDim chSerial(serialList.serial2)
chSerial(serialList.serial1) = Serial_1Port
chSerial(serialList.serial2) = Serial_2Port
End If
End Sub
Private Function OpenSerial(serialNum As Int16) As Boolean
Try
Dim baudRateSet As Integer
If rdbport10.Checked = True Then
baudRateSet = 230400
Else
baudRateSet = 115200
End If
If chSerialCbb(serialNum).SelectedItem <> "" Then
If chSerial(serialNum).IsOpen = False Then
With chSerial(serialNum)
.PortName = chSerialCbb(serialNum).SelectedItem
.BaudRate = baudRateSet
.DataBits = 8
.Parity = Parity.None
.StopBits = StopBits.One
.Handshake = Handshake.None
.ReadTimeout = 50
.WriteTimeout = 1
End With
chSerial(serialNum).Open()
If serialNum = serialList.serial1 Then
ch1_ThreadRun()
Else
ch2_ThreadRun()
End If
Else
MsgBox("사용중인 포트가 존재합니다. 종료 후 다시 설정하여 주십시오.", vbCritical)
Return False
End If
Else
MsgBox("지정하지 않은 시리얼 포트가 존재합니다! 시리얼 포트를 지정하여 주십시오.", vbCritical)
Return False
End If
Return True
Catch ex As Exception
MsgBox("COM 포트 에러" & vbCrLf & "", vbOK + vbCritical, "DUALSONIC Cartridge Film Pressing")
Return False
End Try
Return False
End Function
Private Function LoadComportName(portNum As Int16) As Boolean
Dim portname() As String
Try
portname = SerialPort.GetPortNames
chSerialCbb(portNum).Items.Clear()
For cnt = 0 To portname.Length - 1
chSerialCbb(portNum).Items.Add(portname(cnt))
Next
chSerialCbb(portNum).Text = "PRESS!"
Return True
Catch ex As Exception
MsgBox("COM 포트 에러" & vbCrLf & "", vbOK + vbCritical, "DUALSONIC Cartridge Film Pressing")
Return False
End Try
End Function
Private Sub saveConfig()
On Error GoTo failConfig
Dim rdbCheck As Boolean = False
Dim filePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\Config"
If Dir(filePath, vbDirectory) = "" Then
MkDir(filePath)
End If
Dim fileName As String = filePath & "\Config.ini"
If rdbport10.Checked = True Then
rdbCheck = False
Else
rdbCheck = True
End If
Dim saveStr As String = nudMinute.Value & "^" & nudSecond.Value & "^" & rdbCheck & "^" & cbbPort1.SelectedItem & "^" & cbbPort2.SelectedItem
If File.Exists(fileName) Then
File.Delete(fileName)
End If
File.WriteAllText(fileName, saveStr, Encoding.UTF8)
Exit Sub
failConfig:
MsgBox("Config Save Fail!!")
End Sub
Private Sub loadConfig()
Const checkCount As Int16 = 4
On Error GoTo failConfig
Dim filePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\Config"
Dim minData, secData, secondValue As Integer
If Dir(filePath, vbDirectory) = "" Then
MkDir(filePath)
End If
Dim fileName As String = filePath & "\Config.ini"
If File.Exists(fileName) = True Then
Dim readData As String = File.ReadAllText(fileName, Encoding.UTF8)
If readData <> Nothing Then
Dim useData As Int16 = UBound(Split(readData, "^"))
If useData = checkCount Then
For i = 0 To useData
Dim dataStr As String
If i = useData Then
dataStr = readData
Else
dataStr = Mid(readData, 1, InStr(readData, "^") - 1)
readData = Mid(readData, InStr(readData, "^") + 1, readData.Length)
End If
Select Case i
Case saveList.min
If IsNumeric(dataStr) = True Then
minData = dataStr
Else
minData = 0
End If
nudMinute.Value = minData
Case saveList.sec
If IsNumeric(dataStr) = True Then
secData = dataStr
Else
secData = 0
End If
nudSecond.Value = secData
Case saveList.chCount
If dataStr = True Then
rdbport10.Checked = False
rdbport20.Checked = True
Else
rdbport10.Checked = True
rdbport20.Checked = False
End If
Case saveList.com1
If LoadComportName(serialList.serial1) = False Then
Exit Sub
End If
For cnt = 0 To chSerialCbb(serialList.serial1).Items.Count - 1
If dataStr = chSerialCbb(serialList.serial1).Items(cnt) Then
chSerialCbb(serialList.serial1).SelectedIndex = cnt
If OpenSerial(serialList.serial1) = False Then
Exit Sub
Else
Exit For
End If
End If
Next
Case saveList.com2
If LoadComportName(serialList.serial2) = False Then
Exit Sub
End If
For cnt = 0 To chSerialCbb(serialList.serial2).Items.Count - 1
If dataStr = chSerialCbb(serialList.serial2).Items(cnt) Then
chSerialCbb(serialList.serial2).SelectedIndex = cnt
If OpenSerial(serialList.serial2) = False Then
Exit Sub
Else
Exit For
End If
End If
Next
End Select
Next
Else
nudMinute.Value = 15
nudSecond.Value = 0
rdbport10.Checked = False
rdbport20.Checked = True
End If
Else
nudMinute.Value = 15
nudSecond.Value = 0
rdbport10.Checked = False
rdbport20.Checked = True
End If
Else
nudMinute.Value = 15
nudSecond.Value = 0
rdbport10.Checked = False
rdbport20.Checked = True
End If
If chSerial.Length = serialList.serial1 + 1 Then
If chSerial(serialList.serial1).IsOpen = True Then
systemOnOff(True)
rdbTime.Checked = True
rdbPort.Checked = False
Else
systemOnOff(False)
rdbTime.Checked = False
rdbPort.Checked = True
End If
Else
If chSerial(serialList.serial1).IsOpen = True And chSerial(serialList.serial2).IsOpen = True Then
systemOnOff(True)
rdbTime.Checked = True
rdbPort.Checked = False
Else
systemOnOff(False)
rdbTime.Checked = False
rdbPort.Checked = True
End If
End If
Exit Sub
failConfig:
MsgBox("Config Load Fail!!")
nudMinute.Value = 15
nudSecond.Value = 0
rdbport10.Checked = False
rdbport20.Checked = True
End Sub
Public Function mqttConnect() As Boolean
Try
If mqttBroker = String.Empty Or mqttTopic = String.Empty Then
MsgBox("MQTT 브로커 혹은 토픽을 알 수 없습니다." & vbCrLf & "설정하여 주십시오.", vbExclamation)
Return False
End If
MQTClient = New MqttClient(mqttBroker)
Dim ClientID As String = Guid.NewGuid.ToString
MQTClient.Connect(ClientID)
If MQTClient.IsConnected = True Then
Return True
Else
MsgBox("존재하지 않는 Broker 명입니다. 확인해 주십시오.", vbCritical)
Return False
End If
Catch ex As Exception
MsgBox("오류 발생 :: " & ex.Message.ToString, vbCritical)
Return False
End Try
End Function
Public Function mqttNowConnect() As Boolean
Try
Return MQTClient.IsConnected.ToString
Catch null As NullReferenceException
Return False
Catch ex As Exception
Return False
End Try
End Function
Private Sub systemOnOff(onoff As Boolean) ''on : true / off : false
If onoff = True Then
For i = 1 To portCount
chGroup(i).Enabled = True
Next
Else
For i = 1 To portCount
chGroup(i).Enabled = False
Next
End If
End Sub
Private Sub Main_Form_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
exitProcess()
End Sub
Private Sub btn_exit_Click(sender As Object, e As EventArgs) Handles btn_exit.Click
exitProcess()
End
End Sub
Private Sub exitProcess()
If chSerial(serialList.serial1).IsOpen = True Then
If runCH1_Thread.IsAlive = True Then
runCH1_Thread.Abort()
End If
chSerial(serialList.serial1).Close()
End If
If chSerial(serialList.serial2).IsOpen = True Then
If runCH2_Thread.IsAlive = True Then
runCH2_Thread.Abort()
End If
chSerial(serialList.serial2).Close()
End If
End Sub
Private Sub txbState_gotFocus(sender As Object, e As EventArgs) Handles txbState.GotFocus
txbToday.Focus()
End Sub
Private Sub btnAllRun_Click(sender As Object, e As EventArgs) Handles btnAllRun.Click
If btnAllRun.Text = "전체" & vbCrLf & "내리기" Then
If playTimer.Enabled = False Then
playTimer.Enabled = True
End If
For i = 1 To portCount
If runState(i) = chState.wait Then
runState(i) = chState.start
End If
Next
btnAllRun.Text = "전체" & vbCrLf & "올리기"
Else
For i = 1 To portCount
If runState(i) <> chState.wait Then
runState(i) = chState.middleStop
End If
Next
btnAllRun.Text = "전체" & vbCrLf & "내리기"
End If
End Sub
Private Sub saveLocalFile(chNum As Int16)
Try
Dim strData As String = String.Empty
Dim saveYear As String = Format(playDate(chNum), "yyyy")
Dim saveMonth As String = Format(playDate(chNum), "MM")
Dim saveDay As String = Format(playDate(chNum), "dd")
If Dir(filePath, vbDirectory) = "" Then
MkDir(filePath)
End If
Dim fileName As String = filePath & "\" & saveYear & "_" & saveMonth & ".csv"
Dim saveData As String = playDate(chNum) & "," & playNumber(chNum)
If File.Exists(fileName) = True Then
strData = File.ReadAllText(fileName, Encoding.UTF8)
If strData = "" Or strData = vbCrLf Or strData = Nothing Then
strData = csvSaveForm & vbCrLf & saveData & vbCrLf
Else
If UBound(Split(strData, playDate(chNum))) > 0 Then
strData = Mid(strData, 1, InStr(strData, playDate(chNum)) - 1)
strData = strData & saveData & vbCrLf
Else
strData = strData & saveData & vbCrLf
End If
End If
Else
strData = csvSaveForm & vbCrLf & saveData & vbCrLf
End If
File.WriteAllText(fileName, strData, Encoding.UTF8)
Catch ex As Exception
MsgBox("오류 발생 :: " & ex.Message, vbCritical)
End Try
End Sub
Private Function loadLocalFile() As Boolean
Try
Dim strData As String = String.Empty
Dim saveYear As String = Format(Now, "yyyy")
Dim saveMonth As String = Format(Now, "MM")
Dim saveDay As String = Format(Now, "dd")
Dim saveDate As String = saveYear & "-" & saveMonth & "-" & saveDay
If Dir(filePath, vbDirectory) = "" Then
MkDir(filePath)
End If
Dim fileName As String = filePath & "\" & saveYear & "_" & saveMonth & ".csv"
If File.Exists(fileName) Then
strData = File.ReadAllText(fileName)
If UBound(Split(strData, saveDate)) > 0 Then
makeCount = Val(Mid(strData, InStr(strData, saveDate), InStr(strData, vbCrLf) - 1))
Else
makeCount = 0
End If
Else
makeCount = 0
End If
Return True
Catch ex As Exception
MsgBox("오류 발생 :: " & ex.Message, vbCritical)
Return False
End Try
End Function
Private Sub Mqtt_DataSend(loadText As String)
Try
If loadText.Replace(" ", "") = "" Then
MsgBox("저장할 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbCritical)
Exit Sub
End If
If MQTClient IsNot Nothing AndAlso MQTClient.IsConnected Then
If mqttTopic.Length <> 0 Then
Try
Dim qos As Byte = 0
MQTClient.Publish(mqttTopic, System.Text.Encoding.Default.GetBytes(loadText), qos, False)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
Else
MsgBox("토픽을 지정하지 않았습니다. 토픽을 지정하여 주십시오.", vbExclamation)
End If
Else
MsgBox("Broker 호스트와 연결되지 않았습니다. 호스트와 연결하여 주십시오.", vbExclamation)
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub finishRefresh(chNum As Int16)
chTimeText(chNum).Refresh()
chTimePanel(chNum).Refresh()
chTimeMin(chNum).Refresh()
chTimeSec(chNum).Refresh()
chTimebtn(chNum).Refresh()
chStartbtn(chNum).Refresh()
chResetbtn(chNum).Refresh()
End Sub
Private Sub componentSetting(arrayLength As Int16)
ReDim startTime(arrayLength)
ReDim nowTime(arrayLength)
ReDim runState(arrayLength)
ReDim runColor(arrayLength)
ReDim playDate(arrayLength)
ReDim playTime(arrayLength)
ReDim playNumber(arrayLength)
ReDim playOKNG(arrayLength)
ReDim runTime(arrayLength)
ReDim chTimeText(arrayLength)
ReDim chTimePanel(arrayLength)
ReDim chTimeMin(arrayLength)
ReDim chTimeSec(arrayLength)
ReDim chTimebtn(arrayLength)
ReDim chStartbtn(arrayLength)
ReDim chResetbtn(arrayLength)
ReDim chGroup(arrayLength)
End Sub
Private Sub DataSetting()
If rdbport10.Checked = True Then
portCount = ch10FullCount
componentSetting(portCount)
chTimeText(1) = txbSglCH1
chTimeText(2) = txbSglCH2
chTimeText(3) = txbSglCH3
chTimeText(4) = txbSglCH4
chTimeText(5) = txbSglCH5
chTimeText(6) = txbSglCH6
chTimeText(7) = txbSglCH7
chTimeText(8) = txbSglCH8
chTimeText(9) = txbSglCH9
chTimeText(10) = txbSglCH10
chTimePanel(1) = pnSglEdit1
chTimePanel(2) = pnSglEdit2
chTimePanel(3) = pnSglEdit3
chTimePanel(4) = pnSglEdit4
chTimePanel(5) = pnSglEdit5
chTimePanel(6) = pnSglEdit6
chTimePanel(7) = pnSglEdit7
chTimePanel(8) = pnSglEdit8
chTimePanel(9) = pnSglEdit9
chTimePanel(10) = pnSglEdit10
chTimeMin(1) = nudSglMin1
chTimeMin(2) = nudSglMin2
chTimeMin(3) = nudSglMin3
chTimeMin(4) = nudSglMin4
chTimeMin(5) = nudSglMin5
chTimeMin(6) = nudSglMin6
chTimeMin(7) = nudSglMin7
chTimeMin(8) = nudSglMin8
chTimeMin(9) = nudSglMin9
chTimeMin(10) = nudSglMin10
chTimeSec(1) = nudSglSec1
chTimeSec(2) = nudSglSec2
chTimeSec(3) = nudSglSec3
chTimeSec(4) = nudSglSec4
chTimeSec(5) = nudSglSec5
chTimeSec(6) = nudSglSec6
chTimeSec(7) = nudSglSec7
chTimeSec(8) = nudSglSec8
chTimeSec(9) = nudSglSec9
chTimeSec(10) = nudSglSec10
chTimebtn(1) = btnSglEdit1
chTimebtn(2) = btnSglEdit2
chTimebtn(3) = btnSglEdit3
chTimebtn(4) = btnSglEdit4
chTimebtn(5) = btnSglEdit5
chTimebtn(6) = btnSglEdit6
chTimebtn(7) = btnSglEdit7
chTimebtn(8) = btnSglEdit8
chTimebtn(9) = btnSglEdit9
chTimebtn(10) = btnSglEdit10
chStartbtn(1) = btnSglStart1
chStartbtn(2) = btnSglStart2
chStartbtn(3) = btnSglStart3
chStartbtn(4) = btnSglStart4
chStartbtn(5) = btnSglStart5
chStartbtn(6) = btnSglStart6
chStartbtn(7) = btnSglStart7
chStartbtn(8) = btnSglStart8
chStartbtn(9) = btnSglStart9
chStartbtn(10) = btnSglStart10
chResetbtn(1) = btnSglReset1
chResetbtn(2) = btnSglReset2
chResetbtn(3) = btnSglReset3
chResetbtn(4) = btnSglReset4
chResetbtn(5) = btnSglReset5
chResetbtn(6) = btnSglReset6
chResetbtn(7) = btnSglReset7
chResetbtn(8) = btnSglReset8
chResetbtn(9) = btnSglReset9
chResetbtn(10) = btnSglReset10
chGroup(1) = gbSglCH1
chGroup(2) = gbSglCH2
chGroup(3) = gbSglCH3
chGroup(4) = gbSglCH4
chGroup(5) = gbSglCH5
chGroup(6) = gbSglCH6
chGroup(7) = gbSglCH7
chGroup(8) = gbSglCH8
chGroup(9) = gbSglCH9
chGroup(10) = gbSglCH10
Else
portCount = ch20FullCount
componentSetting(portCount)
chTimeText(1) = txb_timer_ch1
chTimeText(2) = txb_timer_ch2
chTimeText(3) = txb_timer_ch3
chTimeText(4) = txb_timer_ch4
chTimeText(5) = txb_timer_ch5
chTimeText(6) = txb_timer_ch6
chTimeText(7) = txb_timer_ch7
chTimeText(8) = txb_timer_ch8
chTimeText(9) = txb_timer_ch9
chTimeText(10) = txb_timer_ch10
chTimeText(11) = txb_timer_ch11
chTimeText(12) = txb_timer_ch12
chTimeText(13) = txb_timer_ch13
chTimeText(14) = txb_timer_ch14
chTimeText(15) = txb_timer_ch15
chTimeText(16) = txb_timer_ch16
chTimeText(17) = txb_timer_ch17
chTimeText(18) = txb_timer_ch18
chTimeText(19) = txb_timer_ch19
chTimeText(20) = txb_timer_ch20
chTimePanel(1) = pnReg1
chTimePanel(2) = pnReg2
chTimePanel(3) = pnReg3
chTimePanel(4) = pnReg4
chTimePanel(5) = pnReg5
chTimePanel(6) = pnReg6
chTimePanel(7) = pnReg7
chTimePanel(8) = pnReg8
chTimePanel(9) = pnReg9
chTimePanel(10) = pnReg10
chTimePanel(11) = pnReg11
chTimePanel(12) = pnReg12
chTimePanel(13) = pnReg13
chTimePanel(14) = pnReg14
chTimePanel(15) = pnReg15
chTimePanel(16) = pnReg16
chTimePanel(17) = pnReg17
chTimePanel(18) = pnReg18
chTimePanel(19) = pnReg19
chTimePanel(20) = pnReg20
chTimeMin(1) = nudMin1
chTimeMin(2) = nudMin2
chTimeMin(3) = nudMin3
chTimeMin(4) = nudMin4
chTimeMin(5) = nudMin5
chTimeMin(6) = nudMin6
chTimeMin(7) = nudMin7
chTimeMin(8) = nudMin8
chTimeMin(9) = nudMin9
chTimeMin(10) = nudMin10
chTimeMin(11) = nudMin11
chTimeMin(12) = nudMin12
chTimeMin(13) = nudMin13
chTimeMin(14) = nudMin14
chTimeMin(15) = nudMin15
chTimeMin(16) = nudMin16
chTimeMin(17) = nudMin17
chTimeMin(18) = nudMin18
chTimeMin(19) = nudMin19
chTimeMin(20) = nudMin20
chTimeSec(1) = nudSec1
chTimeSec(2) = nudSec2
chTimeSec(3) = nudSec3
chTimeSec(4) = nudSec4
chTimeSec(5) = nudSec5
chTimeSec(6) = nudSec6
chTimeSec(7) = nudSec7
chTimeSec(8) = nudSec8
chTimeSec(9) = nudSec9
chTimeSec(10) = nudSec10
chTimeSec(11) = nudSec11
chTimeSec(12) = nudSec12
chTimeSec(13) = nudSec13
chTimeSec(14) = nudSec14
chTimeSec(15) = nudSec15
chTimeSec(16) = nudSec16
chTimeSec(17) = nudSec17
chTimeSec(18) = nudSec18
chTimeSec(19) = nudSec19
chTimeSec(20) = nudSec20
chTimebtn(1) = btn_reg_ch1
chTimebtn(2) = btn_reg_ch2
chTimebtn(3) = btn_reg_ch3
chTimebtn(4) = btn_reg_ch4
chTimebtn(5) = btn_reg_ch5
chTimebtn(6) = btn_reg_ch6
chTimebtn(7) = btn_reg_ch7
chTimebtn(8) = btn_reg_ch8
chTimebtn(9) = btn_reg_ch9
chTimebtn(10) = btn_reg_ch10
chTimebtn(11) = btn_reg_ch11
chTimebtn(12) = btn_reg_ch12
chTimebtn(13) = btn_reg_ch13
chTimebtn(14) = btn_reg_ch14
chTimebtn(15) = btn_reg_ch15
chTimebtn(16) = btn_reg_ch16
chTimebtn(17) = btn_reg_ch17
chTimebtn(18) = btn_reg_ch18
chTimebtn(19) = btn_reg_ch19
chTimebtn(20) = btn_reg_ch20
chStartbtn(1) = btn_updown_ch1
chStartbtn(2) = btn_updown_ch2
chStartbtn(3) = btn_updown_ch3
chStartbtn(4) = btn_updown_ch4
chStartbtn(5) = btn_updown_ch5
chStartbtn(6) = btn_updown_ch6
chStartbtn(7) = btn_updown_ch7
chStartbtn(8) = btn_updown_ch8
chStartbtn(9) = btn_updown_ch9
chStartbtn(10) = btn_updown_ch10
chStartbtn(11) = btn_updown_ch11
chStartbtn(12) = btn_updown_ch12
chStartbtn(13) = btn_updown_ch13
chStartbtn(14) = btn_updown_ch14
chStartbtn(15) = btn_updown_ch15
chStartbtn(16) = btn_updown_ch16
chStartbtn(17) = btn_updown_ch17
chStartbtn(18) = btn_updown_ch18
chStartbtn(19) = btn_updown_ch19
chStartbtn(20) = btn_updown_ch20
chResetbtn(1) = btn_reset_ch1
chResetbtn(2) = btn_reset_ch2
chResetbtn(3) = btn_reset_ch3
chResetbtn(4) = btn_reset_ch4
chResetbtn(5) = btn_reset_ch5
chResetbtn(6) = btn_reset_ch6
chResetbtn(7) = btn_reset_ch7
chResetbtn(8) = btn_reset_ch8
chResetbtn(9) = btn_reset_ch9
chResetbtn(10) = btn_reset_ch10
chResetbtn(11) = btn_reset_ch11
chResetbtn(12) = btn_reset_ch12
chResetbtn(13) = btn_reset_ch13
chResetbtn(14) = btn_reset_ch14
chResetbtn(15) = btn_reset_ch15
chResetbtn(16) = btn_reset_ch16
chResetbtn(17) = btn_reset_ch17
chResetbtn(18) = btn_reset_ch18
chResetbtn(19) = btn_reset_ch19
chResetbtn(20) = btn_reset_ch20
chGroup(1) = gb_ch1
chGroup(2) = gb_ch2
chGroup(3) = gb_ch3
chGroup(4) = gb_ch4
chGroup(5) = gb_ch5
chGroup(6) = gb_ch6
chGroup(7) = gb_ch7
chGroup(8) = gb_ch8
chGroup(9) = gb_ch9
chGroup(10) = gb_ch10
chGroup(11) = gb_ch11
chGroup(12) = gb_ch12
chGroup(13) = gb_ch13
chGroup(14) = gb_ch14
chGroup(15) = gb_ch15
chGroup(16) = gb_ch16
chGroup(17) = gb_ch17
chGroup(18) = gb_ch18
chGroup(19) = gb_ch19
chGroup(20) = gb_ch20
End If
commandSelect(commandList.nowState) = "solState"
commandSelect(commandList.upState) = "getupsol"
commandSelect(commandList.downState) = "getdnsol"
commandSelect(commandList.emoState) = "getemo"
chSerialCbb(serialList.serial1) = cbbPort1
chSerialCbb(serialList.serial2) = cbbPort2
For i = 1 To portCount
runState(i) = False
Next
End Sub
End Class