예제 #1
0
 public void ResumeMove()
 {
     m_isFromPause = true;
     m_dripStatus  = PipettingStatus.Moving;
     m_moveThread  = new Thread(new ThreadStart(DoPipetting));
     m_moveThread.Start();
 }
예제 #2
0
 private void OnPipettingFinished()
 {
     m_pipettingStatus = PipettingStatus.Idle;
     this.Invoke(new DelDripFinished(delegate
     {
         UpdateButtons();
     }));
 }
예제 #3
0
        public void StopMove()
        {
            PipettingStatus preMode = m_dripStatus;

            m_dripStatus = PipettingStatus.Idle;
            m_selectedTubes.Clear();
            VsmdController.GetVsmdController().Stop();
            if (preMode == PipettingStatus.PauseMove)
            {
                AfterMove();
            }
        }
예제 #4
0
 private void btnPause_Click(object sender, EventArgs e)
 {
     if (m_pipettingStatus == PipettingStatus.Moving)
     {
         m_externalObj.PauseMove();
         m_pipettingStatus = PipettingStatus.PauseMove;
         btnPause.Text     = "继续滴液";
     }
     else if (m_pipettingStatus == PipettingStatus.PauseMove)
     {
         m_externalObj.ResumeMove();
         m_pipettingStatus = PipettingStatus.Moving;
         btnPause.Text     = "暂停滴液";
     }
     UpdateButtons();
 }
예제 #5
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            double val = 0;

            bool bok = double.TryParse(txtDelaySeconds.Text, out val);

            if (!bok)
            {
                MessageBox.Show("体积必须为数字!");
                return;
            }
            if (val == 0)
            {
                MessageBox.Show("体积必须大于0!");
                return;
            }

            Preference.GetInstace().DelaySeconds = val;

            int cnt = 0;

            bok = int.TryParse(txtSampleCnt.Text, out cnt);
            if (!bok)
            {
                MessageBox.Show("样本数必须为数字!");
                return;
            }
            if (val == 0)
            {
                MessageBox.Show("样本数必须大于0!");
                return;
            }
            if (!m_manuallySelect)
            {
                m_externalObj.ResetBoard();
                m_externalObj.SelectTubes(cnt);
            }
            Preference.GetInstace().Save();
            //Logger.Instance.Write("about to start pipetting");
            m_externalObj.Move();
            m_pipettingStatus = PipettingStatus.Moving;
            runInfoModel.AddRunInfo(cmbProjectName.SelectedItem.ToString(), int.Parse(txtSampleCnt.Text));
            UpdateButtons();
        }
예제 #6
0
        private async Task <bool> AfterMove()
        {
            //await VsmdController.GetVsmdController().Off(VsmdAxis.X);
            //await VsmdController.GetVsmdController().Off(VsmdAxis.Y);
            bool bok = await VsmdController.GetVsmdController().MoveTo(VsmdAxis.Y, 100);

            if (m_dripStatus != PipettingStatus.PauseMove)
            {
                CallJS("JsExecutor.afterMove();");

                m_isFromPause = false;

                m_dripStatus = PipettingStatus.Idle;
                m_selectedTubes.Clear();
                if (onPipettingFinished != null)
                {
                    onPipettingFinished();
                }
            }
            return(bok);
        }
예제 #7
0
 private void btnStop_Click(object sender, EventArgs e)
 {
     m_externalObj.StopMove();
     m_pipettingStatus = PipettingStatus.Idle;
     UpdateButtons();
 }
예제 #8
0
 private async Task <bool> BeforeMove(int wellCnt)
 {
     m_dripStatus = PipettingStatus.Moving;
     CallJS("JsExecutor.beforeMove();");
     return(true);
 }
예제 #9
0
 public void PauseMove()
 {
     CallJS("JsExecutor.pauseMove()");
     m_dripStatus = PipettingStatus.PauseMove;
 }