//-------------------------------------------- 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(); }
//--------------------------------------------- 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; }
//-------------------------------------- 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); }
//------------------------------------------- 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); } }
//-------------------------------------- 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); }