Как убрать определенные байты из байтовой строки в Python3 - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу сохранить в переменной номер 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
...