Задача состоит в том, чтобы создать файл и записать его данными, но есть структура параметров, которая должна соблюдаться:
n -индекс (4 байта)
timestamp - временная метка (4 байта)
unsigned int Ak - значение напряжения аналогового канала (2 байта)
unsigned int SM -значение напряжения дискретного канала (2 байта)
Каналов может быть много, как будут поступать данные пока неизвестно.
Допустим 3 аналоговых канала 2 дискретных
Файл должен записываться
n timestamp анал. каналы дискр.
4 байта 4 байта 2 байта 2 байта 2 байта 2 байта 2 байта
Я новичок в с++. Подскажите, возможно, есть более разумный вариант заполнения данных каналов(чтоб не с консоли).
Да и вообще, мои ошибки. И как проверить соблюдается ли структура.
Binary.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
// Create Binary file
struct Binaryfile{
int n; //4 byte
int timestamp;//4 byte
unsigned int Ak;//2 byte
unsigned int SM;//2 byte
};
Binaryfile s1,analog,discret;
s1.n =3;
s1.timestamp=45;
int countAnalCh=2;
int countDiscrCh=3;
analog.Ak=0;
discret.SM=0;
fstream binary_file("D:\\Struct\\Struct\\ComtradeFormat\\fileConfiguration.dat",ios::out|ios::binary|ios::app);
if(!binary_file)
{
cout << "Cannot open file.\n";
return 1;
}
binary_file.write((char*)(&s1),sizeof(s1));//write number sample and timestamp
for (int i=0; i<countAnalCh;i++)
{
cout <<"Value analog channel: ";
cin >> analog.Ak;
binary_file.write((char*)(&analog.Ak),sizeof(analog.Ak));
}
for (int j=0; j<countDiscrCh;j++)
{
cout <<"Value discret channel: ";
cin >> discret.SM;
binary_file.write((char*)(&discret.SM),sizeof(discret.SM));
}
binary_file.close();
return 0;
}