Python3 Pyserial

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)

答案1

尝试在执行任何读取或写入命令之前刷新输入缓冲区。

ser.flushInput()

答案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)

相关内容