私は基本的にCが初めてです。
64 GB RAM と 240 GB SSD を搭載した 64 ビット Windows7 を使用しています。
取得したデータを 2 つの内部 FIFO に保存し、そのデータを RAM に渡す取得ボードを使用します (つまり、60 GB のデータを取得できる可能性があります)。
私ができないことはfwrite
、4 GB を超えるサイズのバイナリ ファイルを書き込むために関数を使用することです。
ここに私の変数があります:
static UINT64 *rbuffer12 = NULL;
static UINT64 *rbuffer34 = NULL;
FILE *fd_raw, *fd_raw2;
UINT64 nacq = 2000;
ICS1555_ULONG_T bufferLength12, bufferLength34;
そのため、FIFO #1 で何が起こっているかに注目すると、ボードはnacq
サイズを取得bufferLength12
し、 が指すメモリを使用してすべてのものを RAM に格納しrbuffer12
ます。
bufferLength12 = 524288;
acq_length = 524288 / (channels_number * 2 * 4);
nBytes = bufferLength12 * 4;
rbuffer12 = (UINT64 *) malloc(nacq*nBytes);
memset(rbuffer12, 0, nacq*nBytes);
for (i = 0; i < 4*nacq; i++)
ReadF(h, 0, (UINT64 *) (rbuffer12 + i * bufferLength12/8), nBytes/4, NULL, 0))
にデータを書き込みたいと思いますFile12.bin
。
fd_raw=fopen("File12.bin","wb")
fwrite((UINT64 *) rbuffer12,8,(nacq * 4 * channels_number * acq_length) ,fd_raw);
fclose(fd_raw);
fd_raw=NULL;
を設定するnacq=2000
と、ファイルサイズは 4'096'000 バイトです。この値を増やそうとすると、プログラムがハングし、取得を中止すると、たとえば 1'960'000 バイトの次元を持つバイナリ ファイルが取得されます。
より大きなバイナリ ファイルを取得するにはどうすればよいですか?