void ISignalCard.Start(SignalCardStartArgs args) { this.m_IsRunning = false; this.m_Channels = args.Channels; this.m_ScanBuffer = new ushort[args.FrameSize, args.Channels]; ((ISignalCard)this).Stop(); this.m_Mode = args.Mode; this.m_Logger.DebugFormat("{0} > {1}", base.GetType().Name, "Setup card..."); this.m_Session = new Session(); this.m_Logger.DebugFormat("{0} > {1}", base.GetType().Name, "Create output channels"); this.m_Session.CreateAOChannel($"pwrdaq://dev{this.m_DeviceIndex}/Ao0:{7}", -10.0, 10.0); switch (this.m_Mode) { case SignalCardModeEnum.BufferedOut: this.m_Logger.DebugFormat("{0} > {1}", base.GetType().Name, "Configure timing for buffered output"); this.m_Session.ConfigureTimingForBufferedIO(args.FrameSize, TimingClockSource.Internal, (double)args.Rate, DigitalEdge.Rising, TimingDuration.Continuous); this.m_Session.GetTiming().SetTimeout(args.Timeout); this.m_Session.GetDataStream().SetNumberOfFrames(args.BufferFrames); this.m_Session.GetDataStream().SetNumberOfScans(args.FrameSize); this.m_Session.GetDataStream().SetOverUnderRun(0); this.m_Session.GetDataStream().SetRegenerate(0); break; case SignalCardModeEnum.SingleOut: this.m_Logger.DebugFormat("{0} > {1}", base.GetType().Name, "Configure timing for simple io"); this.m_Session.ConfigureTimingForSimpleIO(); break; } this.m_Writer = new AnalogRawWriter(this.m_Session.GetDataStream()); this.m_Logger.DebugFormat("{0} > {1}", base.GetType().Name, "Setup card done!"); }
public SignalCardStartArgs(SignalCardModeEnum mode, int rate, int channels, int bufferFrames, int frameSize, int timeout) { this.Mode = mode; this.Rate = rate; this.Channels = channels; this.BufferFrames = bufferFrames; this.FrameSize = frameSize; this.Timeout = timeout; }
private void BeamStart(SignalCardModeEnum mode) { // beamScanFactory = new BeamScanFactory(_beamSetup, _beamScan, _beamState); beamScanFactory.SetBeamScan(_beamScan); beamScanFactory.SetBeamSetup(_beamSetup); beamScanFactory.SetBeamState(_beamState); beamScanFactory.Startup(); beamScanFactory.Start(mode); _beamState.CurrentState = BeamState.Running; }
public void Start(SignalCardModeEnum mode) { System.Timers.Timer timer = new System.Timers.Timer(); try { //临时注释 this.Stop(); timer.Start(); this.m_Mode = mode; this.m_Logger.DebugFormat("{0} > {1}", base.GetType().Name, "Starting analog out in {0} mode...", mode.ToString()); this.UpdateSettings(); this.m_SignalCard.Start(new SignalCardStartArgs(mode, this.m_Beam.Setup.Rate, 8, this.m_Beam.Setup.NumberOfFrames, this.m_Beam.Setup.BufferFrameSize, this.m_Beam.Setup.WriteTimeout)); if (this.m_Mode == SignalCardModeEnum.BufferedOut) { if (this.m_SignalCardThread != null) { throw new ApplicationException("Signalcard already started!"); } this.m_Logger.DebugFormat("{0} > {1}", base.GetType().Name, "Starting analog out thread"); Thread thread = new Thread(new ThreadStart(this.SignalCardThreadExecute)) { Name = "AnalogOutCard.SignalCardThread", Priority = ThreadPriority.Normal, IsBackground = false }; this.bPreHeat = true; this.m_SignalCardThread = thread; this.m_SignalCardThread.Start(); } else if (this.m_Mode == SignalCardModeEnum.SingleOut) { double[] dummy = this.GetDummy(); this.m_SignalCard.Write(dummy); } this.m_Logger.DebugFormat("{0} > {1}", base.GetType().Name, "Analog out started..."); } catch (Exception exception) { this.m_Logger.FatalFormat("{0} > {1}", base.GetType().Name, "Error in Start!" + exception.ToString()); throw; } finally { timer.Stop(); // this.m_Logger.DebugFormat("{0} > {1}", base.GetType().Name, "Startup time: " + timer.Duration); } }
public void Start(SignalCardModeEnum mode) { analogCard.Start(mode); }