Esempio n. 1
0
        public bool SavePref()
        {
            bool       ret         = true;
            Preference perfInst    = Preference.GetInstace();
            string     curVsmdPort = cmbPort.SelectedItem.ToString();
            int        curBaudrate = int.Parse(cmbBaudrate.SelectedItem.ToString());
            bool       pumpExist   = bool.Parse(ConfigurationManager.AppSettings["PumpExist"]);
            string     pumpPort    = perfInst.PumpPort;

            if (pumpExist)
            {
                cmbPumpPort.SelectedItem.ToString();
            }
            if (perfInst.VsmdPort != curVsmdPort ||
                perfInst.Baudrate != curBaudrate ||
                perfInst.PumpPort != pumpPort)
            {
                perfInst.VsmdPort = curVsmdPort;
                perfInst.Baudrate = curBaudrate;
                perfInst.PumpPort = pumpPort;
                ret = perfInst.Save();
            }


            return(ret);
        }
Esempio n. 2
0
        private void InitBoardSettings()
        {
            cmbBoards.Items.Clear();
            BoardSetting.GetInstance().GetAllBoardMetaes().ForEach((meta) =>
            {
                cmbBoards.Items.Add(meta);
            }
                                                                   );
            Preference perfInst = Preference.GetInstace();

            if (cmbBoards.Items.Count > 0)
            {
                if (perfInst.HasPreference)
                {
                    BoardMeta findBoardMeta = BoardSetting.GetInstance().GetAllBoardMetaes().Find((meta) =>
                    {
                        return(meta.ID == perfInst.BoardID);
                    });
                    if (findBoardMeta != null)
                    {
                        cmbBoards.SelectedItem = findBoardMeta;
                    }
                }
                else
                {
                    cmbBoards.SelectedIndex = 0;
                }
            }
        }
Esempio n. 3
0
 private void MainFrm_Load(object sender, EventArgs e)
 {
     InitStatusBar();
     Preference.GetInstace().Load();
     GeneralSettings.GetInstance().LoadGeneralSettings();
     BoardSetting.GetInstance().LoadBoardSettings();
     InitVsmdConnection();
 }
Esempio n. 4
0
        /// <summary>
        ///
        /// </summary>
        private async void DoPipetting()
        {
            //Logger.Instance.Write("DoPipetting");
            log.Info("Do Pipetting");
            VsmdController vsmdController  = VsmdController.GetVsmdController();
            PumpController pumpController  = PumpController.GetPumpController();
            BoardSetting   curBoardSetting = BoardSetting.GetInstance();

            await BeforeMove(m_selectedTubes.Count);

            int touchDelaySeconds = (int)(1000 * curBoardSetting.CurrentBoard.DelaySeconds);
            int delayMicroSecondsBetweenSamples = (int)(Preference.GetInstace().DelaySeconds * 1000);
            int blockNum, row, col = 1;

            //await vsmdController.SetS3Mode(VsmdAxis.Z, 1);
            for (int i = m_pipettingIndex + 1; i < m_sortedTubesArr.Length; i++)
            {
                if (m_dripStatus != PipettingStatus.Moving)
                {
                    break;
                }
                JObject obj = (JObject)m_sortedTubesArr[i];
                GetPositionInfo(obj, out blockNum, out row, out col);
                SetPipettingWell(blockNum, row, col);
                int xPos   = curBoardSetting.Convert2PhysicalPos(VsmdAxis.X, blockNum, col);
                int offset = curBoardSetting.CurrentBoard.TouchEdgeOffset;
                await vsmdController.MoveTo(VsmdAxis.X, xPos);

                await vsmdController.MoveTo(VsmdAxis.Y, curBoardSetting.Convert2PhysicalPos(VsmdAxis.Y, blockNum, row));

                // TODO
                await vsmdController.MoveTo(VsmdAxis.Z, curBoardSetting.CurrentBoard.ZDispense);

                // start pipetting
                await pumpController.SwitchOnOff(i);

                // wait several seconds, this time should be changed according to the volume dispensed
                Thread.Sleep(delayMicroSecondsBetweenSamples);
                await vsmdController.MoveTo(VsmdAxis.X, xPos + offset);

                Thread.Sleep(touchDelaySeconds);
                await vsmdController.MoveTo(VsmdAxis.Z, curBoardSetting.CurrentBoard.ZTravel);

                // change the UI to start
                Thread.Sleep(100);

                MoveCallBack(blockNum, row, col);
                m_pipettingIndex = i;
            }

            bool bok = await AfterMove();

            log.InfoFormat("finished pipetting, result is: {0}", bok);
            //Logger.Instance.Write("error happened in afterMove");
        }
