int main(int argc, char *argv) { int i, j; float data[1000]; float currData[100]; for(j = 0; j < 1000; j++) { data[j] = 0; } try { /*Open TEST pulse file, shot 1 */ Tree *t = new Tree(TREE_NAME, SHOT_NUM); /* Get node \SEGMENTED */ TreeNode *node = t->getNode(TAG_NAME1); /* Make sure no data is contained */ //TODO: Segmentation fault //node->deleteData(); Data *start = new Float64(10.); Data *end = new Float64(11.); Data *rate = new Float64(1E-3); Data *dimension = new Range(start, end, rate); Array *dataArray = new Float32Array(data, 1000); node->beginSegment(start, end, dimension, dataArray); for(i = 0; i < 10; i++) { for(j = 0; j < 100; j++) { currData[j] = i+1; } printf ("[%02d] putSegment ... \n", i); //Fill currData array with acquired data chunk Array *subArr = new Float32Array(currData, 100); node->putSegment(subArr, -1); delete(subArr); //sleep (3); } /* Free stuff */ //deleteData(start); //deleteData(end); //deleteData(rate); deleteData(dimension); delete(t); } catch(MdsException *exc) { cout << "Error appending segments: " << exc->what(); } }
void MdsWrapper::storeTimebase(Tree *tree, const char* field_fmt, Data* start, Data* end, Data* dimension, unsigned istart, unsigned len, double t1, double isi) { double* tb_seg = new double[len]; double tx = t1; char node_name[128]; snprintf(node_name, 128, field_fmt, TBCHAN); for (unsigned ii = 0; ii != len; ++ii){ tb_seg[ii] = tx; tx += isi; } Array *data = new Float64Array(tb_seg, len); TreeNode *node = tree->getNode(node_name); node->beginSegment(start, end, dimension, data); deleteData(node); deleteData(data); delete [] tb_seg; }
void MdsWrapper::storeChannels(Tree *tree, const char* field_fmt, Data* start, Data* end, Data* dimension, unsigned istart, unsigned len) { int nchan = dataModel.getAcqType().getNumChannels(); if (getenv("ACQ_DEMUX_CHANNEL_ONE_ONLY")){ nchan = 1; /* reduced data for testing */ } for (ActiveChannelsIt it = active_channels.begin(); it < active_channels.end(); it++){ int ch = *it; char node_name[128]; snprintf(node_name, 128, field_fmt, ch); Array *data = new Int16Array( &dataModel.getChannelData(ch)[istart], len); TreeNode *node = tree->getNode(node_name); node->beginSegment(start, end, dimension, data); deleteData(node); deleteData(data); } }
int main(int argc, char *argv) { int i, j; float data[10]; float currData[2]; #if 0 int socket; /* Connect to MDSplus */ socket = MdsConnect (SERVER_ADDR); if ( socket == -1 ) { fprintf(stderr,"Error connecting to Atlas.\n"); return EXIT_FAILURE; } printf ("after MdsConnect\n"); #endif try { #if 0 Connection *conn = new Connection (SERVER_ADDR); if (!conn) { printf ("Connection failed \n"); } printf ("after Connection\n"); #endif /* Open pulse file, shot # */ Tree *t = new Tree(TREE_NAME, SHOT_NUM); printf ("after Tree\n"); /* Get node */ TreeNode *node = t->getNode(TAG_NAME); printf ("after getNode\n"); /* Make sure no data is contained */ // Segmentation fault => 3.0 library & header is ok node->deleteData(); //float stime = -5; float stime = -5; Data *start = new Float64(10.); Data *end = new Float64(11.); Data *rate = new Float64(0.1); Data *dimension = new Range(start, end, rate); memset (data, 0x00, sizeof(data)); Array *dataArray = new Float32Array(data, 2); for (i = 0; i < 5; i++) { start = new Float64(stime + i); end = new Float64(stime + 0.1 + i); rate = new Float64(0.1); dimension = new Range(start, end, rate); node->beginSegment (start, end, dimension, dataArray); for(j = 0; j < 2; j++) { currData[j] = i+1; } printf ("[%02d] putSegment ... \n", i); Array *subArr = new Float32Array(currData, 2); node->putSegment (subArr, -1); Event::setEvent (EVENT_NAME); cout << "Data (" << node->getNumSegments() << ") : " << node->getData() << endl; /* Free stuff */ //deleteData(start); //deleteData(end); //deleteData(rate); deleteData(dimension); delete(subArr); sleep (2); } delete(t); } catch(MdsException *exc) { cout << "Error appending segments: " << exc->what(); } }