Привет, сейчас я использую 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)
Я решил проблему. Я использовал 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)
Попробуйте очистить буфер ввода перед любой командой чтения или записи.
ser.flushInput()