From e328b1e9652f139e87554c21210fd5cc0017593c Mon Sep 17 00:00:00 2001 From: hyelinjung Date: Fri, 20 Mar 2026 17:25:04 +0900 Subject: [PATCH] =?UTF-8?q?1.=EB=B3=B4=EA=B8=89=ED=98=95=EB=AA=A8=EB=8D=B8?= =?UTF-8?q?=20=EC=82=AC=EC=9A=A9=EC=8B=9C=EA=B0=84,=20shot=20=EC=88=98=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?2.=20=ED=94=8C=EB=9E=98=EC=89=AC=20=EC=84=A4=EC=A0=95=EA=B0=92?= =?UTF-8?q?=20=EC=B4=88=EA=B8=B0=ED=99=94=20ldm=20=EC=B6=94=EA=B0=80=203.?= =?UTF-8?q?=20=EB=B2=84=EC=A0=84=203.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Product_Manager/MainForm.vb | 124 +++++++++++++++++++++++++-- Product_Manager/SerialPortMoudule.vb | 14 ++- 2 files changed, 131 insertions(+), 7 deletions(-) diff --git a/Product_Manager/MainForm.vb b/Product_Manager/MainForm.vb index 82677b8..270b29a 100644 --- a/Product_Manager/MainForm.vb +++ b/Product_Manager/MainForm.vb @@ -10,7 +10,7 @@ Imports Mysqlx Imports Mysqlx.XDevAPI Public Class MainForm - Public Const FormVersion As String = "3.0.2" + Public Const FormVersion As String = "3.0.3" Private Const FormName As String = "DUALSONIC Product Manager Ver " & FormVersion Private Const TDNameSize As Int16 = 10 @@ -25,6 +25,7 @@ Public Class MainForm Private Const OneHour As Int32 = 3600 Private Const OneMinute As Int16 = 60 Private Const OneSecond As Int32 = 1000 + Public lowPrdCmdFlag As Boolean = False Private Enum ErrorList @@ -368,6 +369,8 @@ Public Class MainForm tcMAXUse.Visible = True gbDUALUse.Visible = False tcAltoUse.Visible = False + EnsureMxAllTabs() + tcMAXUse.SelectedIndex = 0 End Sub Private Sub ALTO_UseOn() @@ -386,20 +389,37 @@ Public Class MainForm tcAltoUse.Visible = False End Sub + ''' LOW_PROD/LDM: tcMAXUse에서 「전체」탭만 남기고 HIFU/RF 탭을 제거합니다. + Private Sub EnsureMxOnlyFullTab() + If tcMAXUse.TabPages.Contains(tpMXHIFU) Then tcMAXUse.TabPages.Remove(tpMXHIFU) + If tcMAXUse.TabPages.Contains(tpMXRF) Then tcMAXUse.TabPages.Remove(tpMXRF) + If btnMxAllReset.Enabled = True Then btnMxAllReset.Enabled = False + End Sub + + ''' MAXIMUM 등: HIFU/RF 탭을 다시 붙입니다. + Private Sub EnsureMxAllTabs() + If Not tcMAXUse.TabPages.Contains(tpMXHIFU) Then tcMAXUse.TabPages.Add(tpMXHIFU) + If Not tcMAXUse.TabPages.Contains(tpMXRF) Then tcMAXUse.TabPages.Add(tpMXRF) + If btnMxAllReset.Enabled = False Then btnMxAllReset.Enabled = True + End Sub Private Sub LOW_PROD_UseOn() gbDevice.Visible = False - gbRunTime.Visible = False + gbRunTime.Visible = True tcMAXUse.Visible = True gbDUALUse.Visible = False tcAltoUse.Visible = False + EnsureMxOnlyFullTab() + tcMAXUse.SelectedIndex = 0 End Sub Private Sub LDM_UseOn() gbDevice.Visible = False - gbRunTime.Visible = False + gbRunTime.Visible = True tcMAXUse.Visible = True gbDUALUse.Visible = False tcAltoUse.Visible = False + EnsureMxOnlyFullTab() + tcMAXUse.SelectedIndex = 0 End Sub Private Sub btnComport_Click(sender As Object, e As EventArgs) Handles btnComport.Click @@ -623,7 +643,11 @@ End_Finish: End Sub Private Function ResetDBUpdate(TDSerial As String) As Boolean - DBCmd = "UPDATE " & UseCartridgeTbl & " SET TestStep = '11', Product_SN = NULL, Ct_Manufacture_Name = NULL, Ct_Manufacture_Year = NULL, Ct_Manufacture_Month = NULL, Ct_SN = NULL, Ct_Model = '', Ct_Type = '', Ct_Abroad = NULL, Ct_Agency = NULL , Ct_Frequency = NULL, Ct_Power = '0', Ct_Max_ShotCnt = '0', Ct_Remain_ShotCnt = '0' WHERE PV_SN = '" & TDSerial & "'" + If SelectedModelInfo.LdmUseYn = "Y" Then + DBCmd = "UPDATE " & UseLDMCartridgeTbl & " SET TestStep = '11', Product_SN = NULL, Ct_Manufacture_Name = NULL, Ct_Manufacture_Year = NULL, Ct_Manufacture_Month = NULL, Ct_SN = NULL, Ct_Model = '', Ct_Type = '', Ct_Abroad = NULL, Ct_Agency = NULL , Ct_Frequency = NULL, Ct_Frequency2 = NULL, Ct_Frequency3 = NULL, Ct_Power = '0', Ct_Power2 = '0', Ct_Power3 = '0', Ct_Max_ShotCnt = '0', Ct_Remain_ShotCnt = '0' WHERE PV_SN = '" & TDSerial & "'" + ElseIf SelectedModelInfo.TDUseYn = "Y" Then + DBCmd = "UPDATE " & UseCartridgeTbl & " SET TestStep = '11', Product_SN = NULL, Ct_Manufacture_Name = NULL, Ct_Manufacture_Year = NULL, Ct_Manufacture_Month = NULL, Ct_SN = NULL, Ct_Model = '', Ct_Type = '', Ct_Abroad = NULL, Ct_Agency = NULL , Ct_Frequency = NULL, Ct_Power = '0', Ct_Max_ShotCnt = '0', Ct_Remain_ShotCnt = '0' WHERE PV_SN = '" & TDSerial & "'" + End If If DBCommand(DBCmd) Then Return True End If @@ -3418,6 +3442,8 @@ End_Finish: Select Case SelectModeType Case ModeList.MAXIMUM MAXIMUM_UseReadFunc() + Case ModeList.LOW_PROD, ModeList.LDM + lowProd_UseReadFunc() Case Else MsgBox("잘못된 경로입니다.", vbCritical, FormName) End Select @@ -3478,6 +3504,74 @@ End_Finish: GoTo FAIL_Finish End Try +FAIL_Finish: + txbMxAllBox.Text = "Error" + Str(StageCnt) + txbMxAllBox.BackColor = Color.Red +End_Finish: + txbMxAllBox.Refresh() + End Sub + + Private Sub lowProd_UseReadFunc() + Dim StageCnt As Int16 = ErrorList.NonError + + Try + MAXIMUM_All_ReadStart() + + Dim ResultData As String = RunTimeWithShotCount() ''남은 샷수 & 전체 사용시간 + + If ResultData = ErrorList.SendError Or ResultData = ErrorList.ReceiveError Then + StageCnt = ResultData + GoTo FAIL_Finish + End If + + Dim TimeCnt As ULong = Val(Mid(ResultData, 2, InStr(ResultData, ",") + 1)) / OneSecond + + Dim DayCnt As Integer = Truncate(TimeCnt / OneDay) + Dim HourCnt As Int16 = Truncate((TimeCnt Mod OneDay) / OneHour) + Dim MinCnt As Int16 = Truncate((TimeCnt Mod OneHour) / OneMinute) + Dim SecCnt As Int16 = Truncate(TimeCnt Mod OneMinute) + + txbMxAllDay.Text = DayCnt + + If HourCnt < StrLen Then + txbMxAllHour.Text = "0" & HourCnt + Else + txbMxAllHour.Text = HourCnt + End If + + If MinCnt < StrLen Then + txbMxAllMin.Text = "0" & MinCnt + Else + txbMxAllMin.Text = MinCnt + End If + + If SecCnt < StrLen Then + txbMxAllSec.Text = "0" & SecCnt + Else + txbMxAllSec.Text = SecCnt + End If + + + txbMxAllShot.Text = Mid(ResultData, 1, InStr(ResultData, ",") - 1) + lowPrdCmdFlag = True + ResultData = ShotErrSearch() + If ResultData.Equals("timeout") Then + txbMxAllErr.Clear() + Else + ResultData = Mid(ResultData, InStr(ResultData, ",") + 1, ResultData.Length) + + txbMxAllErr.Text = Mid(ResultData, 1, InStr(ResultData, ",") - 1) + End If + + txbMxAllBox.Text = "SUCCESS" + txbMxAllBox.BackColor = Color.Green + GoTo End_Finish + + Catch ex As Exception + MsgBox("입력 진행 도중 에러 발생!" & vbCrLf & ex.Message, vbCritical, FormName) + GoTo FAIL_Finish + End Try + FAIL_Finish: txbMxAllBox.Text = "Error" + Str(StageCnt) txbMxAllBox.BackColor = Color.Red @@ -3502,6 +3596,24 @@ End_Finish: End If End Function + Private Function RunTimeWithShotCount() As String '보급형 사용시간 + tmpCmdMessage = "rdsinfo1" + + cmdMessage = "[" & tmpCmdMessage & "]" + + If SendData(cmdMessage) Then + Return ErrorList.SendError + End If + + Dim retval As String = PollingReceiveData(1000) + + If UBound(Split(retval, ",")) = 1 Then + Return retval + Else + Return ErrorList.ReceiveError + End If + End Function + Private Function ShotErrSearch() As String tmpCmdMessage = "rdsinfo5" cmdMessage = "[" & tmpCmdMessage & "]" + vbCrLf @@ -3512,7 +3624,9 @@ End_Finish: Dim retval As String = PollingReceiveData(1000) - If UBound(Split(retval, ",")) = 4 Then + If UBound(Split(retval, ",")) = 3 Then + Return retval + ElseIf retval.Equals("timeout") Then Return retval Else Return ErrorList.ReceiveError diff --git a/Product_Manager/SerialPortMoudule.vb b/Product_Manager/SerialPortMoudule.vb index edc6ce0..3ab0d31 100644 --- a/Product_Manager/SerialPortMoudule.vb +++ b/Product_Manager/SerialPortMoudule.vb @@ -75,10 +75,17 @@ Module SerialPortMoudule MsgBox("통신 포트가 열리지 않았습니다.", vbCritical, FormName) Return False End If - + Catch ex As System.TimeoutException + If MainForm.lowPrdCmdFlag Then + Return "timeout" + End If + MsgBox("COM 포트 에러 발생!" & vbCrLf & ex.Message, vbCritical, FormName) + Return False Catch ex As Exception MsgBox("COM 포트 에러 발생!" & vbCrLf & ex.Message, vbCritical, FormName) Return False + Finally + MainForm.lowPrdCmdFlag = False End Try End Function @@ -195,7 +202,7 @@ Module SerialPortMoudule cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) & "," & cmdVal(6) & "," & cmdVal(7) Return cmdStr Case "rdsinfo5" - cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) + cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) Return cmdStr Case "wrsinfo4" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) @@ -269,6 +276,9 @@ Module SerialPortMoudule Case "setldmcnf" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) & "," & cmdVal(6) Return cmdStr + Case "rdsinfo1" + cmdStr = cmdVal(1) & "," & cmdVal(2) + Return cmdStr End Select End If