Exemplo n.º 1
0
        public void AddData(string sensorName, List <string> header, SensorValues newRecord)
        {
            prepareFs();

            var sensorInfo = this.getSensorInfo(sensorName);

            string str_values_line = valuesToString(newRecord);

            string[] arr_values   = { str_values_line };
            int      valuesLength = str_values_line.Length;

            if (sensorInfo.ReadIndex == 0)
            {
                // sensorInfo.CsvHeader = header;
                string   str_header   = headerToString(header);
                string[] arr_header   = { str_header };
                int      headerLength = str_header.Length;

                var borders = new LineBorders()
                {
                    StartPos = headerLength + 1,
                    EndPos   = headerLength + 1 + valuesLength
                };

                lock (sensorInfo.fileLock)
                {
                    // this will clear file - handy in development
                    File.Delete(sensorInfo.FileName);

                    File.AppendAllLines(sensorInfo.FileName, arr_header);
                    File.AppendAllLines(sensorInfo.FileName, arr_values);

                    sensorInfo.Lines.Add(borders);
                }
            }
            else
            {
                var lastBorders = sensorInfo.getLastLine();
                File.AppendAllLines(sensorInfo.FileName, arr_values);

                var borders = new LineBorders()
                {
                    StartPos = lastBorders.EndPos + 1,
                    EndPos   = lastBorders.EndPos + 1 + valuesLength
                };

                sensorInfo.Lines.Add(borders);
            }

            sensorInfo.ReadIndex++;
        }
Exemplo n.º 2
0
        private async Task PreprocessData(CancellationToken token)
        {
            var config = ServiceConfiguration.Instance;

            for (int index = config.sensorsRange.From;
                 index < config.sensorsRange.To;
                 index++)
            {
                string sensorName     = config.sensorNamePrefix + index;
                string sensorFileName = config.dataPath
                                        + config.samplePrefix
                                        + index
                                        + config.sampleExtension;

                var info = new SensorDataInfo(sensorName, sensorFileName);

                sensors.Add(sensorName, info);

                // find start and end position of every line (excluding header line)
                using (var reader = File.OpenText(info.FileName))
                {
                    string headerLine = reader.ReadLine();
                    info.CsvHeader = headerLine;

                    int lastIndex = headerLine.Length + 1;

                    string line = "";
                    while ((line = await reader.ReadLineAsync()) != null)
                    {
                        var borders = new LineBorders()
                        {
                            StartPos = lastIndex,
                            EndPos   = lastIndex + line.Length
                        };

                        info.Lines.Add(borders);

                        lastIndex += line.Length + 1;
                    }
                }
            }
        }