Пример #1
0
        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!");
        }
Пример #2
0
 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;
 }
Пример #3
0
 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;
 }
Пример #4
0
 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);
     }
 }
Пример #5
0
 public void Start(SignalCardModeEnum mode)
 {
     analogCard.Start(mode);
 }