// calling this method starts acquisition public void Start(BlockConfig config) { this.config = config; acquireThread = new Thread(new ThreadStart(this.Acquire)); acquireThread.Name = "BlockHead Acquisitor"; acquireThread.Priority = ThreadPriority.Normal; backendState = AcquisitorState.running; acquireThread.Start(); }
// this function creates a default BlockConfig that is sufficient to // get BlockHead running. The recommended way of making a new config // is to use BlockHead to save this config and then modify it. private void MakeDefaultBlockConfig() { const int CODE_LENGTH = 12; config = new BlockConfig(); DigitalModulation dm = new DigitalModulation(); dm.Name = "E"; dm.Waveform = new Waveform("E Modulation", CODE_LENGTH); dm.Waveform.Code = new bool[] { true, true, false, false, false, false, false, false, false, false, false, false }; config.DigitalModulations.Add(dm); DigitalModulation pi = new DigitalModulation(); pi.Name = "PI"; pi.Waveform = new Waveform("Pi Modulation", CODE_LENGTH); pi.Waveform.Code = new bool[] { false, false, false, false, false, false, false, false, false, false, false, true }; config.DigitalModulations.Add(pi); AnalogModulation b = new AnalogModulation(); b.Name = "B"; b.Waveform = new Waveform("B Modulation", CODE_LENGTH); b.Waveform.Code = new bool[] { false, false, false, false, false, false, false, false, false, false, false, true }; b.DelayAfterSwitch = 5; b.Centre = 0; b.Step = 0.46; config.AnalogModulations.Add(b); AnalogModulation db = new AnalogModulation(); db.Name = "DB"; db.Waveform = new Waveform("DB Modulation", CODE_LENGTH); db.Waveform.Code = new bool[] { false, false, false, false, false, false, false, false, false, false, true, false }; db.DelayAfterSwitch = 5; db.Centre = 0; db.Step = 0.1; config.AnalogModulations.Add(db); AnalogModulation rf1A = new AnalogModulation(); rf1A.Name = "RF1A"; rf1A.Waveform = new Waveform("rf1 Amplitude modulation", CODE_LENGTH); rf1A.Waveform.Code = new bool[] { false, false, false, false, false, false, false, false, false, false, true, false }; rf1A.DelayAfterSwitch = 0; rf1A.Centre = 1.5; rf1A.Step = 0.1; config.AnalogModulations.Add(rf1A); AnalogModulation rf2A = new AnalogModulation(); rf2A.Name = "RF2A"; rf2A.Waveform = new Waveform("rf2 Amplitude modulation", CODE_LENGTH); rf2A.Waveform.Code = new bool[] { false, false, false, false, false, false, false, false, false, false, true, false }; rf2A.DelayAfterSwitch = 0; rf2A.Centre = 2.5; rf2A.Step = 0.1; config.AnalogModulations.Add(rf2A); AnalogModulation rf1F = new AnalogModulation(); rf1F.Name = "RF1F"; rf1F.Waveform = new Waveform("rf1 frequency modulation", CODE_LENGTH); rf1F.Waveform.Code = new bool[] { false, false, false, false, false, false, false, false, false, false, true, false }; rf1F.DelayAfterSwitch = 0; rf1F.Centre = 2.5; rf1F.Step = 0.1; config.AnalogModulations.Add(rf1F); AnalogModulation rf2F = new AnalogModulation(); rf2F.Name = "RF2F"; rf2F.Waveform = new Waveform("rf2 frequency modulation", CODE_LENGTH); rf2F.Waveform.Code = new bool[] { false, false, false, false, false, false, false, false, false, false, true, false }; rf2F.DelayAfterSwitch = 0; rf2F.Centre = 2.5; rf2F.Step = 0.1; config.AnalogModulations.Add(rf2F); AnalogModulation lf1 = new AnalogModulation(); lf1.Name = "LF1"; lf1.Waveform = new Waveform("laser frequency 1 modulation", CODE_LENGTH); lf1.Waveform.Code = new bool[] { false, true, false, true, false, false, false, false, false, false, false, false }; lf1.DelayAfterSwitch = 0; lf1.Centre = 2.5; lf1.Step = 0.05; config.AnalogModulations.Add(lf1); AnalogModulation lf2 = new AnalogModulation(); lf2.Name = "LF2"; lf2.Waveform = new Waveform("laser frequency 2 modulation", CODE_LENGTH); lf2.Waveform.Code = new bool[] { false, false, false, false, false, false, false, false, false, false, true, false }; lf2.DelayAfterSwitch = 0; lf2.Centre = 1.0; lf2.Step = 0.01; config.AnalogModulations.Add(lf2); config.Settings["codeLength"] = CODE_LENGTH; config.Settings["numberOfPoints"] = 4096; config.Settings["pgClockFrequency"] = 1000000; config.Settings["eDischargeTime"] = 1000; config.Settings["eBleedTime"] = 1000; config.Settings["eSwitchTime"] = 500; config.Settings["eChargeTime"] = 1000; config.Settings["magnetCalibration"] = 16.5; config.Settings["eState"] = true; config.Settings["bState"] = true; config.Settings["rfState"] = true; config.Settings["ePlus"] = 8.0; config.Settings["eMinus"] = -8.0; config.Settings["gtPlus"] = 1.6; config.Settings["gtMinus"] = -1.6; config.Settings["gbPlus"] = 1.6; config.Settings["gbMinus"] = -1.6; }
private BlockConfig getBlockConfig(int blockID) { BlockConfig bc = new BlockConfig(); using (BlockDatabaseDataContext dc = new BlockDatabaseDataContext()) { IEnumerable<DBBlock> bs = from DBBlock dbb in dc.DBBlocks where (dbb.blockID == blockID) select dbb; // there should only be one item - better to check or not? DBBlock dbbb = bs.First(); bc = deserializeBC(dbbb.configBytes.ToArray()); } return bc; }
private void LoadConfig(FileStream fs) { config = (BlockConfig)serializer.Deserialize(fs); }