%{ #include #include "tmctime.h" #include "status.h" typedef struct manlist_struct { unsigned short manNum; unsigned short bulbNum; float volume; char name[32]; float mixingRatio; } manlist; manlist manifold[10]; unsigned short totalBulbs = 0; void readCompoundList(){ FILE *IF; char line[128]; manlist in; if ( ( IF = fopen("compound.list","r") ) == NULL ) return; totalBulbs=0; fgets(line,255,IF); while ( fgets(line,255,IF) ) if ( sscanf(line,"%d %d %f %s %f", &(in.manNum),&(in.bulbNum),&(in.volume), &(in.name),&(in.mixingRatio) ) == 5 ){ manifold[totalBulbs].manNum = in.manNum; manifold[totalBulbs].bulbNum = in.bulbNum; manifold[totalBulbs].volume = in.volume; manifold[totalBulbs].mixingRatio = in.mixingRatio; strcpy(manifold[totalBulbs].name,in.name); totalBulbs++; } fclose(IF); } /* readCompoundList */ void sendStartRun(){ FILE *IF; unsigned short manNum, bulbNum, injSize, ncvt=0, bulb=0; char line[256],radical[16],runModel[32],molecule[32],*commentStr; printf("!Begin\n"); readCompoundList(); if ( IF = fopen("run.schedule","r")){ fgets(line,255,IF); fgets(line,255,IF); fclose(IF); sscanf(line,"%d %d %d %s%n", &manNum,&bulbNum,&injSize,radical,&ncvt); commentStr = line + ncvt; sscanf(commentStr,"%s%n",runModel,&ncvt); commentStr += ncvt; while ( bulb < totalBulbs ){ if ( manifold[bulb].manNum == manNum && manifold[bulb].bulbNum == bulbNum ){ printf("!Radical %s\n",radical); printf("!RunModel %s\n",runModel); printf("!Comment %s",commentStr); printf("!Contains %d %f %s %f\n", manifold[bulb].manNum, manifold[bulb].volume, manifold[bulb].name, manifold[bulb].mixingRatio); return; } bulb++; } } if (IF = fopen("run.id","r")){ fgets(line,255,IF); fclose(IF); sscanf(line,"%s",molecule); printf("!Contains 0 0 %s 1\n",molecule); return; } printf("!Contains 0 0 nothing 1\n"); } /* sendStartRun */ void writeDataHeader(){ int n; char line[128]; FILE *IF; printf("%%Raw Data file for run:\n"); printf("%%Revision Date: 16 May 2000 (nmd)\n"); printf(" !define experiment hpf2\n"); printf(" !define timeStampRun %ld\n", itime()); printf("%%Official column names:\n"); printf(" !define_list {time:1," "det1:2, det2:3, det3:4, det4:5, " "laser1Adj:6, laser1Fix:7, laser1Cont:8, laser1POW:9, " "laser2Adj:10, laser2Fix:11, laser2Cont:12, laser2POW:13, " "laser3Adj:14, laser3Fix:15, laser3Cont:16, " "laser4Adj:17, laser4Fix:18, laser4Cont:19, " "F_N2:20,02:21, F03:22, F04:23, F01Set:24, " "POW1:25, POW2:26, POW3:27, POW4:28, " "Status1:29, " "pSystem:30, pPitot:31, pOzone:32, pXSMan:33, " "scanningCycle:34," "general1:35, general2:36, general3:37, EtnStep:38, OzoneSet:39" "maxDefinedColumn:39}\n" ); printf("%%Column formats:\n"); printf(" !define formatStr #timeFormatData #counterFormatData " "#counterFormatData #counterFormatData #counterFormatData " "#counterFormatData #counterFormatData #counterFormatData #voltageFormatData" "#counterFormatData #counterFormatData #counterFormatData #voltageFormatData" "#counterFormatData #counterFormatData #counterFormatData" "#counterFormatData #counterFormatData #counterFormatData" "#flowFormatData #flowFormatData #flowFormatData #flowFormatData #flowFormatData #flowFormatData " "#voltageFormatData #voltageFormatData #voltageFormatData #voltageFormatData" "#flagFormatData " "#absPressureFormatData #absPressureFormatData #absPressureFormatData #absPressureFormatData " "#flagFormatData " "#voltageFormatData #voltageFormatData #voltageFormatData #counterFormatData #counterFormatData" "\n" ); printf("%% Configuration information from configuration.def\n"); if ( ( IF = fopen("configuration.def","r") ) != NULL ){ while ( fgets(line,255,IF) ) printf(" ! %s",line); fclose(IF); } printf("%% End of header\n"); } /* writeDataHeader */ %} state (startupPipe); validate startupPipe; depending on (startupPipe once){ readCompoundList(); } { if ( runHasBegun(SWStat1) ){ sendStartRun(); writeDataHeader(); } if ( runHasEnded(SWStat1) ){ if ( runWasAborted(SWStat1) ) printf("!Abort Run\n"); else printf("!End Run\n"); } printf("%s ",text(MFCtr)); printf("%s ",text(Det1)); printf("%s ",text(Det2)); printf("%s ",text(Det3)); printf("%s ",text(Det4)); printf("%s ",text(Las1A)); printf("%s ",text(Las1F)); printf("%s ",text(Las1C)); printf("%s ",text(LIF1)); printf("%s ",text(Las2A)); printf("%s ",text(Las2F)); printf("%s ",text(Las2C)); printf("%s ",text(LIF2)); printf("%s ",text(Las3A)); printf("%s ",text(Las3F)); printf("%s ",text(Las3C)); printf("%s ",text(Las4A)); printf("%s ",text(Las4F)); printf("%s ",text(Las4C)); printf("%s ",text(F01)); printf("%s ",text(F02)); printf("%s ",text(F03)); printf("%s ",text(F04)); printf("%s ","0.0"); printf("%s ",text(POW1)); printf("%s ",text(POW2)); printf("%s ",text(POW3)); printf("%s ",text(POW4)); printf("%s ",text(SWStat1)); printf("%s ",text(P01)); printf("%s ",text(P02)); printf("%s ",text(P03)); printf("%s ",text(P04)); printf("%s ",text(ScanningCycle)); printf("%s ",text(SoftFloat1)); printf("%s ",text(SoftFloat2)); printf("%s ",text(SoftInt1)); printf("%s ",text(EtnStep)); printf("%s ",text(OzoneSet)); printf("\n"); fflush(NULL); }