赞
踩
pip3 install pyserial #python3
# 安装: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)
代码简洁明了,然后是一些笔记:
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口不稳定;不用分线器直接连接电脑,换个串口就可以了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。