python上手沒兩天,寫一個正常的打印串口的程序耗費(fèi)了我半天的時間,網(wǎng)上有很多關(guān)于樹莓串口python小程序,多數(shù)是在串口助手這樣的終端回顯,而我想要樹莓派時時打印出串口接收到的數(shù)據(jù)。在網(wǎng)上找了許多的文章,不盡人意。遇到了各種小問題。
第一個就是python PRint 不換行的問題,詳細(xì)自行百度。
python2.x 版本需要在printf語句后面打逗號,換行是沒有了,但是出現(xiàn)了時延和空格,以前的換行符變成了空格。
所以我選擇了另一種打印不換行的替代方案,sys.stdout.write() 替換print,換行和空格解決了,時延又是一個問題。
第二個就是打印時延,讓人很不爽快。
解決辦法見鏈接 ,python -u 運(yùn)行python 程序禁用stdout緩沖即可。
最后附上修改代碼。
# -*- coding: utf-8 -*#python -u 啟動,禁用stdout緩沖功能,不然打印有延時。 import serial import time import sys# 打開串口 ser = serial.Serial("/dev/ttyUSB0", 9600) def main(): while True: # 獲得接收緩沖區(qū)字符 count = ser.inWaiting() if count != 0: # 讀取內(nèi)容并回顯 recv =ser.read(count) # print recv sys.stdout.write(recv) ser.write(recv) # 清空接收緩沖區(qū) ser.flushInput() # 必要的軟件延時 time.sleep(0.1) if __name__ == '__main__': try: main() except KeyboardInterrupt: if ser != None: ser.close()
新聞熱點
疑難解答