cleanup and restructure helicalscan

This commit is contained in:
2018-10-16 16:34:42 +02:00
parent d4edb2d133
commit de93205e64

View File

@@ -1001,77 +1001,6 @@ close
if fnRec: if fnRec:
np.savez_compressed(fnRec, rec=rec, points=self.points, param=self.param, meta=self.meta) np.savez_compressed(fnRec, rec=rec, points=self.points, param=self.param, meta=self.meta)
def download(self,prg=None,mode=0,file='/tmp/helicalscan.cfg'):
'''
mode bits:
bit 0 (1): wait execution finished (P1000==1)
bit 1 (2): gather and save data
bit 2 (4): ...
'''
host=self.host
if prg is not None and self.verbose & 4:
for ln in prg:
print(ln)
if file is not None and prg is not None:
fh=open(file,'w')
fh.write('\n'.join(prg))
fh.close()
if host is not None:
# ***download and start the program***
cmd ='gpasciiCommander --host '+host+' '+ file
print(cmd)
p = sprc.Popen(cmd, shell=True)#, stdout=sprc.PIPE, stderr=sprc.STDOUT)
#res=p.stdout.readlines(); print res
retval = p.wait()
if mode &1:
# ***wait program finished P1000=1***
com=GpasciiCommunicator().connect(host,prompt='# ')
ack=GpasciiCommunicator.gpascii_ack
sys.stdout.write('wait execution...');sys.stdout.flush()
while(True):
#Gather.MaxLines calculates maximum numbewr of gathering into memory
com.write('P1000\n')
val=com.read_until(ack)
#print val
val=int(val[val.find('=')+1:].rstrip(ack))
if val==1:break
#com.write('Gather.Index\n')
#val=com.read_until(ack)
#print val
time.sleep(.2)
sys.stdout.write('.');sys.stdout.flush()
if mode &2:
fnRmt = '/var/ftp/gather/out.txt'
fnLoc = '/tmp/gather.txt'
print('\ngather data to %s...' % fnRmt)
p = sprc.Popen(('ssh', 'root@' + host, 'gather ', '-u', fnRmt), shell=False, stdin=sprc.PIPE, stdout=sprc.PIPE,
stderr=sprc.PIPE)
res = p.wait()
if res:
print('ssh failed. ssh root@%s to open a session' % host)
return
print('transfer data to %s...' % fnLoc)
p = sprc.Popen(('scp', 'root@' + host + ':' + fnRmt, fnLoc), shell=False, stdin=sprc.PIPE, stdout=sprc.PIPE,
stderr=sprc.PIPE)
res = p.wait()
self.rec = np.genfromtxt(fnLoc, delimiter=' ')
com=GpasciiCommunicator().connect(host,prompt='# ')
ack=GpasciiCommunicator.gpascii_ack
channels=["Motor[4].HomePos","Motor[5].HomePos","Motor[3].HomePos","Motor[1].HomePos"]
ofs=np.ndarray(len(channels))
for i,v in enumerate(channels):
com.write(v+'\n')
val=com.read_until(ack)
#print val
#regexp: https://docs.python.org/2/library/re.html -> %e, %E, %f, %g
ofs[i]=float(re.search('=([-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?)',val).group(1))
self.rec-=ofs
self.save_rec()
if __name__=='__main__': if __name__=='__main__':
def run_test(args): def run_test(args):