当前位置:   article > 正文

python pyserial serial串口通讯_python 串口通信库

python 串口通信库

python pyserial serial串口通讯

安装python 串口库

pip3 install pyserial   #python3
  • 1

直接上源码


# 安装:pip3 install pyserial   //python3

import serial
import serial.tools.list_ports

def serial_info():
    port_list = serial.tools.list_ports.comports()
    i = 0
    for port in port_list:
        i += 1
        print(i, "port.device=", port.device, "port=", port)


def serial_writ(serial_port:str, baud_rate:int, data):
    COMM = serial.Serial(serial_port,baud_rate,bytesize=8,parity='N',stopbits=1,timeout= 0.1)
    if COMM.isOpen():
        print(serial_port, "open success")
    else:
        print(serial_port, "open fail")

    if type(data) == str:
    	data += "\n"
        COMM.write(data.encode())
    else:
        for d in data:
            d += "\n"
            print(d)
            COMM.write(d.encode())

    #received_data = COMM.read(1000)
    #print(received_data.decode())
    COMM.close()




if __name__ == '__main__':
    serial_info()
    initCmds = (":INIT:CONT ON", ":FUNC:IMP:TYPE ", ":DISP:RFON OFF", ":BIAS:VOLT 2", ":TRIG:SOUR BUS", ":BIAS:STAT OFF", ":VOLT:LEV 0.03")
    serial_writ("COM7",115200,initCmds)
  • 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
代码简洁明了,然后是一些笔记:
  • 1

pyserial_API函数说明

PySerial API
serial.Serial 类

init(port=None, baudrate=9600, bytesize=EIGHTBITS, parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, inter_byte_timeout=None)

参数:

port -设备名称或无。
baudrate(int)—波特率,如9600或115200等。
bytesize—数据位数。 取值范围:5, 6, 7, 8
parity—启用奇偶校验。 可选值: ‘N’, ‘E’, ‘O’, ‘M’, ‘S’
stopbits—停止位个数。 可选值:1, 1.5, 2
timeout (float)—设置读超时值。
xonxoff (bool)—开启软件流控。
rtscts (bool) -启用硬件(RTS/CTS)流量控制。
dsrdtr (bool)—启用硬件(DSR/DTR)流量控制。
write_timeout (float)—设置写超时值。
inter_byte_timeout (float)—字符间超时,默认为None。

错误抛出:

ValueError -当参数超出范围时将被引发,例如波特率、数据位。
SerialException -如果找不到设备或无法配置。
当给出一个端口时,该端口会在对象创建时立即打开。 当port为None且需要连续调用open()时,它不会被打开。
Port: 是设备名称:根据操作系统而定。 例如:/dev/ ttyusb0 (GNU/Linux)或COM3 (Windows)。
baudrate: 可以是以下标准值之一:50、75、110、134、150、200、300、600、1200、1800、2400、4800、9600、19200、38400、57600、115200。 它们在所有平台上都得到了很好的支持。
115200以上的标准值,如:230400、460800、500000、576000、921600、1000000、1152000、1500000、2000000、2500000、3000000、3500000、4000000也适用于许多平台和设备。
**timeout = None:**永远等待/直到收到请求的字节数
**Timeout = 0:**非阻塞模式,在任何情况下立即返回,返回0或更多,直到请求的字节数
**Timeout = x:**设置Timeout为x秒(浮点数),当请求的字节数可用时立即返回,否则等待直到超时过期并返回在此之前接收到的所有字节。 Write()默认是阻塞的,除非设置了write_timeout。 有关可能的值,请参考上面的超时列表。
注意,同时启用流量控制方法(xonxoff和rtscts)可能不被支持。 通常会只使用其中一种方法,而不是两种方法。

更多详细资料请参考:

https://blog.csdn.net/xuhaoyu123/article/details/126768539?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169399207616800188591839%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169399207616800188591839&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-126768539-null-null.142v93chatgptT3_2&utm_term=python%20PARITY_NONE&spm=1018.2226.3001.4187

容易出现的错误有:

python串口通信报错:serial.serialutil.SerialException: Cannot configure port, something went wrong

原因:我是通过usb分线器连接的电脑,原来是usb口不稳定;不用分线器直接连接电脑,换个串口就可以了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/771152
推荐阅读
相关标签
  

闽ICP备14008679号