Python读写串口编程

python库 serial

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

pip install pyserial

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

串口接口

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

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

发送

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

接收

rcv = ser.read_all()

编程实例

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

工程实例

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
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值