From 085aec7b6c9ddcc14f1e280c0d7083116f4342af Mon Sep 17 00:00:00 2001 From: kje97 Date: Wed, 11 Jun 2025 17:44:40 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=98=A4=EC=B0=A8=20=EA=B3=84=EC=82=B0?= =?UTF-8?q?=20=EB=B0=A9=EB=B2=95=20=EA=B3=A0=EC=A0=95=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95=20-=20=EC=9D=B4?= =?UTF-8?q?=EC=A0=84=20=EA=B3=84=EC=82=B0=EB=B2=95=20=EC=A3=BC=EC=84=9D?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SalesPacking_MES_API_Project/weightForm.vb | 68 +++++++++++++--------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/SalesPacking_MES_API_Project/weightForm.vb b/SalesPacking_MES_API_Project/weightForm.vb index c90566d..4887cdf 100644 --- a/SalesPacking_MES_API_Project/weightForm.vb +++ b/SalesPacking_MES_API_Project/weightForm.vb @@ -18,13 +18,13 @@ Public Class weightForm Private weight(2) - Dim weights As New List(Of Double)() ' 실측 측정값 저장용 - Dim avg As Double = 0.0 ' 평균 - Dim stdDev As Double = 0.0 ' 표준편차 - Dim k As Double = 2.0 ' 오차 계수 - Dim errorRate As Double = 0.0 ' 허용 오차 비율 - Dim weightErrorPlus As Double = 0.0 ' 허용 오차 상한 - Dim weightErrorMinus As Double = 0.0 ' 허용 오차 하한 + 'Dim weights As New List(Of Double)() ' 실측 측정값 저장용 + 'Dim avg As Double = 0.0 ' 평균 + 'Dim stdDev As Double = 0.0 ' 표준편차 + 'Dim k As Double = 2.0 ' 오차 계수 + 'Dim errorRate As Double = 0.0 ' 허용 오차 비율 + 'Dim weightErrorPlus As Double = 0.0 ' 허용 오차 상한 + 'Dim weightErrorMinus As Double = 0.0 ' 허용 오차 하한 Private Sub weightForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load ZeroTimer.Enabled = True @@ -157,19 +157,31 @@ Public Class weightForm End Try End Sub - Private Sub UpdateErrorRange() - If weights.Count >= 2 Then - avg = weights.Average() - stdDev = Math.Sqrt(weights.Select(Function(x) (x - avg) ^ 2).Average()) - errorRate = (k * stdDev) / avg + 'Private Sub UpdateErrorRange() + ' If mainForm.rdbWeightAuto.Checked = True Then + ' ' 자동 모드: 오차 계수(k)로 오차 범위 산출 + ' Dim autoErrorRate As Double = 0.02 ' 예: 2% 오차 + ' weightErrorPlus = weightSum * autoErrorRate + ' weightErrorMinus = weightSum * autoErrorRate - weightErrorPlus = weightSum * errorRate - weightErrorMinus = weightSum * errorRate + ' 'If lbNowWeight.Text >= weightSum - weightErrorMinus And + ' ' lbNowWeight.Text <= weightSum + weightErrorPlus Then + ' 'End If - ' 폼에 오차 범위 표시 - lbError.Text = "(오차: +" & weightErrorPlus.ToString() & ", -" & weightErrorMinus.ToString() & ")" - End If - End Sub + ' Else + ' ' 수동 모드: 평균, 표준편차 기반 오차 범위 산출 + ' If weights.Count >= 2 Then + ' avg = weights.Average() + ' stdDev = Math.Sqrt(weights.Select(Function(x) (x - avg) ^ 2).Average()) + ' errorRate = (k * stdDev) / avg + ' weightErrorPlus = weightSum * errorRate + ' weightErrorMinus = weightSum * errorRate + + ' '폼에 오차 범위 표시 + ' lbError.Text = "(오차: +" & weightErrorPlus.ToString() & ", -" & weightErrorMinus.ToString() & ")" + ' End If + ' End If + 'End Sub 'Private Function weight_compare() As Boolean ' If lbNowWeight.Text >= weightSum - weightErrorMinus And lbNowWeight.Text <= weightSum + weightErrorPlus Then @@ -179,18 +191,22 @@ Public Class weightForm ' End If 'End Function + Private Function weight_compare() As Boolean Dim nowWeight As Double = Double.Parse(lbNowWeight.Text) + Dim autoErrorRate As Double = 0.02 ' 예: 2% 오차 - ' 기준 무게 기반 허용 오차 범위 계산 완료된 상태에서 비교 - Dim upperBound As Double = weightSum + weightErrorPlus - Dim lowerBound As Double = weightSum - weightErrorMinus + Dim weightError As Double = weightSum * autoErrorRate + + Dim upperBound As Double = weightSum + weightError + Dim lowerBound As Double = weightSum - weightError + + ' 폼에 오차 범위 표시 + lbError.Text = "(오차: ±" & weightError.ToString("F2") & ", 허용구간: " & lowerBound.ToString("F2") & " ~ " & upperBound.ToString("F2") & ")" Return (nowWeight >= lowerBound) AndAlso (nowWeight <= upperBound) End Function - - Public Sub delay(ByVal milliSecond As Double) Dim delayTime As Date = Now.AddSeconds(milliSecond / 1000) Do Until Now > delayTime @@ -214,9 +230,9 @@ Public Class weightForm Next Loop - weights.Add(Double.Parse(weight(0))) - weights.Add(Double.Parse(weight(1))) - UpdateErrorRange() + 'weights.Add(Double.Parse(weight(0))) + 'weights.Add(Double.Parse(weight(1))) + 'UpdateErrorRange() If weight(0) - weight(1) < 10 And weight(0) - weight(1) > -10 Then Return True