Python3 Pyserial

Привет, сейчас я использую python 3.6. Я уже сделал несколько приложений, используя pyserial и python 2.7. Я хочу сделать то же самое с Python 3.6. это не только не дает никакой ошибки, но также не содержит данных.

# -*- coding: utf-8 -*-
import serial
import time

ser=serial.Serial('/dev/ttyS1',9600)
ser.write('\nMerhaba Lutfen [y] veya [n] karakterlerinden birini tuslayiniz: 
')
print ("Seri Haberlesme basliyor\n")

while 1:
    karakter=ser.read()

    if karakter == 'y':
            print ("\nYes denildi\n")
            ser.write( '\n[y] karakterini tusladiniz\n')
    elif karakter == "n":
            print ("\nNo denildi\n")
            ser.write('\n[n] karakterini tusladiniz \n')


    else:
            print ("\nbelirlenemeyen bir karakter girisi\n")
            ser.write('\nGirilen karakter =>')
            ser.write(karakter)
            ser.write('\nKarakter belirlenemedigi icin cevap alinmadi. [y]veya [n] karakterlerinden birini girin\n')
    time.sleep(0.1)
0
задан 21 June 2019 в 14:55

2 ответа

Я решил проблему. Я использовал ser.flush, но даже если я не использовал его, программа будет работать. Я думал, что было бы хорошо очистить входной буфер. Я сделал некоторые дополнения к коду.

# -*- coding: utf-8 -*-

import serial
import time

ser=serial.Serial('/dev/ttyS1',9600)
ser.flushInput( )
ser.write(b'\nMerhaba Lutfen [y] veya [n] karakterlerinden birini tuslayiniz: ')
print ("Seri Haberlesme basliyor\n")

while 1:
    ser.flushInput()
    karakter=ser.read().decode()
    if karakter ==       'y':
            print ("\nYes denildi\n")
            ser.flushInput()
            ser.write( b'\n[y] karakterini tusladiniz\n')
    elif karakter == "n":
            print ("\nNo denildi\n")
            ser.flushInput()
            ser.write(b'\n[n] karakterini tusladiniz \n')
    else:
            print ("\nbelirlenemeyen bir karakter girisi\n")
            ser.flushInput()
            ser.write(b'\nGirilen karakter =>')
            ser.flushInput()
            ser.write(karakter.encode())
            ser.flushInput()
            ser.write(b'\nKarakter belirlenemedigi icin cevap alinmadi. [y]veya [n] karakterlerinden birini girin\n')
    time.sleep(0.1)
0
ответ дан 21 June 2019 в 14:55

Попробуйте очистить буфер ввода перед любой командой чтения или записи.

ser.flushInput()
0
ответ дан 21 June 2019 в 14:55

Другие вопросы по тегам:

Похожие вопросы: