Поскольку данные, записываемые измерительными устройствами или всеми видами промышленных устройств, обычно имеют тип float
, я настоятельно рекомендую сохранить тип с плавающей запятой и избегать преобразования в строку.Это имеет то преимущество, что такие строки, как '"abc55.5xyz"'
, исключаются, и регистрируются только допустимые значения с плавающей точкой.Это также должно быть быстрее, чем использование регулярных выражений с преобразованием float-> str.Например, вы можете использовать numpy для проверки правильности значений.
Сначала вам нужно создать массив правильных значений.Вам нужно сделать это только один раз в начале кода.Нет необходимости делать это на каждой итерации.
import numpy as np
lowest_val = 1.
interm_val = 60.
stepsize = .5
highest_val = 99.9
# create the array of correct values:
correct_vals = np.empty(120)
# fill array with steps:
correct_vals[:-1] = np.linspace(lowest_val, interm_val, num=int((interm_val - lowest_val)/stepsize + 1))
correct_vals[-1] = highest_val # add highest value
Теперь вы можете проверять правильные значения с помощью
motor_freq in correct_vals
Это вернет True
, когда частота двигателя находится в пределах указанных значенийиначе False
.Если, как вы добавили, ваши данные состоят из символов Unicode в формате XX.X
, вам придется преобразовать их в число с плавающей запятой для сравнения, например, с помощью motor_freq = float('15.5')