Понимаю, что очень узконаправленный вопрос, однако оф. документация скупа на ответы
Итак, имеется пара COMTRADE файлов (описание *.cfg и данные *.dat). Передо мной стоит задача взять все данные из этой пары и создать новую пару с теми же данными (для простоты примера).
Используя фреймворк GSF читаю файлы так:
Parser comParser;
private void openComtradeDatFile()
{
OpenFileDialog od = new OpenFileDialog();
DialogResult dialogRes = od.ShowDialog();
if (dialogRes == DialogResult.OK)
{
comParser = new Parser();
if (File.Exists( od.FileName ))
{
comParser.FileName = od.FileName;
ComtradeToChart();
}
}
}
private void ComtradeToChart()
{
// (Пере)Открыть файлы
comParser.CloseFiles();
comParser.OpenFiles();
string cfgFileName = Path.ChangeExtension( comParser.FileName, "cfg" );
comParser.Schema = new Schema( cfgFileName );
// Номер канала
int channelNumber = (int)numericUpDownChannel.Value;
// Построение осциллограммы для текущего канала
chartMain.Series[0].Points.Clear();
while (comParser.ReadNext() == true)
{
chartMain.Series[0].Points.AddXY(
comParser.Timestamp,
comParser.PrimaryValues[channelNumber]
);
}
}
Все работает и строится осциллограмма на чарте. Ок.
Пробую записать данные в новый файл (*.dat, ибо *.cfg в данном случае тот же):
private void экспортToolStripMenuItem_Click(object sender, EventArgs e)
{
// Открываем окно сохранения
SaveFileDialog saveFileDlg = new SaveFileDialog();
if (saveFileDlg.ShowDialog() == DialogResult.OK) {
FileStream outFile = File.Create( saveFileDlg.FileName );
StreamWriter sw = new StreamWriter(outFile);
// Читаем и Пишем:
comParser.CloseFiles();
Schema outSchema = comParser.Schema;
comParser.OpenFiles();
GSF.Ticks timestamp = 0;
while (comParser.ReadNext()==true) {
double[] vals = comParser.SecondaryValues;
uint sample = 1;
Writer.WriteNextRecordBinary( sw.BaseStream, outSchema, timestamp, vals,sample,false);
timestamp = comParser.Timestamp;
}
outFile.Close();
}
После всего получается, что в новом файле появилось много пустых записей каналов, и все остальное смещено на неопределенное число байт
Как решить правильно данную задачу? Есть ли тут люди, работавшие с данным фреймворком(GSF.Comtrade)? Или возможно стоить обратить внимание на другие библиотеки/фреймворки?
Продвижение своими сайтами как стратегия роста и независимости