1.보급형모델 사용시간, shot 수 확인 기능 추가

2. 플래쉬 설정값 초기화 ldm 추가
3. 버전 3.0.3
This commit is contained in:
hyelinjung 2026-03-20 17:25:04 +09:00
parent 3f0dee3f30
commit e328b1e965
2 changed files with 131 additions and 7 deletions

View File

@ -10,7 +10,7 @@ Imports Mysqlx
Imports Mysqlx.XDevAPI Imports Mysqlx.XDevAPI
Public Class MainForm 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 FormName As String = "DUALSONIC Product Manager Ver " & FormVersion
Private Const TDNameSize As Int16 = 10 Private Const TDNameSize As Int16 = 10
@ -25,6 +25,7 @@ Public Class MainForm
Private Const OneHour As Int32 = 3600 Private Const OneHour As Int32 = 3600
Private Const OneMinute As Int16 = 60 Private Const OneMinute As Int16 = 60
Private Const OneSecond As Int32 = 1000 Private Const OneSecond As Int32 = 1000
Public lowPrdCmdFlag As Boolean = False
Private Enum ErrorList Private Enum ErrorList
@ -368,6 +369,8 @@ Public Class MainForm
tcMAXUse.Visible = True tcMAXUse.Visible = True
gbDUALUse.Visible = False gbDUALUse.Visible = False
tcAltoUse.Visible = False tcAltoUse.Visible = False
EnsureMxAllTabs()
tcMAXUse.SelectedIndex = 0
End Sub End Sub
Private Sub ALTO_UseOn() Private Sub ALTO_UseOn()
@ -386,20 +389,37 @@ Public Class MainForm
tcAltoUse.Visible = False tcAltoUse.Visible = False
End Sub End Sub
''' <summary>LOW_PROD/LDM: tcMAXUse에서 전체탭만 남기고 HIFU/RF 탭을 제거합니다.</summary>
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
''' <summary>MAXIMUM : HIFU/RF 탭을 다시 붙입니다.</summary>
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() Private Sub LOW_PROD_UseOn()
gbDevice.Visible = False gbDevice.Visible = False
gbRunTime.Visible = False gbRunTime.Visible = True
tcMAXUse.Visible = True tcMAXUse.Visible = True
gbDUALUse.Visible = False gbDUALUse.Visible = False
tcAltoUse.Visible = False tcAltoUse.Visible = False
EnsureMxOnlyFullTab()
tcMAXUse.SelectedIndex = 0
End Sub End Sub
Private Sub LDM_UseOn() Private Sub LDM_UseOn()
gbDevice.Visible = False gbDevice.Visible = False
gbRunTime.Visible = False gbRunTime.Visible = True
tcMAXUse.Visible = True tcMAXUse.Visible = True
gbDUALUse.Visible = False gbDUALUse.Visible = False
tcAltoUse.Visible = False tcAltoUse.Visible = False
EnsureMxOnlyFullTab()
tcMAXUse.SelectedIndex = 0
End Sub End Sub
Private Sub btnComport_Click(sender As Object, e As EventArgs) Handles btnComport.Click Private Sub btnComport_Click(sender As Object, e As EventArgs) Handles btnComport.Click
@ -623,7 +643,11 @@ End_Finish:
End Sub End Sub
Private Function ResetDBUpdate(TDSerial As String) As Boolean 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 If DBCommand(DBCmd) Then
Return True Return True
End If End If
@ -3418,6 +3442,8 @@ End_Finish:
Select Case SelectModeType Select Case SelectModeType
Case ModeList.MAXIMUM Case ModeList.MAXIMUM
MAXIMUM_UseReadFunc() MAXIMUM_UseReadFunc()
Case ModeList.LOW_PROD, ModeList.LDM
lowProd_UseReadFunc()
Case Else Case Else
MsgBox("잘못된 경로입니다.", vbCritical, FormName) MsgBox("잘못된 경로입니다.", vbCritical, FormName)
End Select End Select
@ -3478,6 +3504,74 @@ End_Finish:
GoTo FAIL_Finish GoTo FAIL_Finish
End Try 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: FAIL_Finish:
txbMxAllBox.Text = "Error" + Str(StageCnt) txbMxAllBox.Text = "Error" + Str(StageCnt)
txbMxAllBox.BackColor = Color.Red txbMxAllBox.BackColor = Color.Red
@ -3502,6 +3596,24 @@ End_Finish:
End If End If
End Function 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 Private Function ShotErrSearch() As String
tmpCmdMessage = "rdsinfo5" tmpCmdMessage = "rdsinfo5"
cmdMessage = "[" & tmpCmdMessage & "]" + vbCrLf cmdMessage = "[" & tmpCmdMessage & "]" + vbCrLf
@ -3512,7 +3624,9 @@ End_Finish:
Dim retval As String = PollingReceiveData(1000) 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 Return retval
Else Else
Return ErrorList.ReceiveError Return ErrorList.ReceiveError

View File

@ -75,10 +75,17 @@ Module SerialPortMoudule
MsgBox("통신 포트가 열리지 않았습니다.", vbCritical, FormName) MsgBox("통신 포트가 열리지 않았습니다.", vbCritical, FormName)
Return False Return False
End If 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 Catch ex As Exception
MsgBox("COM 포트 에러 발생!" & vbCrLf & ex.Message, vbCritical, FormName) MsgBox("COM 포트 에러 발생!" & vbCrLf & ex.Message, vbCritical, FormName)
Return False Return False
Finally
MainForm.lowPrdCmdFlag = False
End Try End Try
End Function End Function
@ -195,7 +202,7 @@ Module SerialPortMoudule
cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) & "," & cmdVal(6) & "," & cmdVal(7) cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) & "," & cmdVal(6) & "," & cmdVal(7)
Return cmdStr Return cmdStr
Case "rdsinfo5" Case "rdsinfo5"
cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4)
Return cmdStr Return cmdStr
Case "wrsinfo4" Case "wrsinfo4"
cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5)
@ -269,6 +276,9 @@ Module SerialPortMoudule
Case "setldmcnf" Case "setldmcnf"
cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) & "," & cmdVal(6) cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) & "," & cmdVal(6)
Return cmdStr Return cmdStr
Case "rdsinfo1"
cmdStr = cmdVal(1) & "," & cmdVal(2)
Return cmdStr
End Select End Select
End If End If