Advertisement
Guest User

Untitled

a guest
Jan 29th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1.     def sensors(self):
  2.         #пустые массивы для данных
  3.         array_105_x = []
  4.         array_105_y = []
  5.         array_105_z = []
  6.         i = 0
  7.         #отслеживание прогресса (помогает смотреть, где крашится.иногда
  8.         #крашится даже на середине процесса приема данных)
  9.         pbar = tqdm(total=self.time_observation)
  10.        
  11.         #очищаю буфер на всякий случай
  12.         self.arduino_port_sensor.reset_input_buffer()
  13.         #отсылаю 1 для приема данных
  14.         self.arduino_port_sensor.write(str(1).encode())
  15.         #жду
  16.         time.sleep(6)
  17.         #тут как правило приходит 1, если все работает. и пустая строка - когда все крашится
  18.         print("RECIEVED BACK SENSOR:",self.arduino_port_sensor.readline().decode())
  19.        
  20.         while i < self.time_observation:
  21.             #считываю данные с ардуино
  22.             value = self.arduino_port_sensor.readline()
  23.             value = value.decode('utf-8', 'ignore')
  24.             if value == '': #если данных нет
  25.                 print('empty')
  26.                 self.sensors() #перезапустить функцию
  27.             v = value.rstrip().replace(" ", "") #разделить данные и тд и тп
  28.             result = [x.strip() for x in v.split(',')]
  29.  
  30.             if len(result) == 4: #интересуют только "целые" строчки
  31.                
  32.                 try:
  33.                     array_105_x.append(float(result[1]))
  34.                     array_105_y.append(float(result[2]))
  35.                     array_105_z.append(float(result[3]))
  36.                     i+=1
  37.                     pbar.update(1) #обновление строчки прогресса
  38.                 except ValueError:
  39.                     print(result)
  40.                     continue
  41.  
  42.         pbar.close()
  43.         #снова чищу буфер
  44.         self.arduino_port_sensor.reset_input_buffer()
  45.         #на этом процесса я пытаюсь прекратить отсылку данных, отправляя ноль
  46.         while True:
  47.             self.arduino_port_sensor.write(str(0).encode())
  48.             try:
  49.                 value = int(self.arduino_port_sensor.readline().decode('utf-8', 'ignore').rstrip().replace(" ", ""))
  50.                 #если реально ноль, то все прекратится
  51.                 if value == 0:
  52.                     print ('данных нет, все ок', value)
  53.                     break
  54.             except ValueError:
  55.                 continue
  56.  
  57.            
  58.         return [array_105_x, array_105_y, array_105_z]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement