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