Esempio n. 5
0
        public bool SavePref()
        {
            bool       ret               = true;
            Preference perfInst          = Preference.GetInstace();
            BoardMeta  selectedBoardMeta = cmbBoards.SelectedItem as BoardMeta;

            if (selectedBoardMeta != null && selectedBoardMeta.ID != perfInst.BoardID)
            {
                perfInst.BoardID = selectedBoardMeta.ID;
                ret = perfInst.Save();
            }

            return(ret);
        }
Esempio n. 6
0
        private void InitBoardSettings()
        {
            cmbBoards.Items.Clear();
            txtDelaySeconds.Text = Preference.GetInstace().DelaySeconds.ToString();
            var allMetas = BoardSetting.GetInstance().GetAllBoardMetaes();
            List <BoardMeta> sortedMetas = new List <BoardMeta>();

            if (BoardSetting.GetInstance().NamesOrder.Count > 0)
            {
                foreach (var boardName in BoardSetting.GetInstance().NamesOrder)
                {
                    var validNameMetas = allMetas.Where(x => x.Name == boardName);
                    if (validNameMetas.Count() > 0)
                    {
                        sortedMetas.Add(validNameMetas.First());
                        //allMetas.Remove(validNameMetas.First());
                    }
                }
            }

            foreach (var meta in allMetas) //add remaining
            {
                if (!sortedMetas.Contains(meta))
                {
                    sortedMetas.Add(meta);
                }
            }
            sortedMetas.ForEach(x => cmbBoards.Items.Add(x));

            Preference perfInst = Preference.GetInstace();

            if (cmbBoards.Items.Count > 0)
            {
                if (perfInst.HasPreference)
                {
                    BoardMeta findBoardMeta = BoardSetting.GetInstance().GetAllBoardMetaes().Find((meta) =>
                    {
                        return(meta.ID == perfInst.BoardID);
                    });
                    if (findBoardMeta != null)
                    {
                        cmbBoards.SelectedItem = findBoardMeta;
                    }
                }
                else
                {
                    cmbBoards.SelectedIndex = 0;
                }
            }
        }
Esempio n. 7
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();
        }
Esempio n. 8
0
        public bool SavePref()
        {
            bool       ret         = true;
            Preference perfInst    = Preference.GetInstace();
            string     curVsmdPort = cmbPort.SelectedItem.ToString();
            int        curBaudrate = int.Parse(cmbBaudrate.SelectedItem.ToString());
            string     pumpPort    = cmbPumpPort.SelectedItem.ToString();

            if (perfInst.VsmdPort != curVsmdPort ||
                perfInst.Baudrate != curBaudrate ||
                perfInst.PumpPort != pumpPort)
            {
                perfInst.VsmdPort = curVsmdPort;
                perfInst.Baudrate = curBaudrate;
                perfInst.PumpPort = pumpPort;
                ret = perfInst.Save();
            }


            return(ret);
        }
