Python3 Pyserial
Hi, I am currently using python 3.6. I have already made several applications using pyserial and python 2.7. I want to do the same with Python 3.6. not only doesn't it give any error but also there is no data .
# -*- 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) 2 2 Answers
Try flushing the input buffer before any read or write commands.
ser.flushInput() 0 i have solved the problem. i have used ser.flush but even if i haven't used it, the program would work. I thought it would be well to clear the input buffer. I have made some additions to the code.
# -*- 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)