var n,loesch,kanal,memory,neuerKanal,sample,frage,wo,wokanal, links, rechts,erster,zweiter, ende, offset; ende:=0; 'cursordelete(-1); 'cursornew();cursornew(); 'Cursor(2,Cursor(1)+1); 'interact("set Cursors for area to be processed",1023); 'links:=Cursor(1); 'rechts:=Cursor(2); 'draw(links, rechts-links); kanal:=input("which channel do you want to process?",1); 'sample:=input("what is your sampling rate?",1); wokanal:=input("Give trigger channel",1); offset:=input("how long should the maximum difference between triggers be?",8); 'Copy waveform to a memory channel if ChanKind(kanal)<>1 then halt endif; 'Not a waveform! memory := MemChan(1,0,BinSize(kanal)); 'Create waveform channel if memory>0 then 'Created OK? ChanScale(memory, ChanScale(kanal)); 'Copy scale... ChanOffset(memory, ChanOffset(kanal)); '...and offset... ChanUnits$(memory, ChanUnits$(kanal)); '...and units ChanTitle$(memory, "Copy"); 'Set our own title ChanComment$(memory, "Copied from channel "+Str$(kanal)); endif; chanshow(memory); 'display new channel repeat n:=n+1; 'count loops erster:=nexttime(wokanal,erster); zweiter:=nexttime(wokanal,erster); if n=1 then 'copy the channel correctly before the first trigger if erster < offset then MemImport(memory, kanal, 0, erster); 'Copy data from 0 to first trigger else MemImport(memory, kanal, erster-offset/2, erster); 'Copy data from first trigger - offset/2 to first trigger endif; endif; if zweiter>0 then 'if trigger point is available if zweiter - erster < offset then ' and if distance between 2 trigger points is smaller than offset then MemImport(memory, kanal, erster, zweiter); 'Copy data from last to next trigger else ' if distance longer MemImport(memory, kanal, erster, erster+offset/2); 'Copy data from last trigger to last trigger + offset /2 MemImport(memory, kanal, zweiter-offset/2, zweiter); 'Copy data from next trigger - offset /2 to next trigger endif; else zweiter:=Maxtime(); ' if we reach end of trigger channel, make Maxtime = last trigger pint ende:=1; ' and lets get to the end if zweiter - erster < offset then MemImport(memory, kanal, erster, zweiter); 'copy the last datums else MemImport(memory, kanal, erster, erster+offset/2); 'Copy data endif; endif; until ende>0; halt;