Esempio n. 9
0
        private void ConnectVsmd_Load(object sender, EventArgs e)
        {
            cmbPort.Items.AddRange(SerialPort.GetPortNames());
            cmbPumpPort.Items.AddRange(SerialPort.GetPortNames());
            if (VsmdController.GetVsmdController().IsInitialized())
            {
                //lblCurInfo.Text = VsmdController.GetVsmdController().GetPort() + ", " + VsmdController.GetVsmdController().GetBaudrate() + ", " + PumpController.GetPumpController().GetPort();
                int idx = cmbPort.Items.IndexOf(VsmdController.GetVsmdController().GetPort());
                if (idx > -1)
                {
                    cmbPort.SelectedIndex = idx;
                }
                idx = cmbBaudrate.Items.IndexOf(VsmdController.GetVsmdController().GetBaudrate().ToString());
                if (idx > -1)
                {
                    cmbBaudrate.SelectedIndex = idx;
                }
                idx = cmbPumpPort.Items.IndexOf(PumpController.GetPumpController().GetPort());
                if (idx > -1)
                {
                    cmbPumpPort.SelectedIndex = idx;
                }
                UpdateControlState();
                return;
            }
            else
            {
                UpdateControlState();
            }

            if (Preference.GetInstace().HasPreference)
            {
                int idx = cmbPort.Items.IndexOf(Preference.GetInstace().VsmdPort);
                if (idx > -1)
                {
                    cmbPort.SelectedIndex = idx;
                }
                idx = cmbBaudrate.Items.IndexOf(Preference.GetInstace().Baudrate.ToString());
                if (idx > -1)
                {
                    cmbBaudrate.SelectedIndex = idx;
                }
                idx = cmbPumpPort.Items.IndexOf(Preference.GetInstace().PumpPort);
                if (idx > -1)
                {
                    cmbPumpPort.SelectedIndex = idx;
                }
            }
            else
            {
                if (cmbPort.Items.Count > 0)
                {
                    cmbPort.SelectedIndex     = 0;
                    cmbPumpPort.SelectedIndex = 0;
                }
                cmbBaudrate.SelectedIndex = 2;
            }
            IsClosed = false;

            if (GeneralSettings.GetInstance().AutoConnect)
            {
                btnConnect_Click(null, null);
            }
        }
Esempio n. 10
0
        private async void btnConnect_Click(object sender, EventArgs e)
        {
            if (VsmdController.GetVsmdController().IsInitialized())
            {
                VsmdController.GetVsmdController().Dispose();
                PumpController.GetPumpController().Dispose();
                UpdateControlState();
                return;
            }

            if (m_isConnecting)
            {
                return;
            }

            if (cmbPort.SelectedItem == null)
            {
                StatusBar.DisplayMessage(VsmdWorkstation.Controls.MessageType.Error, "电机端口不能为空!");
                return;
            }
            string vsmdPort = cmbPort.SelectedItem.ToString();

            bool       pumpExist = PumpController.GetPumpController().PumpExist;
            InitResult pumpRet   = new InitResult();

            pumpRet.IsSuccess = true;
            pumpRet.Message   = "";
            if (pumpExist)
            {
                if (cmbPumpPort.SelectedItem == null)
                {
                    StatusBar.DisplayMessage(VsmdWorkstation.Controls.MessageType.Error, "蠕动泵端口不能为空!");
                    return;
                }
                string pumpPort = cmbPumpPort.SelectedItem.ToString();
                if (vsmdPort == pumpPort)
                {
                    StatusBar.DisplayMessage(VsmdWorkstation.Controls.MessageType.Error, "电机端口与蠕动泵端口不能相同!");
                    return;
                }
                pumpRet = PumpController.GetPumpController().Init(pumpPort);
                if (pumpRet.IsSuccess)
                {
                    Preference.GetInstace().PumpPort = pumpPort;
                }
                Preference.GetInstace().Save();
            }


            int baudrate = int.Parse(cmbBaudrate.SelectedItem.ToString());

            m_isConnecting = true;
            InitResult vsmdRet = await VsmdController.GetVsmdController().Init(vsmdPort, baudrate);

            if (m_initCB != null)
            {
                InitResult connectRet = new InitResult();
                connectRet.IsSuccess = vsmdRet.IsSuccess && pumpRet.IsSuccess;
                connectRet.Message   = vsmdRet.IsSuccess ? pumpRet.Message : vsmdRet.Message;
                m_initCB(connectRet);
                m_isConnecting = false;
                //m_initCB = null;
            }
            if (vsmdRet.IsSuccess && pumpRet.IsSuccess)
            {
                Preference.GetInstace().VsmdPort = vsmdPort;
                GoHome();
                this.Close();
            }
        }