如何在Python3中从字节字符串中剥离特定字节

时间:2019-02-05 11:00:08

标签: python-3.x pyserial python-bytearray

我想在变量中保存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

0 个答案:

没有答案