1. 程式人生 > >樹莓派+python+列印串列埠資料

樹莓派+python+列印串列埠資料

python上手沒兩天,寫一個正常的列印串列埠的程式耗費了我半天的時間,網上有很多關於樹莓串列埠python小程式,多數是在串列埠助手這樣的終端回顯,而我想要樹莓派時時打印出串列埠接收到的資料。在網上找了許多的文章,不盡人意。遇到了各種小問題。

第一個就是python print 不換行的問題,詳細自行百度。

python2.x 版本需要在printf語句後面打逗號,換行是沒有了,但是出現了時延和空格,以前的換行符變成了空格。

所以我選擇了另一種列印不換行的替代方案,sys.stdout.write() 替換print,換行和空格解決了,時延又是一個問題。

第二個就是列印時延,讓人很不爽快。

解決辦法見

連結  ,python -u 執行python 程式禁用stdout緩衝即可。

最後附上修改程式碼。

# -*- coding: utf-8 -*
#python -u 啟動,禁用stdout緩衝功能,不然列印有延時。  
import serial  
import time  
import sys
# 開啟串列埠  
ser = serial.Serial("/dev/ttyUSB0", 9600)  
def main():  
    while True:  
        # 獲得接收緩衝區字元  
        count = ser.inWaiting()  
        if count != 0:  
            # 讀取內容並回顯  
            recv =ser.read(count) 
#            print recv
            sys.stdout.write(recv)
            ser.write(recv)  
        # 清空接收緩衝區  
        ser.flushInput()  
        # 必要的軟體延時  
        time.sleep(0.1)  
      
if __name__ == '__main__':  
    try:  
        main()  
    except KeyboardInterrupt:  
        if ser != None:  
            ser.close()