как читать данные из данных python serial.readline () в строку - PullRequest
0 голосов
/ 18 марта 2019

Сведения о программе:

#!/usr/bin/env python
import time
import serial

ser = serial.Serial(
port='/dev/ttyS0', 
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
counter=0

def Off():
    print('17')

def Go():
    print('18')

if __name__ == '__main__':
    commands = {15:Go, 14:Off}

    try:
        ser.write(str.encode('allon'))

        while True:
            x=ser.readline()
            print(x)
            commands[x]()

    finally:
           print("ok")

Заголовок

и на выходе я получаю

b'On\r\n'
b''
b'Ogg\r\n'
b''
b''
b'Off\r\n'
b'On\r\n'

Но я хочу что-то вроде x = 14 в виде строкитак что я могу передать это значение в команду x

здесь я получаю ошибку ..................

1 Ответ

0 голосов
/ 11 апреля 2019

Попробуйте этот код:

#!/usr/bin/env python
import time
import serial

ser = serial.Serial(
    port='/dev/ttyS0', 
    baudrate = 9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
)
counter=0

def ON():  # added ON
    print('15')

def Off():
    print('17')

def Go():
    print('18')

if __name__ == '__main__':
    commands = {b'Go': Go, b'ON': On, b'Off': Off}  # changed commands dictionary

    try:
        ser.write(str.encode('allon'))

        while True:
            x = ser.readline().strip()  # added strip (removing \r\n)
            print(x)  # remove this line if you do not want all input to be printed
            if x in commands:  # added condition
                commands[x]()

    finally:
           print("ok")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...