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