// Use this for initialization void Start() { sample = new string[lslChannelCount]; lslStreamInfo = new LSL.liblsl.StreamInfo( lslStreamName, lslStreamType, lslChannelCount, nominalRate, lslChannelFormat, unique_source_id); lslOutlet = new LSL.liblsl.StreamOutlet(lslStreamInfo); }
// This restores the last Study/probe used public void RegisterQuickStart(object sender, EventArgs e) { string path = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); path = System.IO.Path.Combine(path, "LastSettings.xml"); // Read the Config.xml file XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNodeList elemList; elemList = doc.GetElementsByTagName("Investigator"); string investigator = elemList[0].InnerXml.Trim(); elemList = doc.GetElementsByTagName("Study"); string study = elemList[0].InnerXml.Trim(); elemList = doc.GetElementsByTagName("probefile"); string probefile = elemList[0].InnerXml.Trim(); int[] lambda = MainClass.win.settings.system_Info.wavelengths; nirs.core.Probe probe = nirs.io.LoadProbe(probefile, lambda); // Add channels for Optical Density, HbO2, and HbR int cnt = probe.ChannelMap.Length; nirs.ChannelMap[] ChannelMap = new nirs.ChannelMap[cnt * 2 + 2 * cnt / probe.numWavelengths]; for (int ii = 0; ii < cnt; ii++) { ChannelMap[ii] = probe.ChannelMap[ii]; } for (int ii = 0; ii < cnt; ii++) { ChannelMap[ii + cnt] = probe.ChannelMap[ii]; ChannelMap[ii + cnt].datasubtype = string.Format("ΔOD {0}nm", ChannelMap[ii].wavelength); } for (int ii = 0; ii < cnt / probe.numWavelengths; ii++) { ChannelMap[ii + 2 * cnt] = probe.ChannelMap[ii]; ChannelMap[ii + 2 * cnt].datasubtype = "HbO2"; } for (int ii = cnt / probe.numWavelengths; ii < cnt; ii++) { ChannelMap[ii + 2 * cnt] = probe.ChannelMap[ii]; ChannelMap[ii + 2 * cnt].datasubtype = "Hb"; } probe.ChannelMap = ChannelMap; probe.measlistAct = new bool[probe.ChannelMap.Length]; for (int ii = 0; ii < probe.ChannelMap.Length; ii++) { probe.measlistAct[ii] = true; } Gdk.Color[] cmap = new Gdk.Color[probe.ChannelMap.Length]; for (int ii = 0; ii < probe.numChannels; ii++) { cmap[ii] = probe.colormap[ii]; cmap[probe.numChannels + ii] = probe.colormap[ii]; cmap[probe.numChannels * 2 + ii] = probe.colormap[ii]; } probe.colormap = cmap; nirsdata = new List <nirs.core.Data>(); for (int i = 0; i < MainClass.devices.Length; i++) { nirs.core.Data data = new nirs.core.Data { demographics = new nirs.Dictionary() }; data.demographics.set("SubjID", ""); data.demographics.set("Investigator", investigator); data.demographics.set("Study", study); data.demographics.set("Gender", ""); data.demographics.set("Group", ""); data.demographics.set("Age", ""); data.demographics.set("Instrument", MainClass.win.settings.SYSTEM); data.demographics.set("head_circumference", ""); data.demographics.set("Technician", ""); data.demographics.set("comments", ""); DateTime now = DateTime.Now; data.demographics.set("scan_date", now.ToString("F")); data.probe = probe.Clone(); nirsdata.Add(data); } ListStore ClearList = new ListStore(typeof(string)); MainClass.win._handles.whichdata.Model = ClearList; List <string> datatypes = new List <string>(); for (int ii = 0; ii < probe.ChannelMap.Length; ii++) { datatypes.Add(probe.ChannelMap[ii].datasubtype); } datatypes = datatypes.Distinct().ToList(); foreach (string s in datatypes) { MainClass.win._handles.whichdata.AppendText(s); } for (int dI = probe.numDet; dI < MainClass.win._handles.detectors.Count; dI++) { MainClass.win._handles.detectors[dI].frame.Sensitive = false; MainClass.win._handles.detectors[dI].vScale.Sensitive = false; MainClass.win._handles.detectors[dI].vScale.Value = 0; MainClass.win._handles.detectors[dI].led.Color = new Gdk.Color(93, 93, 93); } for (int sI = probe.numSrc; sI < MainClass.win._handles.lasers.Count; sI++) { MainClass.win._handles.lasers[sI].frame.Sensitive = false; for (int wI = 0; wI < MainClass.win._handles.lasers[sI].buttons.Length; wI++) { MainClass.win._handles.lasers[sI].spinButtons[wI].Sensitive = false; MainClass.win._handles.lasers[sI].buttons[wI].Sensitive = false; } } #if ADDLSL MainClass.win.dataLSL = new LSL.liblsl.StreamOutlet[MainClass.devices.Length]; for (int ii = 0; ii < MainClass.devices.Length; ii++) { int fs = MainClass.devices[ii].GetSampleRate(); string name = string.Format("NIRSRecordIRData_{0}", ii + 1); LSL.liblsl.StreamInfo info = new LSL.liblsl.StreamInfo(name, "NIRS", MainClass.win.nirsdata[ii].probe.numChannels, (double)fs, LSL.liblsl.channel_format_t.cf_int32); MainClass.win.dataLSL[ii] = new LSL.liblsl.StreamOutlet(info); } #endif comboboxdeviceDemo.Active = 0; MainClass.win._handles.whichdata.Active = 0; MainClass.win.EnableControls(true); MainClass.win._handles.SDGplot.QueueDraw(); }
protected void RegisterAccept(object sender, EventArgs e) { int i = combobox_hyperscanning.Active; demo[i].set("SubjID", comboboxentry_subjID.ActiveText); demo[i].set("Investigator", combobox_investigators.ActiveText); demo[i].set("Study", combobox_studies.ActiveText); demo[i].set("Gender", demo_gender.ActiveText); demo[i].set("Group", demo_group.Text); demo[i].set("Age", demo_age.Text); demo[i].set("Instrument", MainClass.win.settings.SYSTEM); demo[i].set("head_circumference", demo_headsize.Text); demo[i].set("Technician", demo_tecnician.Text); demo[i].set("comments", demo_comments.Buffer.Text); // Add channels for Optical Density, HbO2, and HbR int cnt = probe.ChannelMap.Length; nirs.ChannelMap[] ChannelMap = new nirs.ChannelMap[cnt * 2 + 2 * cnt / probe.numWavelengths]; for (int ii = 0; ii < cnt; ii++) { ChannelMap[ii] = probe.ChannelMap[ii]; } for (int ii = 0; ii < cnt; ii++) { ChannelMap[ii + cnt] = probe.ChannelMap[ii]; ChannelMap[ii + cnt].datasubtype = String.Format("ΔOD {0}nm", ChannelMap[ii].wavelength); } for (int ii = 0; ii < cnt / probe.numWavelengths; ii++) { ChannelMap[ii + 2 * cnt] = probe.ChannelMap[ii]; ChannelMap[ii + 2 * cnt].datasubtype = "HbO2"; } for (int ii = cnt / probe.numWavelengths; ii < cnt; ii++) { ChannelMap[ii + 2 * cnt] = probe.ChannelMap[ii]; ChannelMap[ii + 2 * cnt].datasubtype = "Hb"; } probe.ChannelMap = ChannelMap; for (int dId = 0; dId < MainClass.devices.Length; dId++) { nirs.core.Data data = new nirs.core.Data(); data.demographics = demo[dId]; data.demographics.set("Investigator", combobox_investigators.ActiveText); data.demographics.set("Study", combobox_studies.ActiveText); data.demographics.set("Instrument", MainClass.win.settings.SYSTEM); DateTime now = DateTime.Now; data.demographics.set("scan_date", now.ToString("F")); data.probe = probe.Clone(); data.probe.measlistAct = new bool[data.probe.ChannelMap.Length]; for (int ii = 0; ii < data.probe.ChannelMap.Length; ii++) { data.probe.measlistAct[ii] = true; } Gdk.Color[] cmap = new Gdk.Color[data.probe.ChannelMap.Length]; for (int ii = 0; ii < data.probe.numChannels; ii++) { cmap[ii] = data.probe.colormap[ii]; cmap[data.probe.numChannels + ii] = data.probe.colormap[ii]; cmap[data.probe.numChannels * 2 + ii] = data.probe.colormap[ii]; } data.probe.colormap = cmap; Gtk.ListStore ClearList = new Gtk.ListStore(typeof(string)); MainClass.win._handles.whichdata.Model = ClearList; List <string> datatypes = new List <string>(); for (int ii = 0; ii < data.probe.ChannelMap.Length; ii++) { datatypes.Add(data.probe.ChannelMap[ii].datasubtype); } datatypes = datatypes.Distinct().ToList(); foreach (string s in datatypes) { MainClass.win._handles.whichdata.AppendText(s); } MainClass.win._handles.whichdata.Active = 0; MainClass.win.nirsdata.Add(data); } // Save the tmp file for quick reload string path = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); path = System.IO.Path.Combine(path, "LastSettings.xml"); XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = (" "); settings.CloseOutput = true; settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(path, settings)) { writer.WriteStartElement("settings"); writer.WriteElementString("probefile", probefilename); writer.WriteElementString("Investigator", (string)demo[i].get("Investigator")); writer.WriteElementString("Study", (string)demo[i].get("Study")); writer.WriteEndElement(); writer.Flush(); } MainClass.win.dataLSL = new LSL.liblsl.StreamOutlet[MainClass.devices.Length]; for (int ii = 0; ii < MainClass.devices.Length; ii++) { int fs = MainClass.devices[ii].GetSampleRate(); string name = string.Format("NIRSRecordIRData_{0}", ii + 1); LSL.liblsl.StreamInfo info = new LSL.liblsl.StreamInfo(name, "NIRS", MainClass.win.nirsdata[ii].probe.numChannels, (double)fs, LSL.liblsl.channel_format_t.cf_int32); MainClass.win.dataLSL[ii] = new LSL.liblsl.StreamOutlet(info); } MainClass.win.EnableControls(true); MainClass.win.ShowAll(); MainClass.win._handles.SDGplot.QueueDraw(); Destroy(); }