cleanup and restructure helicalscan
This commit is contained in:
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user