diff --git a/pysqm/main.py b/pysqm/main.py index d8e2067cf3434ff00270fb77c7b733bd113c018b..90cd7b30c639a2ceb7989f4d4b78323157723bb4 100644 --- a/pysqm/main.py +++ b/pysqm/main.py @@ -95,6 +95,9 @@ else: print(('ERROR. Unknown device type '+str(config._device_type))) exit(0) +if mydevice.addr == None: + print('ERROR: no device found for reading data') + exit(1) def loop(): ''' diff --git a/pysqm/read.py b/pysqm/read.py index ac26a1425d7113672fe8792fa71aae46176c4721..b1973f7b5be8370bc886cb7072d3f5e973e6a26f 100644 --- a/pysqm/read.py +++ b/pysqm/read.py @@ -468,9 +468,10 @@ class SQMLE(SQM): except: print('Trying auto device address ...') self.addr = self.search() - print(('Found address %s ... ' %str(self.addr))) - self.port = 10001 - self.start_connection() + if self.addr!=None: + print(('Found address %s ... ' %str(self.addr))) + self.port = 10001 + self.start_connection() # Clearing buffer print(('Clearing buffer ... |'), end=' ') @@ -667,26 +668,32 @@ class SQMLU(SQM): print(('Trying fixed device address %s ... ' %str(config._device_addr))) self.addr = config._device_addr self.bauds = 115200 - self.start_connection() + try: + self.start_connection() + except OSError: + print('device ', config._device_addr, ' does not exist') + raise except: print('Trying auto device address ...') self.addr = self.search() - print(('Found address %s ... ' %str(self.addr))) + if self.addr != None: + print(('Found address %s ... ' %str(self.addr))) + + if self.addr != None: self.bauds = 115200 self.start_connection() - - # Clearing buffer - print(('Clearing buffer ... |'), end=' ') - buffer_data = self.read_buffer() - print((buffer_data), end=' ') - print('| ... DONE') - print('Reading test data (ix,cx,rx)...') - time.sleep(1) - self.ix_readout = self.read_metadata(tries=10) - time.sleep(1) - self.cx_readout = self.read_calibration(tries=10) - time.sleep(1) - self.rx_readout = self.read_data(tries=10) + # Clearing buffer + print(('Clearing buffer ... |'), end=' ') + buffer_data = self.read_buffer() + print((buffer_data), end=' ') + print('| ... DONE') + print('Reading test data (ix,cx,rx)...') + time.sleep(1) + self.ix_readout = self.read_metadata(tries=10) + time.sleep(1) + self.cx_readout = self.read_calibration(tries=10) + time.sleep(1) + self.rx_readout = self.read_data(tries=10) def search(self): @@ -700,27 +707,35 @@ class SQMLU(SQM): os_in_use = sys.platform if os_in_use == 'linux2': + print('Detected Linux2 platform') + ports = ports_unix + elif os_in_use == 'linux': print('Detected Linux platform') ports = ports_unix elif os_in_use == 'win32': print('Detected Windows platform') ports = ports_win + else: + print('No supported platform detected -> ', os_in_use) used_port = None for port in ports: + try: + os.stat(port) + except OSError: + print('port ', port,' does not exist') + continue + conn_test = serial.Serial(port, 115200, timeout=1) conn_test.write('ix'.encode) if conn_test.readline()[0] == 'i': used_port = port break - try: - assert(used_port!=None) - except: + if (used_port==None): print('ERR. Device not found!') - raise - else: - return(used_port) + + return(used_port) def start_connection(self): '''Start photometer connection '''