Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 2, 2017 10:46:03

cer
Зарегистрирован: 2017-11-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Pyserial преобразование данных в строку

Принимаю с COM порта

 b'enkoder 30008\n\x00'
не могу вырезать со строки \n\x00
 temp_ser3.strip("\n\x00")
, при том что метод rfind срабатывает.
В сомнения вводит перед строкой b ‘ ’ ,двоичными данными принимает ? как преобразовать в строку ?
Вот код обработки строки
 def tick():
    label.after(200, tick)
    if(flag_open):
        if(ser.inWaiting() > 0):
            temp_ser=ser.read(15)
            temp_ser3=str(temp_ser)
            temp_ser2=temp_ser3.strip("\n\x00")
            index_ser=temp_ser2.rfind('r')
            label['text'] = temp_ser2[index_ser+1:]
            print(temp_ser2[index_ser+1:])
    else: label['text'] = 'No'

Вот выход
 30008\n\x00'

Отредактировано cer (Ноя. 2, 2017 10:48:51)

Прикреплённый файлы:
attachment 2017-11-02_16-44-04.png (99,1 KБ)

Офлайн

#2 Ноя. 2, 2017 11:39:50

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Pyserial преобразование данных в строку

 >>>#Python3
>>> bb= b'enkoder 30008\n\x00'
>>> bb.decode().replace('\n\x00','')
'enkoder 30008'
>>> bb.decode().replace('\n\x00','').split()[-1]
'30008'
 >>> #Python27
>>> bb= b'enkoder 30008\n\x00'
>>> str(bb).replace('\n\x00','')
'enkoder 30008'
>>> 

Отредактировано vic57 (Ноя. 2, 2017 11:53:39)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version