qa-AgingTester/AgingForm (2).vb

1242 lines
46 KiB
VB.net
Raw Normal View History

Imports System
Imports System.IO.Ports
Imports System.Threading
Imports System.IO.Ports.SerialPort
Imports System.IO
Imports System.Text
Public Class AgingForm
Const CNT_CH As Integer = 10
Public RunTime(0 To CNT_CH) As Long
Public EnableRunConnect(0 To CNT_CH) As Boolean
Public ConnTimeoutCnt(0 To CNT_CH) As Long
Public DevConnectFlag(0 To CNT_CH) As Boolean
Public DevPowerONFlag(0 To CNT_CH) As Boolean
Public EnableRunTime(0 To CNT_CH) As Boolean
Public RunPowerOnFlag(0 To CNT_CH) As Boolean
Public PowerOnDelayTime(0 To CNT_CH) As Long
Public PowerOnTimeoutCnt(0 To CNT_CH) As Long
Public preVal(0 To CNT_CH) As Long
Public preCnt(0 To CNT_CH) As Long
Public FileSavePath(0 To CNT_CH) As String
Public PowerOnTime As Integer = 1 ''2
Public PowerOnTimeout As Integer = 20 ''20
Public ConnTimeout As Long = 150 ''1
Public cmdMessage As String
Public rxMessage As String
Public cmpMessage As String = "SUCCESS"
Public tmpCmdMessage As String
Public gpbInfo(CNT_CH + 1) As GroupBox
Public btnRun(CNT_CH + 1) As Button
Public txtBox(CNT_CH + 1) As TextBox
Public txbMainSN(CNT_CH + 1) As TextBox
Public txbCartSN(CNT_CH + 1) As TextBox
Public txbStartTime(CNT_CH + 1) As TextBox
Public txbEndTime(CNT_CH + 1) As TextBox
Public txbShotCnt(CNT_CH + 1) As TextBox
Public txtMainStartTemp(CNT_CH + 1) As TextBox
Public txtCartStartTemp(CNT_CH + 1) As TextBox
Public txtMainEndTemp(CNT_CH + 1) As TextBox
Public txtCartEndTemp(CNT_CH + 1) As TextBox
Public txbCmdWindow(CNT_CH + 1) As TextBox
Public txbInfoBox(CNT_CH + 1) As TextBox
Public lblEndRuntime(CNT_CH + 1) As Label
Public chbAutoPowerOn(CNT_CH + 1) As CheckBox
Public AutoPowerOnFlag(CNT_CH + 1) As Boolean
Private Sub AgingForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim portname() As String
Dim i As Integer
lblTime.Text = Now
portname = SerialPort.GetPortNames
For i = 1 To portname.Length
cboComPort.Items.Add(portname(i - 1))
Next i
cboComPort.Text = "PRESS!"
gpbInfo(1) = gpbInfo1
gpbInfo(2) = gpbInfo2
gpbInfo(3) = gpbInfo3
gpbInfo(4) = gpbInfo4
gpbInfo(5) = gpbInfo5
gpbInfo(6) = gpbInfo6
gpbInfo(7) = gpbInfo7
gpbInfo(8) = gpbInfo8
gpbInfo(9) = gpbInfo9
gpbInfo(10) = gpbInfo10
btnRun(1) = btnRun1
btnRun(2) = btnRun2
btnRun(3) = btnRun3
btnRun(4) = btnRun4
btnRun(5) = btnRun5
btnRun(6) = btnRun6
btnRun(7) = btnRun7
btnRun(8) = btnRun8
btnRun(9) = btnRun9
btnRun(10) = btnRun10
txbMainSN(1) = txbMainSN1
txbMainSN(2) = txbMainSN2
txbMainSN(3) = txbMainSN3
txbMainSN(4) = txbMainSN4
txbMainSN(5) = txbMainSN5
txbMainSN(6) = txbMainSN6
txbMainSN(7) = txbMainSN7
txbMainSN(8) = txbMainSN8
txbMainSN(9) = txbMainSN9
txbMainSN(10) = txbMainSN10
txbCartSN(1) = txbCartSN1
txbCartSN(2) = txbCartSN2
txbCartSN(3) = txbCartSN3
txbCartSN(4) = txbCartSN4
txbCartSN(5) = txbCartSN5
txbCartSN(6) = txbCartSN6
txbCartSN(7) = txbCartSN7
txbCartSN(8) = txbCartSN8
txbCartSN(9) = txbCartSN9
txbCartSN(10) = txbCartSN10
txbStartTime(1) = txbStartTime1
txbStartTime(2) = txbStartTime2
txbStartTime(3) = txbStartTime3
txbStartTime(4) = txbStartTime4
txbStartTime(5) = txbStartTime5
txbStartTime(6) = txbStartTime6
txbStartTime(7) = txbStartTime7
txbStartTime(8) = txbStartTime8
txbStartTime(9) = txbStartTime9
txbStartTime(10) = txbStartTime10
txbEndTime(1) = txbEndTime1
txbEndTime(2) = txbEndTime2
txbEndTime(3) = txbEndTime3
txbEndTime(4) = txbEndTime4
txbEndTime(5) = txbEndTime5
txbEndTime(6) = txbEndTime6
txbEndTime(7) = txbEndTime7
txbEndTime(8) = txbEndTime8
txbEndTime(9) = txbEndTime9
txbEndTime(10) = txbEndTime10
txbShotCnt(1) = txbShotCnt1
txbShotCnt(2) = txbShotCnt2
txbShotCnt(3) = txbShotCnt3
txbShotCnt(4) = txbShotCnt4
txbShotCnt(5) = txbShotCnt5
txbShotCnt(6) = txbShotCnt6
txbShotCnt(7) = txbShotCnt7
txbShotCnt(8) = txbShotCnt8
txbShotCnt(9) = txbShotCnt9
txbShotCnt(10) = txbShotCnt10
txtMainStartTemp(1) = txtMainStartTemp1
txtMainStartTemp(2) = txtMainStartTemp2
txtMainStartTemp(3) = txtMainStartTemp3
txtMainStartTemp(4) = txtMainStartTemp4
txtMainStartTemp(5) = txtMainStartTemp5
txtMainStartTemp(6) = txtMainStartTemp6
txtMainStartTemp(7) = txtMainStartTemp7
txtMainStartTemp(8) = txtMainStartTemp8
txtMainStartTemp(9) = txtMainStartTemp9
txtMainStartTemp(10) = txtMainStartTemp10
txtCartStartTemp(1) = txtCartStartTemp1
txtCartStartTemp(2) = txtCartStartTemp2
txtCartStartTemp(3) = txtCartStartTemp3
txtCartStartTemp(4) = txtCartStartTemp4
txtCartStartTemp(5) = txtCartStartTemp5
txtCartStartTemp(6) = txtCartStartTemp6
txtCartStartTemp(7) = txtCartStartTemp7
txtCartStartTemp(8) = txtCartStartTemp8
txtCartStartTemp(9) = txtCartStartTemp9
txtCartStartTemp(10) = txtCartStartTemp10
txtMainEndTemp(1) = txtMainEndTemp1
txtMainEndTemp(2) = txtMainEndTemp2
txtMainEndTemp(3) = txtMainEndTemp3
txtMainEndTemp(4) = txtMainEndTemp4
txtMainEndTemp(5) = txtMainEndTemp5
txtMainEndTemp(6) = txtMainEndTemp6
txtMainEndTemp(7) = txtMainEndTemp7
txtMainEndTemp(8) = txtMainEndTemp8
txtMainEndTemp(9) = txtMainEndTemp9
txtMainEndTemp(10) = txtMainEndTemp10
txtCartEndTemp(1) = txtCartEndTemp1
txtCartEndTemp(2) = txtCartEndTemp2
txtCartEndTemp(3) = txtCartEndTemp3
txtCartEndTemp(4) = txtCartEndTemp4
txtCartEndTemp(5) = txtCartEndTemp5
txtCartEndTemp(6) = txtCartEndTemp6
txtCartEndTemp(7) = txtCartEndTemp7
txtCartEndTemp(8) = txtCartEndTemp8
txtCartEndTemp(9) = txtCartEndTemp9
txtCartEndTemp(10) = txtCartEndTemp10
txbCmdWindow(1) = txbCmdWindow1
txbCmdWindow(2) = txbCmdWindow2
txbCmdWindow(3) = txbCmdWindow3
txbCmdWindow(4) = txbCmdWindow4
txbCmdWindow(5) = txbCmdWindow5
txbCmdWindow(6) = txbCmdWindow6
txbCmdWindow(7) = txbCmdWindow7
txbCmdWindow(8) = txbCmdWindow8
txbCmdWindow(9) = txbCmdWindow9
txbCmdWindow(10) = txbCmdWindow10
txbInfoBox(1) = txbInfoBox1
txbInfoBox(2) = txbInfoBox2
txbInfoBox(3) = txbInfoBox3
txbInfoBox(4) = txbInfoBox4
txbInfoBox(5) = txbInfoBox5
txbInfoBox(6) = txbInfoBox6
txbInfoBox(7) = txbInfoBox7
txbInfoBox(8) = txbInfoBox8
txbInfoBox(9) = txbInfoBox9
txbInfoBox(10) = txbInfoBox10
lblEndRuntime(1) = lblEndRuntime1
lblEndRuntime(2) = lblEndRuntime2
lblEndRuntime(3) = lblEndRuntime3
lblEndRuntime(4) = lblEndRuntime4
lblEndRuntime(5) = lblEndRuntime5
lblEndRuntime(6) = lblEndRuntime6
lblEndRuntime(7) = lblEndRuntime7
lblEndRuntime(8) = lblEndRuntime8
lblEndRuntime(9) = lblEndRuntime9
lblEndRuntime(10) = lblEndRuntime10
chbAutoPowerOn(1) = chbAutoPowerOn1
chbAutoPowerOn(2) = chbAutoPowerOn2
chbAutoPowerOn(3) = chbAutoPowerOn3
chbAutoPowerOn(4) = chbAutoPowerOn4
chbAutoPowerOn(5) = chbAutoPowerOn5
chbAutoPowerOn(6) = chbAutoPowerOn6
chbAutoPowerOn(7) = chbAutoPowerOn7
chbAutoPowerOn(8) = chbAutoPowerOn8
chbAutoPowerOn(9) = chbAutoPowerOn9
chbAutoPowerOn(10) = chbAutoPowerOn10
Read_ini()
End Sub
Private Sub exit_Process()
Try
SerialPort1.Close()
''cmdSerial.Text = "열기"
''cboComPort.Enabled = True
''txbAuthBox.Visible = False
''txbCartBox.Visible = False
''txbShotBox.Visible = False
''GroupBoxEnable(False)
Save_ini()
End
Catch ex As Exception
MsgBox(ex.Message)
End Try
''Try
'' Me.Close()
''Catch ex As InvalidOperationException
'' Console.WriteLine(ex.GetType().FullName)
'' Console.WriteLine(ex.Message)
''End Try
End Sub
Private Sub runTimeTimer_Tick(sender As System.Object, e As System.EventArgs) Handles runTimeTimer.Tick
lblTime.Text = Now
For cnt = 0 To CNT_CH
If EnableRunTime(cnt) = True Then
RunTime(cnt) = RunTime(cnt) + 1
txbEndTime(cnt).Text = Format(Val((RunTime(cnt) - (RunTime(cnt) Mod 3600)) / 3600), "00") & ":" & Format(Val(((RunTime(cnt) Mod 3600) - (RunTime(cnt) Mod 60)) / 60), "00") & ":" & Format(Val(RunTime(cnt)) Mod 60, "00")
End If
Next cnt
End Sub
Private Function cmdRunButton(chNum As Integer)
Dim txbChangeEnable As Boolean = True
Dim dispStr As String
Dim MainSN As String
Dim CartSn As String
If btnRun(chNum).Text = "시작" Then
btnRun(chNum).Text = "중지"
EnableRunConnect(chNum) = False
DevConnectFlag(chNum) = False
DevPowerONFlag(chNum) = False
txbInfoBox(chNum).Text = "RUNNING"
txbInfoBox(chNum).BackColor = Color.Blue
txbInfoBox(chNum).Refresh()
lblEndRuntime(chNum).Text = "실행시간"
txbStartTime(chNum).Text = TimeOfDay
EnableRunTime(chNum) = True
btnRun(chNum).Enabled = True
btnRun(chNum).Refresh()
txbEndTime(chNum).Text = ""
txbShotCnt(chNum).Text = ""
txtMainStartTemp(chNum).Text = ""
txtCartStartTemp(chNum).Text = ""
txtMainEndTemp(chNum).Text = ""
txtCartEndTemp(chNum).Text = ""
txbCmdWindow(chNum).Text = ""
txtMainEndTemp(chNum).ForeColor = Color.Blue
txtCartEndTemp(chNum).ForeColor = Color.Blue
txbShotCount.ReadOnly = True
txbCartTemp.ReadOnly = True
txbDevTemp.ReadOnly = True
If txbMainSN(chNum).Text = "Click" Then
MainSN = "NA"
Else
MainSN = txbMainSN(chNum).Text
End If
If txbCartSN(chNum).Text = "Click" Then
CartSn = "NA"
Else
CartSn = txbCartSN(chNum).Text
End If
dispStr = "DATE" & "," & DateAndTime.Year(Now) & "_" & DateAndTime.Month(Now) & "_" & DateAndTime.Day(Now)
Save_CSV_Dir(chNum, dispStr)
dispStr = "TIME" & "," & (Format(TimeOfDay, "HH:mm:ss"))
Save_CSV(chNum, dispStr)
dispStr = "DEVICE SN" & "," & MainSN
Save_CSV(chNum, dispStr)
dispStr = "CART SN" & "," & CartSn
Save_CSV(chNum, dispStr)
dispStr = "MAIN TEMP" & "," & txbDevTemp.Text
Save_CSV(chNum, dispStr)
dispStr = "CART TEMP" & "," & txbCartTemp.Text
Save_CSV(chNum, dispStr)
dispStr = "SHOT CNT" & "," & txbShotCount.Text
Save_CSV(chNum, dispStr)
dispStr = ("TIME,CH,SHOT_CNT,EXT_TEMP,AMP_TEMP,CT_TEMP")
Save_CSV(chNum, dispStr)
tmpCmdMessage = "agenable"
cmdMessage = "[" & tmpCmdMessage & " " & chNum & ",1]" + vbCrLf
SendData(cmdMessage)
ElseIf btnRun(chNum).Text = "중지" Then
btnRun(chNum).Text = "시작"
EnableRunTime(chNum) = False
''lblEndRuntime(chNum).text = "종료시간"
''txbEndTime(chNum).Text = TimeOfDay
tmpCmdMessage = "agenable"
cmdMessage = "[" & tmpCmdMessage & " " & chNum & ",0]" + vbCrLf
SendData(cmdMessage)
RunTime(chNum) = 0
If Val(txtMainEndTemp(chNum).Text) < Val(txbDevTemp.Text) And Val(txtCartEndTemp(chNum).Text) < Val(txbCartTemp.Text) Then
If Val(txbShotCnt(chNum).Text) >= Val(txbShotCount.Text) Then
txbInfoBox(chNum).Text = "합격"
txbInfoBox(chNum).BackColor = Color.Green
dispStr = (Format(TimeOfDay, "HH:mm:ss")) & "," & "PASS"
Save_CSV(chNum, dispStr)
Else
txbInfoBox(chNum).Text = "불합격"
txbInfoBox(chNum).BackColor = Color.Blue
dispStr = (Format(TimeOfDay, "HH:mm:ss")) & "," & "SHOT FAIL"
Save_CSV(chNum, dispStr)
End If
Else
txbInfoBox(chNum).Text = "불합격"
txbInfoBox(chNum).BackColor = Color.Red
dispStr = (Format(TimeOfDay, "HH:mm:ss")) & "," & "FAIL"
Save_CSV(chNum, dispStr)
If Val(txtMainEndTemp(chNum).Text) > Val(txbDevTemp.Text) Then
txtMainEndTemp(chNum).ForeColor = Color.Red
End If
If Val(txtCartEndTemp(chNum).Text) > Val(txbCartTemp.Text) Then
txtCartEndTemp(chNum).ForeColor = Color.Red
End If
End If
txbInfoBox(chNum).Refresh()
For i = 1 To 10
If btnRun(i).Text = "중지" Then
txbChangeEnable = False
End If
Next
If txbChangeEnable = True Then
txbShotCount.ReadOnly = False
txbCartTemp.ReadOnly = False
txbDevTemp.ReadOnly = False
End If
AutoPowerOnFlag(chNum) = False
End If
Return True
End Function
Private Function cmdAutoPowerOn(chNum As Integer)
If btnRun(chNum).Text = "시작" Then
txbInfoBox(chNum).Text = "부팅중"
txbInfoBox(chNum).BackColor = Color.Red
txbInfoBox(chNum).Refresh()
btnRun(chNum).Enabled = False
btnRun(chNum).Refresh()
PowerOnTimeoutCnt(chNum) = 0
RunPowerOnFlag(chNum) = True
tmpCmdMessage = "agtpmode"
cmdMessage = "[" & tmpCmdMessage & " " & chNum & ",1]" + vbCrLf
SendData(cmdMessage)
End If
Return True
End Function
Private Sub LiveTimer_Tick(sender As System.Object, e As System.EventArgs) Handles LiveTimer.Tick
Try
For cnt = 1 To CNT_CH
If EnableRunTime(cnt) = True Then
If txbInfoBox(cnt).BackColor = Color.Red Then
txbInfoBox(cnt).BackColor = Color.Blue
Else
txbInfoBox(cnt).BackColor = Color.Red
End If
txbInfoBox(cnt).Refresh()
End If
If AutoPowerOnFlag(cnt) = True Then
If PowerOnDelayTime(cnt) = PowerOnTime Then
PowerOnDelayTime(cnt) = 0
AutoPowerOnFlag(cnt) = False
RunPowerOnFlag(cnt) = False
''cmdRunButton(cnt)
End If
PowerOnDelayTime(cnt) += 1
End If
If RunPowerOnFlag(cnt) = True Then
If PowerOnTimeoutCnt(cnt) >= PowerOnTimeout Then
txbInfoBox(cnt).Text = "미연결"
txbInfoBox(cnt).BackColor = Color.Red
txbInfoBox(cnt).Refresh()
PowerOnTimeoutCnt(cnt) = 0
RunPowerOnFlag(cnt) = False
btnRun(cnt).Enabled = True
btnRun(cnt).Refresh()
End If
PowerOnTimeoutCnt(cnt) += 1
End If
Next cnt
Catch ex As Exception
MsgBox(Err.Description)
End Try
End Sub
Private Sub ComportSetup()
With SerialPort1
'.PortName = "COM" & Val(cboComPort.Text)
.PortName = cboComPort.Text
.BaudRate = 230400
.DataBits = 8
.Parity = IO.Ports.Parity.None
.StopBits = IO.Ports.StopBits.One
.Handshake = IO.Ports.Handshake.None
''.RtsEnable = True
'AddHandler SerialPort1.DataReceived, AddressOf DataReceivedHandler
End With
End Sub
Private Sub cmdSerial_Click(sender As System.Object, e As System.EventArgs) Handles cmdSerial.Click
Dim portname() As String
Dim i As Integer
If cboComPort.Text = "" Then
MsgBox("통신 Port를 선택하여 주세요.")
Else
If cmdSerial.Text = "열기" Then
If SerialPort1.IsOpen = False Then
ComportSetup()
Try
SerialPort1.Open()
cmdSerial.Text = "닫기"
cboComPort.Enabled = False
For i = 1 To CNT_CH
gpbInfo(i).Enabled = True
Next i
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
Else
Try
cmdSerial.Text = "열기"
cboComPort.Enabled = True
For i = 1 To CNT_CH
If btnRun(i).Text = "중지" Then
cmdRunButton(i)
ElseIf btnRun(i).Text = "시작" Then
EnableRunConnect(i) = True
DevConnectFlag(i) = False
DevPowerONFlag(i) = False
ConnTimeoutCnt(i) = 0
'' NoUseAutoPwrOn(chNum)
CheckDevConnection(i)
End If
gpbInfo(i).Enabled = False
Next i
SerialPort1.Close()
cboComPort.Items.Clear()
portname = SerialPort.GetPortNames
For i = 1 To portname.Length
cboComPort.Items.Add(portname(i - 1))
Next i
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
End If
End Sub
Private Sub cboComPort_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cboComPort.SelectedIndexChanged
cmdSerial.Enabled = True
End Sub
Private Function SendData(SendMessage As String) As Boolean
Try
If SerialPort1.IsOpen = True Then
SerialPort1.DiscardInBuffer()
SerialPort1.DiscardOutBuffer()
SerialPort1.WriteTimeout = -1
SerialPort1.WriteLine(SendMessage)
TextBox2.Text = SendMessage
TextBox5.AppendText(SendMessage)
Else
MsgBox("통신 포트가 열리지 않았습니다.")
End If
Catch ex As Exception
Return True
End Try
Return False
End Function
Private Function ReceiveData() As Boolean
Dim cmdStr As String
Dim cmdVal(0 To 5) As String
Dim i As Integer
Dim dispStr As String
dispStr = ""
Try
If SerialPort1.IsOpen = True Then
rxMessage = ""
SerialPort1.ReadTimeout = 0
rxMessage = SerialPort1.ReadLine()
TextBox1.Text = rxMessage
''TextBox3.Text = rxMessage
TextBox3.AppendText(rxMessage)
If rxMessage <> "" Then
If Mid(rxMessage, 1, 16) = "START DUALSONIC!" Then
AutoPowerOnFlag(Val(cmdVal(1))) = True
txbInfoBox(Val(cmdVal(1))).Text = "전원ON"
txbInfoBox(Val(cmdVal(1))).BackColor = Color.Green
txbInfoBox(Val(cmdVal(1))).Refresh()
''AutoPowerOnFlag(Val(cmdVal(1))) = True
''PowerOnDelayTime(Val(cmdVal(1))) = 0
Return True
End If
If Mid(rxMessage, 1, 1) = "[" Then
cmdMessage = Mid(rxMessage, 2, Len(rxMessage))
cmdStr = Mid(cmdMessage, 1, (InStr(rxMessage, " ") - 2))
TextBox4.AppendText(cmdStr)
TextBox4.AppendText(" ")
cmdMessage = Mid(rxMessage, InStr(rxMessage, " ") + 1, Len(cmdMessage))
For i = 1 To 5
If InStr(cmdMessage, ",") <> 0 Then
cmdVal(i) = Mid(cmdMessage, 1, InStr(cmdMessage, ",") - 1)
cmdMessage = Mid(cmdMessage, InStr(cmdMessage, ",") + 1, Len(cmdMessage))
ElseIf InStr(cmdMessage, "]") <> 0 Then
cmdVal(i) = Mid(cmdMessage, 1, InStr(cmdMessage, "]") - 1)
cmdMessage = Mid(cmdMessage, InStr(cmdMessage, "]") + 1, Len(cmdMessage))
Else
Exit For
End If
Next i
Select Case cmdStr
Case "sendtemp"
If Val(cmdVal(1)) < 100 And Val(cmdVal(1)) > -100 Then
dispStr = Format(Val(cmdVal(1) / 10), "0.0")
Else
dispStr = Format(Val(cmdVal(1) / 10), "00.0")
End If
If Val(dispStr) <= -40.0 Then
txtExtTemp1.Text = "N/A"
Else
txtExtTemp1.Text = dispStr
End If
txtExtTemp1.Refresh()
If Val(cmdVal(2)) < 100 And Val(cmdVal(2)) > -100 Then
dispStr = Format(Val(cmdVal(2) / 10), "0.0")
Else
dispStr = Format(Val(cmdVal(2) / 10), "00.0")
End If
If Val(dispStr) <= -40.0 Then
txtExtTemp2.Text = "N/A"
Else
txtExtTemp2.Text = dispStr
End If
txtExtTemp2.Refresh()
Case "avalue"
If EnableRunTime(Val(cmdVal(1))) = True Then
If cmdVal(2) = 1 Then
txtMainStartTemp(Val(cmdVal(1))).Text = Format(Val(cmdVal(3) / 10), "00.0")
txtCartStartTemp(Val(cmdVal(1))).Text = Format(Val(cmdVal(4) / 10), "00.0")
End If
txbShotCnt(Val(cmdVal(1))).Text = cmdVal(2)
txtMainEndTemp(Val(cmdVal(1))).Text = Format(Val(cmdVal(3) / 10), "00.0")
txtCartEndTemp(Val(cmdVal(1))).Text = Format(Val(cmdVal(4) / 10), "00.0")
If txbCmdWindow(Val(cmdVal(1))).Text = "" Then
dispStr = (TimeOfDay + " " + cmdVal(1) + "," + cmdVal(2) + "," + txtExtTemp1.Text + "," + txtMainEndTemp(Val(cmdVal(1))).Text + "," + txtCartEndTemp(Val(cmdVal(1))).Text)
txbCmdWindow(Val(cmdVal(1))).AppendText(dispStr)
Else
dispStr = (vbCrLf + TimeOfDay + " " + cmdVal(1) + "," + cmdVal(2) + "," + txtExtTemp1.Text + "," + txtMainEndTemp(Val(cmdVal(1))).Text + "," + txtCartEndTemp(Val(cmdVal(1))).Text)
txbCmdWindow(Val(cmdVal(1))).AppendText(dispStr)
End If
dispStr = (Format(TimeOfDay, "HH:mm:ss") + "," + cmdVal(1) + "," + cmdVal(2) + "," + txtExtTemp1.Text + "," + txtMainEndTemp(Val(cmdVal(1))).Text + "," + txtCartEndTemp(Val(cmdVal(1))).Text)
Save_CSV(cmdVal(1), dispStr)
If Val(txbShotCnt(Val(cmdVal(1))).Text) >= Val(txbShotCount.Text) Or Val(txtMainEndTemp(Val(cmdVal(1))).Text) >= Val(txbDevTemp.Text) Or Val(txtCartEndTemp(Val(cmdVal(1))).Text) >= Val(txbCartTemp.Text) Then
cmdRunButton(cmdVal(1))
End If
End If
Case "aenabler"
If EnableRunTime(Val(cmdVal(1))) = True Then
If txbCmdWindow(Val(cmdVal(1))).Text = "0" Then
If Val(cmdVal(2)) = 1 Then
'dispStr = ("START TIME,CH,SC,EXT,AMP,CT")
txbCmdWindow(Val(cmdVal(1))).AppendText(dispStr)
'dispStr = ("TIME,CH,SHOT_CNT,EXT_TEMP,AMP_TEMP,CT_TEMP")
'Save_CSV(cmdVal(1), dispStr)
Else
dispStr = (TimeOfDay + " AGING STOP")
txbCmdWindow(Val(cmdVal(1))).AppendText(dispStr)
dispStr = (Format(TimeOfDay, "HH:mm:ss") + ",AGING STOP")
Save_CSV(cmdVal(1), dispStr)
End If
Else
If Val(cmdVal(2)) = 1 Then
'dispStr = (vbCrLf + "START TIME,CH,SC,EXT,AMP,CT")
txbCmdWindow(Val(cmdVal(1))).AppendText(dispStr)
dispStr = ("TIME,CH,SHOT_CNT,EXT_TEMP,AMP_TEMP,CT_TEMP")
Save_CSV(cmdVal(1), dispStr)
Else
dispStr = (vbCrLf + TimeOfDay + " AGING STOP")
txbCmdWindow(Val(cmdVal(1))).AppendText(dispStr)
dispStr = (Format(TimeOfDay, "HH:mm:ss") + ",AGING STOP")
Save_CSV(cmdVal(1), dispStr)
End If
End If
End If
Case "aerror"
If EnableRunTime(Val(cmdVal(1))) = True Then
cmdRunButton(Val(cmdVal(1)))
txbInfoBox(Val(cmdVal(1))).Text = "ERR" + Format(Val(cmdVal(2)), "000")
txbInfoBox(Val(cmdVal(1))).BackColor = Color.DarkOrange
txbInfoBox(Val(cmdVal(1))).Refresh()
If txbCmdWindow(Val(cmdVal(1))).Text = "" Then
dispStr = (TimeOfDay + " ERR" + cmdVal(2))
txbCmdWindow(Val(cmdVal(1))).AppendText(dispStr)
Else
dispStr = (vbCrLf + TimeOfDay + " ERR" + cmdVal(2))
txbCmdWindow(Val(cmdVal(1))).AppendText(dispStr)
End If
dispStr = (Format(TimeOfDay, "HH:mm:ss") + ",ERR" + cmdVal(2))
Save_CSV(cmdVal(1), dispStr)
End If
Case "dsstart"
AutoPowerOnFlag(Val(cmdVal(1))) = True
txbInfoBox(Val(cmdVal(1))).Text = "전원ON"
txbInfoBox(Val(cmdVal(1))).BackColor = Color.Green
txbInfoBox(Val(cmdVal(1))).Refresh()
''AutoPowerOnFlag(Val(cmdVal(1))) = True
''PowerOnDelayTime(Val(cmdVal(1))) = 0
Case "chkpwron"
If cmdVal(2) = 1 Then
DevConnectFlag(Val(cmdVal(1))) = True
ConnTimeoutCnt(Val(cmdVal(1))) = 0
CheckDevConnection(Val(cmdVal(1)))
Else
DevConnectFlag(Val(cmdVal(1))) = False
EnableRunConnect(Val(cmdVal(1))) = False
txbInfoBox(Val(cmdVal(1))).Text = "미연결"
txbInfoBox(Val(cmdVal(1))).BackColor = Color.Red
txbInfoBox(Val(cmdVal(1))).Refresh()
End If
Case "dsfwver"
If cmdVal(2) <> "" Then
DevPowerONFlag(Val(cmdVal(1))) = True
ConnTimeoutCnt(Val(cmdVal(1))) = 0
EnableRunConnect(Val(cmdVal(1))) = False
NoUseAutoPwrOn(cmdVal(1))
cmdRunButton(Val(cmdVal(1)))
Else
DevPowerONFlag(Val(cmdVal(1))) = False
EnableRunConnect(Val(cmdVal(1))) = False
End If
End Select
Return True
End If
End If
Else
MsgBox("통신 포트가 열리지 않았습니다.")
Return False
End If
Catch ex As Exception
Return False
End Try
End Function
Private Function CheckDevConnection(chNum As Integer) As Boolean
Try
If SerialPort1.IsOpen = True Then
If DevConnectFlag(chNum) = False Then
DevPowerONFlag(chNum) = False
tmpCmdMessage = "chkpwron"
cmdMessage = "[" & tmpCmdMessage & " " & chNum & "]" + vbCrLf
SendData(cmdMessage)
Else
tmpCmdMessage = "dsfwver"
cmdMessage = "[" & tmpCmdMessage & " " & chNum & "]" + vbCrLf
SendData(cmdMessage)
End If
Else
MsgBox("통신 포트가 열리지 않았습니다.")
Return True
End If
Catch ex As Exception
Return True
End Try
End Function
Private Sub cmdTimer_Tick(sender As System.Object, e As System.EventArgs) Handles cmdTimer.Tick
Dim dispStr As String
If SerialPort1.IsOpen = True Then
ReceiveData()
For i = 1 To 10
If btnRun(i).Text = "시작" Then
If EnableRunConnect(i) = True Then
If ConnTimeoutCnt(i) >= ConnTimeout Then
ConnTimeoutCnt(i) = 0
EnableRunConnect(i) = False
cmdAutoPowerOn(i)
End If
ConnTimeoutCnt(i) += 1
End If
ElseIf btnRun(i).Text = "중지" Then
If txbCmdWindow(i).Text = "" And RunTime(i) >= 20 Then ''20
cmdRunButton(i)
txbInfoBox(i).Text = "에러"
txbInfoBox(i).BackColor = Color.DarkOrange
txbInfoBox(i).Refresh()
dispStr = (Format(TimeOfDay, "HH:mm:ss")) & "," & "ERROR"
Save_CSV(i, dispStr)
End If
If preVal(i) = Val(txbShotCnt(i).Text) Then
If (RunTime(i) - preCnt(i)) >= 35 Then ''35
cmdRunButton(i)
txbInfoBox(i).Text = "에러"
txbInfoBox(i).BackColor = Color.DarkOrange
txbInfoBox(i).Refresh()
dispStr = (Format(TimeOfDay, "HH:mm:ss")) & "," & "ERROR"
Save_CSV(i, dispStr)
End If
Else
preVal(i) = Val(txbShotCnt(i).Text)
preCnt(i) = RunTime(i)
End If
End If
Next
End If
End Sub
Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
''Button1.Enabled = True
''Button1.Refresh()
For i = 1 To CNT_CH
''EnableRunConnect(i) = True
''DevConnectFlag(i) = False
''DevPowerONFlag(i) = False
''ConnTimeoutCnt(i) = 0
'' NoUseAutoPwrOn(chNum)
tmpCmdMessage = "agtpmode"
cmdMessage = "[" & tmpCmdMessage & " " & i & ",1]" + vbCrLf
SendData(cmdMessage)
Next i
End Sub
Private Sub btnRunButton1_Click(sender As System.Object, e As System.EventArgs) Handles btnRun1.Click
Dim chNum As Integer = 1
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub btnRun2_Click(sender As System.Object, e As System.EventArgs) Handles btnRun2.Click
Dim chNum As Integer = 2
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub btnRun3_Click(sender As System.Object, e As System.EventArgs) Handles btnRun3.Click
Dim chNum As Integer = 3
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub btnRun4_Click(sender As System.Object, e As System.EventArgs) Handles btnRun4.Click
Dim chNum As Integer = 4
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub btnRun5_Click(sender As System.Object, e As System.EventArgs) Handles btnRun5.Click
Dim chNum As Integer = 5
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub btnRun6_Click(sender As System.Object, e As System.EventArgs) Handles btnRun6.Click
Dim chNum As Integer = 6
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub btnRun7_Click(sender As System.Object, e As System.EventArgs) Handles btnRun7.Click
Dim chNum As Integer = 7
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub btnRun8_Click(sender As System.Object, e As System.EventArgs) Handles btnRun8.Click
Dim chNum As Integer = 8
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub btnRun9_Click(sender As System.Object, e As System.EventArgs) Handles btnRun9.Click
Dim chNum As Integer = 9
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub btnRun10_Click(sender As System.Object, e As System.EventArgs) Handles btnRun10.Click
Dim chNum As Integer = 10
If btnRun(chNum).Text = "시작" Then
cmdRunButton(chNum)
ElseIf btnRun(chNum).Text = "중지" Then
cmdRunButton(chNum)
End If
End Sub
Private Sub txbDevTemp_Click(sender As Object, e As EventArgs) Handles txbDevTemp.Click
If txbDevTemp.ReadOnly = False Then txbDevTemp.Text = ""
End Sub
Private Sub txbCartTemp_Click(sender As Object, e As EventArgs) Handles txbCartTemp.Click
If txbCartTemp.ReadOnly = False Then txbCartTemp.Text = ""
End Sub
Private Sub txbShotCount_Click(sender As Object, e As EventArgs) Handles txbShotCount.Click
If txbShotCount.ReadOnly = False Then txbShotCount.Text = ""
End Sub
Private Sub Save_CSV(ch As Integer, SaveData As String)
Dim FilePath As String
Dim syear As String
Dim smonth As String
Dim sday As String
Dim FileCnt As Long
Dim runFlag As Boolean = True
Dim FileName As String
Dim objWriter As System.IO.StreamWriter
On Error GoTo WR_File_Error
syear = DateAndTime.Year(Now)
smonth = DateAndTime.Month(Now)
sday = DateAndTime.Day(Now)
FilePath = System.AppDomain.CurrentDomain.BaseDirectory() & "Dualsonic_Log"
'디렉토리가 없을 경우
If Dir(FilePath, vbDirectory) = "" Then
MkDir(FilePath)
End If
FilePath = System.AppDomain.CurrentDomain.BaseDirectory() & "Dualsonic_Log\" & DateAndTime.Year(Now) & "_" & DateAndTime.Month(Now) & "_" & DateAndTime.Day(Now)
'디렉토리가 없을 경우
If Dir(FilePath, vbDirectory) = "" Then
MkDir(FilePath)
End If
FileName = FileSavePath(ch)
'System.IO.File.Delete(FileName)
objWriter = New System.IO.StreamWriter(FileName, True)
objWriter.WriteLine(SaveData)
objWriter.Close()
Exit Sub
WR_File_Error:
MsgBox("Aging Data Save Fail!")
End Sub
Private Sub Save_CSV_Dir(ch As Integer, SaveData As String)
Dim FilePath As String
Dim syear As String
Dim smonth As String
Dim sday As String
Dim FileCnt As Long
Dim runFlag As Boolean = True
Dim FileName As String
Dim FrontFileName As String
Dim MainSN As String
Dim CartSN As String
Dim objWriter As System.IO.StreamWriter
On Error GoTo WR_File_Error
syear = DateAndTime.Year(Now)
smonth = DateAndTime.Month(Now)
sday = DateAndTime.Day(Now)
FilePath = System.AppDomain.CurrentDomain.BaseDirectory() & "Dualsonic_Log"
'디렉토리가 없을 경우
If Dir(FilePath, vbDirectory) = "" Then
MkDir(FilePath)
End If
FilePath = System.AppDomain.CurrentDomain.BaseDirectory() & "Dualsonic_Log\" & DateAndTime.Year(Now) & "_" & DateAndTime.Month(Now) & "_" & DateAndTime.Day(Now)
'디렉토리가 없을 경우
If Dir(FilePath, vbDirectory) = "" Then
MkDir(FilePath)
End If
If txbMainSN(ch).Text = "Click" Then
MainSN = "DEV_NA"
Else
MainSN = txbMainSN(ch).Text
End If
If txbCartSN(ch).Text = "Click" Then
CartSN = "CART_NA"
Else
CartSN = txbCartSN(ch).Text
End If
FrontFileName = FilePath & "\" & MainSN & "_" & CartSN & "_CH_" & Format(ch, "00")
FileName = FrontFileName & ".CSV"
Do
If File.Exists(FileName) = True Then
FileCnt = FileCnt + 1
FileName = FrontFileName & "_" & FileCnt & ".CSV"
runFlag = False
Else
runFlag = True
End If
Loop Until (runFlag)
FileSavePath(ch) = FileName
'System.IO.File.Delete(FileName)
objWriter = New System.IO.StreamWriter(FileName, True)
objWriter.WriteLine(SaveData)
objWriter.Close()
Exit Sub
WR_File_Error:
MsgBox("Aging Data Save Fail!")
End Sub
Private Sub Read_ini()
Dim FilePath As String
Dim FileName As String
Dim ConifgStr As String
Dim DevTemp As String
Dim ShotCount As String
Dim CartTemp As String
Dim objReader As System.IO.StreamReader
On Error GoTo RD_File_Error
FilePath = System.AppDomain.CurrentDomain.BaseDirectory() & "\Dualsonic Config"
'디렉토리가 없을 경우
If Dir(FilePath, vbDirectory) = "" Then
MkDir(FilePath)
End If
FileName = FilePath & "\" & "DS_Config" & ".ini"
If File.Exists(FileName) = True Then
objReader = New System.IO.StreamReader(FileName, True)
ConifgStr = objReader.ReadLine()
objReader.Close()
txbDevTemp.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1)
ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr))
txbCartTemp.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1)
ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr))
txbShotCount.Text = ConifgStr
Else
Save_ini()
End If
Exit Sub
RD_File_Error:
MsgBox("Config Load Fail!")
End Sub
Private Sub Save_ini()
Dim FilePath As String
Dim FileName As String
Dim ConifgStr As String
Dim objWriter As System.IO.StreamWriter
On Error GoTo WR_File_Error
FilePath = System.AppDomain.CurrentDomain.BaseDirectory() & "\Dualsonic Config"
'디렉토리가 없을 경우
If Dir(FilePath, vbDirectory) = "" Then
MkDir(FilePath)
End If
FileName = FilePath & "\" & "DS_Config" & ".ini"
If txbDevTemp.Text = "" Then txbDevTemp.Text = 48.0
If txbCartTemp.Text = "" Then txbCartTemp.Text = 48.0
If txbShotCount.Text = "" Then txbShotCount.Text = 300
ConifgStr = txbDevTemp.Text & "," & txbCartTemp.Text & "," & txbShotCount.Text
System.IO.File.Delete(FileName)
objWriter = New System.IO.StreamWriter(FileName, True)
objWriter.Flush()
objWriter.WriteLine(ConifgStr)
objWriter.Close()
Exit Sub
WR_File_Error:
MsgBox("Config Save Fail!")
End Sub
Private Sub txbMainSN1_Click(sender As Object, e As EventArgs) Handles txbMainSN1.Click
txbMainSN1.Text = ""
End Sub
Private Sub txbCartSN1_Click(sender As Object, e As EventArgs) Handles txbCartSN1.Click
txbCartSN1.Text = ""
End Sub
Private Sub txbMainSN2_Click(sender As Object, e As EventArgs) Handles txbMainSN2.Click
txbMainSN2.Text = ""
End Sub
Private Sub txbCartSN2_Click(sender As Object, e As EventArgs) Handles txbCartSN2.Click
txbCartSN2.Text = ""
End Sub
Private Sub txbMainSN3_Click(sender As Object, e As EventArgs) Handles txbMainSN3.Click
txbMainSN3.Text = ""
End Sub
Private Sub txbCartSN3_Click(sender As Object, e As EventArgs) Handles txbCartSN3.Click
txbCartSN3.Text = ""
End Sub
Private Sub txbMainSN4_Click(sender As Object, e As EventArgs) Handles txbMainSN4.Click
txbMainSN4.Text = ""
End Sub
Private Sub txbCartSN4_Click(sender As Object, e As EventArgs) Handles txbCartSN4.Click
txbCartSN4.Text = ""
End Sub
Private Sub txbMainSN5_Click(sender As Object, e As EventArgs) Handles txbMainSN5.Click
txbMainSN5.Text = ""
End Sub
Private Sub txbCartSN5_Click(sender As Object, e As EventArgs) Handles txbCartSN5.Click
txbCartSN5.Text = ""
End Sub
Private Sub txbMainSN6_Click(sender As Object, e As EventArgs) Handles txbMainSN6.Click
txbMainSN6.Text = ""
End Sub
Private Sub txbCartSN6_Click(sender As Object, e As EventArgs) Handles txbCartSN6.Click
txbCartSN6.Text = ""
End Sub
Private Sub txbMainSN7_Click(sender As Object, e As EventArgs) Handles txbMainSN7.Click
txbMainSN7.Text = ""
End Sub
Private Sub txbCartSN7_Click(sender As Object, e As EventArgs) Handles txbCartSN7.Click
txbCartSN7.Text = ""
End Sub
Private Sub txbMainSN8_Click(sender As Object, e As EventArgs) Handles txbMainSN8.Click
txbMainSN8.Text = ""
End Sub
Private Sub txbCartSN8_Click(sender As Object, e As EventArgs) Handles txbCartSN8.Click
txbCartSN8.Text = ""
End Sub
Private Sub txbMainSN9_Click(sender As Object, e As EventArgs) Handles txbMainSN9.Click
txbMainSN9.Text = ""
End Sub
Private Sub txbCartSN9_Click(sender As Object, e As EventArgs) Handles txbCartSN9.Click
txbCartSN9.Text = ""
End Sub
Private Sub txbMainSN10_Click(sender As Object, e As EventArgs) Handles txbMainSN10.Click
txbMainSN10.Text = ""
End Sub
Private Sub txbCartSN10_Click(sender As Object, e As EventArgs) Handles txbCartSN10.Click
txbCartSN10.Text = ""
End Sub
Private Sub NoUseAutoPwrOn(ChNum As Integer)
tmpCmdMessage = "chgpinon"
cmdMessage = "[" & tmpCmdMessage & " " & ChNum & ",0]" + vbCrLf
SendData(cmdMessage)
tmpCmdMessage = "idpinon"
cmdMessage = "[" & tmpCmdMessage & " " & ChNum & ",1]" + vbCrLf
SendData(cmdMessage)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For cnt = 1 To CNT_CH
cmdRunButton(cnt)
Threading.Thread.Sleep(30)
Next cnt
End Sub
End Class