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()
新闻热点
疑难解答