当前位置:   article > 正文

python串口收发_python串口通信的接收与发送

python串口通信的接收与发送

一、安装串口模块
pip install pyserial
在这里插入图片描述

二、串口接口
打印可用串口列表

port_list = list(serial.tools.list_ports.comports())
print(port_list)
  • 1
  • 2

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

ser=serial.Serial(portx,bps,timeout=timex)
name:设备名字
port:读或者写端口
baudrate:波特率
bytesize:字节大小
parity:校验位
stopbits:停止位
timeout:读超时设置
writeTimeout:写超时
xonxoff:软件流控
rtscts:硬件流控
dsrdtr:硬件流控
interCharTimeout:字符间隔超时
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

发送

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

接收

rcv = ser.read_all()
  • 1

ser对象常用方法

ser.isOpen():查看端口是否被打开。
ser.open() :打开端口‘。
ser.close():关闭端口。
ser.read():从端口读字节数据。默认1个字节。
ser.read_all():从端口接收全部数据。
ser.write("hello"):向端口写数据。
ser.readline():读一行数据。
ser.readlines():读多行数据。
in_waiting():返回接收缓存中的字节数。
flush():等待所有数据写出。
flushInput():丢弃接收缓存中的所有数据。
flushOutput():终止当前写操作,并丢弃发送缓存中的数据。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

三、操作步骤
1、打开、配置串口
2、收发数据
3、关闭串口

四、程序示例

import serial #导入模块

try:
    # 打开串口,并得到串口对象
    ser=serial.Serial("COM3", 115200, timeout=5)
    print("打开串口 ")

    while(1):
        rcv = ser.read_all()
        if(len(rcv) > 1):
            print(rcv)
        result=ser.write("hello guoguo".encode("gbk"))
    ser.close()#关闭串口

except Exception as e:
    print("---异常---:",e)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

五、工程实例

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/小桥流水78/article/detail/1008898
推荐阅读
相关标签
  

闽ICP备14008679号