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); }
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; } } }
private void MainFrm_Load(object sender, EventArgs e) { InitStatusBar(); Preference.GetInstace().Load(); GeneralSettings.GetInstance().LoadGeneralSettings(); BoardSetting.GetInstance().LoadBoardSettings(); InitVsmdConnection(); }
/// <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"); }
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); }
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; } } }
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(); }
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); }
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); } }
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(); } }