当前位置:   article > 正文

Python读写串口编程_python serial

python serial

python库 serial

serial为python提供的串口通信库。

pip install pyserial
  • 1

注:如果需要持续接收数据,可设置一个定时器,反复调用接收串口数据
在这里插入图片描述

串口接口

打开串口,并得到串口对象

ser=serial.Serial(portx,bps,timeout=timex)
  • 1

发送

result=ser.write(text.encode(“gbk”))
  • 1

接收

rcv = ser.read_all()
  • 1

编程实例

# TODO 串口读取数据
import serial  # 导入串口包
import time  # 导入时间包
 
 
ser = serial.Serial("COM1",115200,timeout = 0.5)  # 开启com1口,波特率115200,超时0.5s
ser.flushInput()  # 清空缓冲区
 
def main():
    while True:
        count = ser.inWaiting() # 获取串口缓冲区数据
        if count !=0 :
            recv = ser.read(ser.in_waiting).decode("gbk")  # 读出串口数据,数据采用gbk编码
            ser.write( recv.encode() ) #收到的数据发出去
            print("[",time.time(),"]recv->", recv)  # 打印一下子
        time.sleep(0.2)  # 延时0.2秒,免得CPU出问题(线程占满时间片)
 
 
 
if __name__ == '__main__':
    print("waiting receive uart data...")
    main()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

工程实例

import serial #导入模块
import xlrd
import time
#import easygui
import tkinter


try:
    #端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
    portx="COM6"
    #波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
    bps=115200
    #超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
    timex=5
    # 打开串口,并得到串口对象
    ser=serial.Serial(portx,bps,timeout=timex)
    print("打开串口 ",portx)

    #打开excel文件
    data = xlrd.open_workbook("123.xls")
    table = data.sheets()[0] # 打开第一张表
    nrows = table.nrows # 获取表的行数
    top = tkinter.Tk()
    # 进入消息循环
    top.mainloop()
    #逐行打印并发送excel里面的内容
    for i in range(nrows):
        while(1):
            print(table.row_values(i))
            text = table.row_values(i)[0]
            result=ser.write(text.encode("gbk"))
            rcv = ser.read_all()
            print(rcv)
            cmpvlue = b'ok'
            if(rcv == cmpvlue):
                print("写入成功\n")
                break
            print(rcv == cmpvlue)
            time.sleep(1)
            
    print("全部写完\n")
    ser.close()#关闭串口
    
     
except Exception as e:
    print("---异常---:",e)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/771149
推荐阅读
相关标签
  

闽ICP备14008679号