树莓派+python+打印串口数据

2/13/2017来源:经验技巧人气:2294

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()