예제 #1
0
        /// <summary>
        /// Process set recording command
        /// </summary>
        private async Task <string> ProcessSetRecording(UriArgParser args)
        {
            try
            {
                var enable     = bool.Parse(args.GetArg("enable"));
                var fileName   = args.GetArg("filename");
                var formatType = args.GetArg("format");
                if (BrainflowBoard == null)
                {
                    return($"NAK?response=Board is not reading data.");
                }
                if (enable)
                {
                    if (FileWriter.IsLogging)
                    {
                        return($"NAK?response=You must close the current recording file before starting a new one.");
                    }


                    FileWriterType format = FileWriterType.Bdf;
                    switch (formatType)
                    {
                    case "txt":
                        format = FileWriterType.OpenBciTxt;
                        break;

                    case "bdf":
                        format = FileWriterType.Bdf;
                        break;
                    }

                    var recordingDir = ConfigurationManager.AppSettings.Get("defaultDir");
                    var path         = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), recordingDir);
                    await FileWriter.StartWritingToFileAsync(path, fileName, BrainflowBoard.BoardId, BrainflowBoard.SampleRate, format, new FileHeaderInfo()
                    {
                        SessionName = fileName
                    });

                    return($"ACK?response=File {Path.GetFileName(FileWriter.FileName)} started.");
                }
                else
                {
                    if (FileWriter != null && !FileWriter.IsLogging)
                    {
                        return($"NAK?response=No recording in progress.");
                    }
                    await FileWriter.StopWritingToFileAsync();

                    return($"ACK?response=Recording stopped.");
                }
            }
            catch (Exception)
            {
                return($"NAK?response=Invalid parameters");
            }
        }
예제 #2
0
        public async Task StartWritingToFileAsync(string path, string fileNameRoot, int boardId, int sampleRate, FileWriterType format, FileHeaderInfo info)
        {
            switch (format)
            {
            case FileWriterType.OpenBciTxt:
            {
                var newWriter = new OBCIGuiFormatFileWriter(boardId, sampleRate);
                newWriter.Log += OnLog;
                FileWriter     = newWriter;
            }
            break;

            case FileWriterType.Bdf:
            {
                var newWriter = new BDFFormatFileWriter(boardId, sampleRate);
                newWriter.Log += OnLog;
                FileWriter     = newWriter;
            }
            break;
            }

            await FileWriter.StartWritingToFileAsync(path, fileNameRoot, info);
        }