Я хочу сохранить в переменной номер imei (размер установлен фиксированным, равным 15 байтам), а также сравнить силу сигнала, которая меньше 12, является ошибкой, но она не работает?
Я хочу, чтобы imei сохранялся в переменной или в списке как 123456789880242.
Это вывод, который я получаю в потоке UART.
b'imei_123456789880242\n'
b'test_signal_31\n'
Проблема: иногда Uart плюет xfe
байт не знаю, как от него избавиться.
b'\xfeimei_868183032880242\n'
b'test_signal_31\n'
Как сохранить первую строку из потока UART?Довольно просто сохранить каждую строку, которая заканчивается новой строкой.Но я делаю что-то не так, не в состоянии понять?
Я попробовал это вручную, я получаю то, что хотел, но когда я реализовал цикл while, я не получаю никакого ответа.
a = b'imei_868183032880242\n'
a=a.decode()
a.split('\n')
Вывод: ['imei_868183032880242', '']
Я совершенно новичок в манипулировании байтовой строкой, любой источник для изучения достоин.
Код:
IMEI=b'imei_'
IMEI_E=b'\xfeimei
FTEST1_GSM_SIGNAL=b'test_signal_12\n'
def uart1_serial_read(uart1):
uart1_result = []
device = serial.Serial(uart1, baudrate=115200, bytesize=8, parity='N', stopbits=1,
timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
print('UART1: %s ' % device.name)
run = True
while run:
data=device.readline()
print(data)
if IMEI or IMEI_E in data:
print('Parsing imei')
uart1_result=data.decode()
uart1_result.split('\n')
print(uart1_result)
if (data > FTEST1_GSM_SIGNAL):
TEST1_GSM_SIGNAL_STATUS='PASS'
if (data < FTEST1_GSM_SIGNAL):
TEST1_GSM_SIGNAL_STATUS='FAIL'
if (data == TEST_END):
print("TEST DONE *****")
run = False