private void DisplaySettings() { userInfoLabel.Content = "Hello!"; autoPosStackPanel.IsEnabled = true; preSetStackPanel.IsEnabled = true; autoFeedGrid.IsEnabled = true; //statGrid.IsEnabled = true; logGrid.IsEnabled = true; add2LibButton.IsEnabled = true; // Refresh Pre-set Positions for (int i = 0; i < 4; i++) { if (currentOUS.preSetPosList.ContainsKey(i)) { PreSetPos psp = (PreSetPos)currentOUS.preSetPosList[i]; posButtons[i].Content = psp.posName; } else posButtons[i].Content = "Position " + (i + 1); } // Refresh Position Library if (currentOUS.posLibrary == null) currentOUS.posLibrary = new ObservableCollection<LibPos>(); RefreshCircles(); }
private void loaderNextButton_Click(object sender, RoutedEventArgs e) { if (allSets.basicParas.onArmLoader) { SerialSend(CalculateLoaderSteps(1) + "f"); } else if (currentOUS.preSetPosList.ContainsKey(5)) { PreSetPos psp = (PreSetPos)currentOUS.preSetPosList[5]; ArenaPosition fPos = psp.aPos; ArenaPosition fpPos = new ArenaPosition(fPos.X, fPos.Y, 0); if (currentAP.X == fpPos.X && currentAP.Y == fpPos.Y) { Go2ArenaPos(fPos); SerialSend(CalculateLoaderSteps(1) + "f"); Go2ArenaPos(fpPos); } else { MessageBox.Show("Please move the arm to food grabbing position first.", "Not in Position", MessageBoxButton.OK, MessageBoxImage.Information); } } }
private void preSetPosFoodButton_Click(object sender, RoutedEventArgs e) { if (currentOUS.preSetPosList.ContainsKey(5)) { PreSetPos psp = (PreSetPos)currentOUS.preSetPosList[5]; Go2ArenaPos(new ArenaPosition(psp.aPos.X, psp.aPos.Y, 0)); } }
// To Where User Determined in Pre-set Positions private void preSetPosButton_Click(object sender, RoutedEventArgs e) { Button b = (Button)sender; int index = Convert.ToInt32(b.Tag); if (currentOUS.preSetPosList.ContainsKey(index)) { PreSetPos psp = (PreSetPos)currentOUS.preSetPosList[index]; Go2ArenaPos(psp.aPos); } }
// Circles in Arena private void RefreshCircles() { arenaGrid.Children.Clear(); // Show Library Positions if (currentOUS.showLibPos && currentOUS.posLibrary != null) { foreach (LibPos lp in currentOUS.posLibrary) if (lp.selected) GetEllipse(new ArenaPosition(lp.X, lp.Y, lp.Z), Brushes.LightGray, "lib"); } // Show Pre-set Positions if (currentOUS.showPreSet && currentOUS.preSetPosList != null) { for (int i = 1; i < 6; i++) { if (currentOUS.preSetPosList.ContainsKey(i)) { PreSetPos psp = (PreSetPos)currentOUS.preSetPosList[i]; if (psp.aPos == null) psp.aPos = new ArenaPosition(allSets.basicParas.ArmLength, 0, 0); SolidColorBrush b = Brushes.LightGray; switch (i) { case 4: b = Brushes.AliceBlue; break; case 5: b = Brushes.Gold; break; } GetEllipse(psp.aPos, b, "PreSet"); } } } // Show the Origin if (currentOUS.showOrigin) GetEllipse(new ArenaPosition(allSets.basicParas.ArmLength, 0, 0), Brushes.YellowGreen, "origin"); // Show Current Position GetEllipse(currentAP, Brushes.Tomato, "current"); }
private void Window_Loaded_1(object sender, RoutedEventArgs e) { posName.Add(pos1NameTextBox); posName.Add(pos2NameTextBox); posName.Add(pos3NameTextBox); posName.Add(pos4NameTextBox); posX.Add(pos1xTextBox); posX.Add(pos2xTextBox); posX.Add(pos3xTextBox); posX.Add(pos4xTextBox); posX.Add(pos5xTextBox); posX.Add(posFxTextBox); posY.Add(pos1yTextBox); posY.Add(pos2yTextBox); posY.Add(pos3yTextBox); posY.Add(pos4yTextBox); posY.Add(pos5yTextBox); posY.Add(posFyTextBox); posZ.Add(pos1zTextBox); posZ.Add(pos2zTextBox); posZ.Add(pos3zTextBox); posZ.Add(pos4zTextBox); posZ.Add(pos5zTextBox); posZ.Add(posFzTextBox); for (int i = 0; i < 6; i++) { if (preSets.ContainsKey(i)) { PreSetPos psp = (PreSetPos)preSets[i]; posX[i].Text = Convert.ToString(psp.aPos.X); posY[i].Text = Convert.ToString(psp.aPos.Y); posZ[i].Text = Convert.ToString(psp.aPos.Z); if (i < 4) { posName[i].Text = psp.posName; } } } }
private void Save() { for (int i = 0; i < 6; i++) { string name = Convert.ToString(i); if (i < 4) { name = posName[i].Text; } PreSetPos psp = new PreSetPos(name, Convert.ToDouble(posX[i].Text), Convert.ToDouble(posY[i].Text), Convert.ToDouble(posZ[i].Text)); if (preSets.ContainsKey(i)) { preSets[i] = psp; } else { preSets.Add(i, psp); } } }
private void DoFeedCycle(ArenaPosition ap) { executed = false; currentTrialNum++; PreSetPos foodPos = (PreSetPos)currentOUS.preSetPosList[5]; ArenaPosition preFoodPos = new ArenaPosition(allSets.basicParas.ArmLength, 0, 0); preFoodPos.L = foodPos.aPos.L; preFoodPos.H = foodPos.aPos.H; preFoodPos.R = foodPos.aPos.R; BehaviorRecord behaviorRecord = new BehaviorRecord(currentTrialNum, ap, foodPos.aPos); // Move to Food Loading Preparation Position InvokeGo2ArenaPos(preFoodPos); CheckExecuted(); // Food Catching Position InvokeGo2ArenaPos(foodPos.aPos); CheckExecuted(); // Get One New Food InvokeSerialSend(CalculateLoaderSteps(1) + "f"); CheckExecuted(); InvokeGo2ArenaPos(preFoodPos); CheckExecuted(); // Waiting for Trial Begin Trigger if (currentOUS.behaviorParas.manualBegin) { // Note while (!triggered) { Thread.Sleep(10); CheckPoint(); } // Remove Note triggered = false; } // Timing of Imaging Start if (currentOUS.behaviorParas.trigImg) { imgTimer = new Timer(InvokeSerialSend, "i", TimeSpan.FromMilliseconds(currentOUS.behaviorParas.imgDelay), TimeSpan.FromMilliseconds(-1)); } // Move to Grabbing Position InvokeGo2ArenaPos(ap); CheckExecuted(); InvokePrint("Trial Starts @ " + DateTime.Now.Minute + ":" + DateTime.Now.Second + ":" + DateTime.Now.Millisecond / 10); // Timing of Cue if (currentOUS.behaviorParas.manualCue) { // Note while (!triggered) { Thread.Sleep(10); CheckPoint(); } // Remove Note triggered = false; } else { int halfWindow = (int)Math.Round(currentOUS.behaviorParas.cueWindow / 2); Random randGenerator = new Random(); double randCueDelay = currentOUS.behaviorParas.cueDelay + randGenerator.Next(-halfWindow, halfWindow); Thread.Sleep(TimeSpan.FromMilliseconds(randCueDelay)); } MainWindow.MWInstance.Dispatcher.Invoke((ThreadStart) delegate { SendCue(); }); // Timing of Trial End if (currentOUS.behaviorParas.manualEnd) { // Note while (!triggered) { Thread.Sleep(10); CheckPoint(); } // Remove Note triggered = false; } else { Thread.Sleep(TimeSpan.FromMilliseconds(currentOUS.behaviorParas.reachLimit)); } InvokePrint("Trial Ends @ " + DateTime.Now.Minute + ":" + DateTime.Now.Second + ":" + DateTime.Now.Millisecond / 10); // Cancel Timers (Even when they exceed waiting time) try { imgTimer.Dispose(); } catch (Exception) { } // Move to Food Loading Preparation Position InvokeGo2ArenaPos(preFoodPos); CheckExecuted(); InvokeSerialSend("c"); //logCurrentSession.behaviorList.Add(behaviorRecord); }