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(); }
public nirs.core.Data GetNewData(nirs.core.Data data, double dt = 0) { int nsamples = 0; double fs; switch (devicetype) { case 0: nsamples = ((NIRSDAQ.Instrument.Devices.Simulator)device).SamplesAvaliable(); fs = ((NIRSDAQ.Instrument.Devices.Simulator)device).getsamplerate(); for (int i = 0; i < nsamples; i++) { double[] d = ((NIRSDAQ.Instrument.Devices.Simulator)device).Getdata(); for (int j = 0; j < d.Length; j++) { data.data[j].Add(d[j]); } double time = data.time.Count / fs + dt; if (_info.numAux > 0) { double[] aux = ((NIRSDAQ.Instrument.Devices.Simulator)device).GetdataAux(); for (int j = 0; j < aux.Length; j++) { data.auxillaries[j].data.Add(aux[j]); data.auxillaries[j].time.Add(time); } } data.time.Add(time); data.numsamples = data.time.Count; } break; case 1: nsamples = ((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).SamplesAvaliable(); fs = ((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).getsamplerate(); for (int i = 0; i < nsamples; i++) { if (((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).canmeasure()) { double[] d = ((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).Getdata(); for (int j = 0; j < d.Length; j++) { data.data[j].Add(d[j]); } double time = data.time.Count / fs + dt; if (_info.numAux > 0) { if (((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).canmeasureaux()) { double[] aux = ((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).GetdataAux(); for (int j = 0; j < aux.Length; j++) { data.auxillaries[j].data.Add(aux[j]); data.auxillaries[j].time.Add(time); } } } data.time.Add(time); data.numsamples = data.time.Count; } } break; } return(data); }