예제 #1
0
        //--------------------------------------------
        void setCanvas(xMode mode)
        {
            canvasMutex.WaitOne();

            bedCanvas.Children.Clear();

            if (mode == xMode.SETUP)
            {
                bedCanvas.Background = Brushes.Black;
                canvasMode           = xCanvasMode.SETUP;
            }
            else //if ( (mode == xMode.MEASURE) || (mode == xMode.IDLE) )
            {
                if (mode == xMode.MEASURE)
                {
                    bedCanvas.Children.Add(Circle);                                         //내가, 여기는 측정버튼 누르면 원 나오는 곳
                    Canvas.SetLeft(Circle, (bedCanvasWidth * 0.5) - (Circle.Width * 0.5));  //내가, 여기는 측정버튼 누르면 원 나오는 곳
                    Canvas.SetTop(Circle, (bedCanvasHeight * 0.5) - (Circle.Height * 0.5)); //내가, 여기는 측정버튼 누르면 원 나오는 곳

                    bedCanvas.Children.Add(cross1);
                    bedCanvas.Children.Add(cross2);

                    LoadGridLabels();

                    canvasMode = xCanvasMode.MEASURE;
                }
                else
                {
                    double margin = 10;

                    bedCanvas.Children.Add(Center);
                    Canvas.SetLeft(Center, (bedCanvasWidth * 0.5) - (Center.Width * 0.5));
                    Canvas.SetTop(Center, (bedCanvasHeight * 0.5) - (Center.Height * 0.5));
                    Canvas.SetZIndex(Center, 20);

                    bedCanvas.Children.Add(UpLeft);
                    Canvas.SetLeft(UpLeft, 0 + margin);
                    Canvas.SetTop(UpLeft, 0 + margin);

                    bedCanvas.Children.Add(UpRight);
                    Canvas.SetLeft(UpRight, bedCanvasWidth - UpRight.Width - margin);
                    Canvas.SetTop(UpRight, 0 + margin);

                    bedCanvas.Children.Add(DnLeft);
                    Canvas.SetLeft(DnLeft, 0 + margin);
                    Canvas.SetTop(DnLeft, bedCanvasHeight - DnLeft.Height - margin);

                    bedCanvas.Children.Add(DnRight);
                    Canvas.SetLeft(DnRight, bedCanvasWidth - DnRight.Width - margin);
                    Canvas.SetTop(DnRight, bedCanvasHeight - DnRight.Height - margin);

                    canvasMode = xCanvasMode.IDLE;
                }
            }
            canvasMutex.ReleaseMutex();
        }
예제 #2
0
        //---------------------------------------------
        void setMode(xMode mode)
        {
            //--- set seeking mode
            if ((mode == xMode.IDLE) || (mode == xMode.MEASURE))
            {
                seeking = true;
            }
            else
            {
                seeking = false;
            }

            //--- set canvas contents
            setCanvas(mode);
            setButtons(mode);
            currentMode = mode;
        }
예제 #3
0
        //--------------------------------------
        public void tareBtn_Click(object sender, MouseButtonEventArgs args)
        {
            DotButton btn = sender as DotButton;

            if (btn == null)
            {
                return;
            }
            btn.HollowButton     = true;
            ToolTipLabel.Content = "";

            double[] temp = new double[4];
            for (int i = 0; i < 4; i++)
            {
                temp[i] = tare[i];                          //save for cancel event
            }
            stopBtn.Content = (string)btn.ButtonText + " [완료]";

            xMode saveMode = currentMode;

            setMode(xMode.TARE_INFO);

            string msg = "1. 침대 위에 침구 이외의 물건을 모두 치우세요.\n\n" +
                         "2. 침대가 수평을 이루고 있는지 확인하세요.\n\n" +
                         "3. 침대의 중량이 모든 센서에 고르게 분포되도록 센서의 높이를 조절하세요.\n\n" +
                         "4. 확인버튼을 눌러서 메시지 창을 닫으면 '자체중량' 평균값의 측정이 시작됩니다.\n\n" +
                         "5. 창이 닫힌 후 네 모서리의 숫자가 일정한 값에 수렴 할 때까지 기다렸다가 왼쪽의 [완료] 버튼을 누르세요.";

            if (MessageBox.Show(msg, "자체중량 지정", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
            {
                for (int i = 0; i < 4; i++)
                {
                    tare[i] = temp[i];
                }

                setMode(saveMode);

                return;
            }

            samplingCount = 0;

            setMode(xMode.TARE);
        }
예제 #4
0
        //-------------------------------------------
        void setButtons(xMode mode)
        {
            buttonStack.Children.Clear();

            if ((mode == xMode.IDLE) || (mode == xMode.SETUP))
            {
                buttonStack.Children.Add(tareBtn);
                if (tareReady)
                {
                    buttonStack.Children.Add(unitBtn);
                }
                if (unitReady)
                {
                    buttonStack.Children.Add(measureBtn);
                }
                buttonStack.Children.Add(cameraBtn);
                buttonStack.Children.Add(chartBtn);
                buttonStack.Children.Add(closeBtn);
            }
            else
            {
                buttonStack.Children.Add(stopBtn);
            }
        }
예제 #5
0
        //--------------------------------------
        void unitBtn_Click(object sender, MouseButtonEventArgs args)
        {
            DotButton btn = sender as DotButton;

            if (btn == null)
            {
                return;
            }
            btn.HollowButton     = true;
            ToolTipLabel.Content = "";

            stopBtn.Content = (string)btn.ButtonText + " [완료]";

            double[] temp = new double[4];

            for (int i = 0; i < 4; i++)
            {
                temp[i] = unit[i];                          //save for cancel event
            }
            xMode saveMode = currentMode;

            setMode(xMode.UNIT_INFO);

            SensorValuePerKgDlg dlg = new SensorValuePerKgDlg();
            string Msg = "1. 침상의 중앙에 질량을 알고 있는 물체를 놓고 물체의 질량 값(Kg)을 아래의 입력창에 입력하세요\n\n" +
                         "2. 'OK' 버튼을 눌러서 창을 닫으면 입력된 질량에 해당하는 센서의 평균값을 측정합니다.\n\n" +
                         "3. 메시지 창이 닫힌 후 네 모서리의 숫자가 일정한 값에 수렴할 때까지 기다렸다가 왼쪽의 [완료] 버튼을 누르세요.";

            dlg.infoMsg.Text = Msg;
            dlg.samplingMass.Focus();
            dlg.ShowDialog();

            if (dlg.DialogResult == false)
            {
                for (int i = 0; i < 4; i++)
                {
                    unit[i] = temp[i];
                }

                setMode(saveMode);

                return;
            }

            try { samplingMass = Convert.ToDouble(dlg.samplingMass.Text) / 4.0; }
            catch (Exception e)
            {
                MessageBox.Show("적절한 double타입의 값이 아닙니다.", "Error");
                Console.WriteLine(e.Message);

                for (int i = 0; i < 4; i++)
                {
                    unit[i] = temp[i];
                }

                setMode(saveMode);

                return;
            }

            if (samplingMass <= 0.0)
            {
                MessageBox.Show("샘플 질량 값은 0보다 커야 합니다.", "Error");

                for (int i = 0; i < 4; i++)
                {
                    unit[i] = temp[i];
                }

                setMode(saveMode);

                return;
            }
            samplingCount = 0;
            setMode(xMode.UNIT);
        }