Avoided setup-dependent error (file structuring). Implemented TNMR application search and re-open if it closes. This will not fix any particularly odd situations, but it will recover the majority of TNMR crashes and user error.
This commit is contained in:
@@ -309,7 +309,8 @@ class ProgrammedSequence(fc.Drivable): # Drivable only for kill() funcitonality
|
|||||||
self.approx_sequence_length += float(self.post_acquisition_time)*1e-6
|
self.approx_sequence_length += float(self.post_acquisition_time)*1e-6
|
||||||
|
|
||||||
# then, save the thing
|
# then, save the thing
|
||||||
filepath = os.getcwd()
|
# save it in a reasonable location, within frappy
|
||||||
|
filepath = os.path.dirname(os.path.realpath(__file__))
|
||||||
filename = self.title + f'_{time.time()}'
|
filename = self.title + f'_{time.time()}'
|
||||||
filename = filepath + '/sequences/' + filename.replace('.','')
|
filename = filepath + '/sequences/' + filename.replace('.','')
|
||||||
seq_gen.save_sequence(filename, seq)
|
seq_gen.save_sequence(filename, seq)
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ def get_event_header(event_type, vals, tables, table_reg, tuning_number, col_del
|
|||||||
if(len(codes) == 6): # regular header
|
if(len(codes) == 6): # regular header
|
||||||
headerstr += f'{tuning_number}{Z*3}{codes[0]}1{codes[1]}{codes[2]}'
|
headerstr += f'{tuning_number}{Z*3}{codes[0]}1{codes[1]}{codes[2]}'
|
||||||
headerstr += f'{codes[5]}{Z*3}{codes[3]}{codes[4]}{Z*2}\x01'
|
headerstr += f'{codes[5]}{Z*3}{codes[3]}{codes[4]}{Z*2}\x01'
|
||||||
elif(len(codes) == 4): # exteension
|
elif(len(codes) == 4): # extension
|
||||||
headerstr += f'{tuning_number}{Z*3}{codes[0]}{Z*3}{codes[1]}{Z*3}{codes[2]}{Z*3}{codes[3]}'
|
headerstr += f'{tuning_number}{Z*3}{codes[0]}{Z*3}{codes[1]}{Z*3}{codes[2]}{Z*3}{codes[3]}'
|
||||||
else:
|
else:
|
||||||
print('PANIC')
|
print('PANIC')
|
||||||
|
|||||||
0
frappy_psi/tnmr/sequences/.touch
Normal file
0
frappy_psi/tnmr/sequences/.touch
Normal file
@@ -17,6 +17,8 @@ import win32com.client
|
|||||||
import pythoncom
|
import pythoncom
|
||||||
import frappy_psi.tnmr.NTNMR as NTNMR
|
import frappy_psi.tnmr.NTNMR as NTNMR
|
||||||
|
|
||||||
|
import winapps
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
import traceback
|
import traceback
|
||||||
@@ -102,8 +104,21 @@ class TNMR:
|
|||||||
pythoncom.CoInitialize()
|
pythoncom.CoInitialize()
|
||||||
return win32com.client.GetActiveObject("NTNMR.Application")
|
return win32com.client.GetActiveObject("NTNMR.Application")
|
||||||
except pythoncom.com_error:
|
except pythoncom.com_error:
|
||||||
|
try:
|
||||||
|
self.open_TNMR()
|
||||||
|
time.sleep(10)
|
||||||
|
# try again
|
||||||
|
pythoncom.CoInitialize()
|
||||||
|
return win32com.client.GetActiveObject("NTNMR.Application")
|
||||||
|
except:
|
||||||
|
raise TNMRNotRunnningError
|
||||||
raise TNMRNotRunnningError
|
raise TNMRNotRunnningError
|
||||||
|
|
||||||
|
def open_TNMR(self):
|
||||||
|
'''Tries to open up TNMR, using its registration in the Windows registry'''
|
||||||
|
for app in winapps.search_installed('TNMR'):
|
||||||
|
os.system('start ' + str(app.install_location.absolute()) + '\\bin\\TNMR.exe')
|
||||||
|
|
||||||
def execute_cmd(self, cmd):
|
def execute_cmd(self, cmd):
|
||||||
'''Sends an arbitrary command through to TNMR'''
|
'''Sends an arbitrary command through to TNMR'''
|
||||||
print('W: Executing arbitrary command: ' + f'out = self.get_instance().{cmd}')
|
print('W: Executing arbitrary command: ' + f'out = self.get_instance().{cmd}')
|
||||||
|
|||||||
Reference in New Issue
Block a user