Merge pull request 'fix/NgCount_Update_Error' (#4) from fix/NgCount_Update_Error into master

Reviewed-on: #4
This commit is contained in:
kje97 2025-07-01 10:05:17 +09:00
commit 6a80e5358c
2 changed files with 2958 additions and 1967 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1906,7 +1906,8 @@ Public Class Main_Form
End If End If
For i = 0 To tableName.Length - 1 For i = 0 To tableName.Length - 1
DBCmd = "SELECT COUNT(PV_SN) FROM " & tableName(i) & " WHERE PV_SN = '" & TestData.Test_Serial & "'" DBCmd = "SELECT COUNT(PV_SN) FROM " & tableName(i) & " WHERE PV_SN = '" & TestData.Test_Serial & "'" &
" AND DATE(TestDate) = CURDATE()"
Dim DupYn As Int16 = DBQueryScalar(DBCmd) Dim DupYn As Int16 = DBQueryScalar(DBCmd)
If DupYn > 0 Then If DupYn > 0 Then
@ -2605,14 +2606,82 @@ SettingFail:
End Function End Function
'Private Sub Jig_End()
' If EndTest() Then
' txbWindow.AppendText("JIG Serial Test End : FAIL" & vbCrLf)
' Exit Sub
' End If
' txbWindow.AppendText("JIG Serial Test End : Success" & vbCrLf)
'End Sub
Private Sub Jig_End() Private Sub Jig_End()
If EndTest() Then For retryCount As Integer = 0 To 2
txbWindow.AppendText("JIG Serial Test End : FAIL" & vbCrLf) txbWindow.AppendText($"JIG 종료 시도 {retryCount + 1}/3" & vbCrLf)
Exit Sub
End If If EndTest() Then
txbWindow.AppendText("JIG Serial Test End : Success" & vbCrLf) txbWindow.AppendText($"JIG Serial Test End : FAIL (시도 {retryCount + 1})" & vbCrLf)
If retryCount < 2 Then
Threading.Thread.Sleep(1000)
If JigSerial IsNot Nothing AndAlso JigSerial.IsOpen Then
JigSerial.DiscardInBuffer()
JigSerial.DiscardOutBuffer()
Threading.Thread.Sleep(200)
End If
Continue For
Else
txbWindow.AppendText("JIG 정상 종료 실패 - 강제 종료 실행" & vbCrLf)
ForceJigShutdown()
Exit Sub
End If
Else
txbWindow.AppendText("JIG Serial Test End : Success" & vbCrLf)
Exit For
End If
Next
End Sub End Sub
Private Sub ForceJigShutdown()
Try
txbWindow.AppendText("강제 JIG 종료 시작" & vbCrLf)
If JigSerial IsNot Nothing AndAlso JigSerial.IsOpen Then
Dim shutdownCommands() As String = {"[endmft]"}
For Each cmd In shutdownCommands
Try
SendData(cmd)
Threading.Thread.Sleep(500)
txbWindow.AppendText($"강제 종료 명령 전송: {cmd}" & vbCrLf)
Catch
End Try
Next
Try
Dim portName As String = JigSerial.PortName
Dim baudRate As Integer = JigSerial.BaudRate
JigSerial.Close()
Threading.Thread.Sleep(1000)
JigSerial.PortName = portName
JigSerial.BaudRate = baudRate
JigSerial.Open()
txbWindow.AppendText("시리얼 포트 재연결 완료" & vbCrLf)
Catch serialEx As Exception
txbWindow.AppendText($"시리얼 포트 재연결 실패: {serialEx.Message}" & vbCrLf)
End Try
End If
Catch ex As Exception
txbWindow.AppendText($"강제 종료 중 오류: {ex.Message}" & vbCrLf)
End Try
End Sub
Public Function EPTestRun() As Boolean Public Function EPTestRun() As Boolean
Dim ForCnt As Int16 = 0 Dim ForCnt As Int16 = 0
Try Try
@ -4488,12 +4557,32 @@ ErrorEnd:
End Function End Function
Private Sub InitializeDeviceState()
Try
txbWindow.AppendText("기기 상태 초기화 시작..." & vbCrLf)
Try
TestMode_On(0) ' MFT 모드를 0으로 초기화
Threading.Thread.Sleep(300)
Catch
End Try
txbWindow.AppendText("기기 상태 초기화 완료" & vbCrLf)
Catch ex As Exception
txbWindow.AppendText("기기 초기화 중 오류 (무시하고 계속): " & ex.Message & vbCrLf)
End Try
End Sub
Private Sub rfFunction() Private Sub rfFunction()
Try Try
StartTime = MeasureTimeAll(MeasStart) StartTime = MeasureTimeAll(MeasStart)
TestData.Test_Serial = txbBarcode.Text TestData.Test_Serial = txbBarcode.Text
InitializeDeviceState()
If StartSwitch = True Then If StartSwitch = True Then
If JigSerial.IsOpen = True Then If JigSerial.IsOpen = True Then
@ -4625,6 +4714,19 @@ ProcessEnd:
Jig_End() Jig_End()
NormalEnd: NormalEnd:
myscope.IO.Clear() myscope.IO.Clear()
'txbWindow.AppendText("[" & MeasureTimeAll(MeasEnd) & "ms] Test Play" & vbCrLf)
Try
If TestError = False Then
Jig_End() ' 지그 전원 차단
TestMode_On(0) ' MFT 모드 초기화
txbWindow.AppendText("비정상 종료로 인한 전원 차단" & vbCrLf)
End If
Catch normalEx As Exception
txbWindow.AppendText("정상 종료 처리 중 오류: " & normalEx.Message & vbCrLf)
End Try
'myscope.IO.Clear()
txbWindow.AppendText("[" & MeasureTimeAll(MeasEnd) & "ms] Test Play" & vbCrLf) txbWindow.AppendText("[" & MeasureTimeAll(MeasEnd) & "ms] Test Play" & vbCrLf)
End Sub End Sub
@ -4772,8 +4874,8 @@ NormalEnd:
GoTo RunSuccess GoTo RunSuccess
Else Else
MsgBox("지그를 연결한 후 동작하여 주십시오.", vbCritical, Program_Name & Program_Version) MsgBox("지그를 연결한 후 동작하여 주십시오.", vbCritical, Program_Name & Program_Version)
FailMain() FailMain()
GoTo NormalEnd GoTo NormalEnd
End If End If
@ -5270,12 +5372,12 @@ ProcessEnd:
End If End If
Else Else
If TDDataSet(TD_Data.TestStep) = TestStepList.Rf_NewFail Or TDDataSet(TD_Data.TestStep) = TestStepList.RF_ReFail Then If TDDataSet(TD_Data.TestStep) = TestStepList.Rf_NewFail Or TDDataSet(TD_Data.TestStep) = TestStepList.RF_ReFail Then
If processNum = TestStepList.HF_NewSuc Or processNum = TestStepList.HF_ReSuc Then If processNum = TestStepList.RF_NewSuc Or processNum = TestStepList.Rf_ReSuc Then
txbOkCount.Text = Val(txbOkCount.Text) + 1 txbOkCount.Text = Val(txbOkCount.Text) + 1
txbNgCount.Text = Val(txbNgCount.Text) - 1 txbNgCount.Text = Val(txbNgCount.Text) - 1
End If End If
Else Else
If processNum = TestStepList.HF_NEWFail Or processNum = TestStepList.HF_ReFail Then If processNum = TestStepList.Rf_NewFail Or processNum = TestStepList.RF_ReFail Then
txbOkCount.Text = Val(txbOkCount.Text) - 1 txbOkCount.Text = Val(txbOkCount.Text) - 1
txbNgCount.Text = Val(txbNgCount.Text) + 1 txbNgCount.Text = Val(txbNgCount.Text) + 1
End If End If
@ -5283,6 +5385,7 @@ ProcessEnd:
End If End If
End Sub End Sub
Private Function CountUpdate() As Boolean Private Function CountUpdate() As Boolean
If rdbAltoPD.Checked = True Then If rdbAltoPD.Checked = True Then
DBCmd = "UPDATE " & pd1CntTableNow & " SET PD1_AltoCnt = '" & txbDayCount.Text & "', PD1_AltoOkCnt = '" & txbOkCount.Text & "', PD1_AltoNgCnt = '" & txbNgCount.Text & "' WHERE PD1_Date = '" & NowDate & "'" DBCmd = "UPDATE " & pd1CntTableNow & " SET PD1_AltoCnt = '" & txbDayCount.Text & "', PD1_AltoOkCnt = '" & txbOkCount.Text & "', PD1_AltoNgCnt = '" & txbNgCount.Text & "' WHERE PD1_Date = '" & NowDate & "'"