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
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
''' <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()
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
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

View File

@ -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