樹莓派+python+列印串列埠資料
阿新 • • 發佈:2019-01-28
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()