PySerial模块的使用

您所在的位置:网站首页 pyserial读取串口数据的缓冲区 PySerial模块的使用

PySerial模块的使用

2023-11-24 22:56| 来源: 网络整理| 查看: 265

PySerial模块的使用 serial.Serial类 serial.Serial的参数 参数功能port设置端口名称,例如’COM1’。类型:strbaudrate设置波特率。类型:intbytesize设置数据位。可能的值:FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITSparity设置校验。可能的值: PARITY_NONE, PARITY_EVEN, ,PARITY_ODD PARITY_MARKPARITY_SPACEstopbits设置停止位。可能的值: STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWOtimeout设置接收超时时间。以秒为单位。类型:float,默认None禁用。xonxoff设置是否启用软件流量控制。类型:boolrtscts设置是否启用硬件(RTS/CTS)流量控制。类型:booldsrdtr设置是否启用硬件 (DSR/DTR) 流量控制。类型:boolwrite_timeout设置写入超时时间。以秒为单位。类型:floatinter_byte_timeout设置插入字符超时时间。以秒为单位。类型:float,默认None禁用。exclusive设置独占访问模式(仅限 POSIX)。 注意 ValueError – 当参数超出范围时将引发,例如波特率、数据位。SerialException – 如果找不到或无法配置设备。在创建Serial对象时,如果port指定了端口名称,那么在创建对象后串口会自动打开。如果没有指定port,那么需要调用open()方法打开端口。波特率全平台支持50、75、110、134、150、200、300、600、1200、1800、2400、4800、9600、19200、38400、57600、115200波特率部分平台支持230400、460800、500000、576000、921600、1000000、1152000、1500000、2000000、2500000、3000000、3500000、400000timeout的说明: timeout = None:永远等待/直到收到请求的字节数timeout = 0: 非阻塞模式,任何情况下立即返回,返回零个或多个,直到请求的字节数timeout = x: set timeout to xseconds (float allowed) 当请求的字节数可用时立即返回,否则等到超时到期并返回到那时为止收到的所有字节。 write()默认情况下是阻塞的,除非设置了write_timeout (设置的值同上)。可能不支持同时启用两种流量控制方法(xonxoff和*rtscts )。*通常一次使用其中一种方法,而不是同时使用两种方法。并非所有平台都支持dsrdtr (已忽略)。将其设置为具有其状态遵循rtscts的None效果。还可以考虑使用函数serial_for_url()而不是直接创建 Serial 实例。在 2.5 版中更改:dsrdtr现在默认为False(而不是None)在 3.0 版更改:不再支持数字作为端口参数3.3 新版功能:exclusive标志 常量 常量名称说明BAUDRATES波特率有效波特率列表。该列表可能不完整,因此设备也可能支持更高和/或中等波特率(只读)。BYTESIZES数据位设备的有效字节大小列表(只读)。PARITIES校验设备的有效奇偶校验列表(只读)。STOPBITS停止位设备的有效停止位宽度列表(只读)。 常用方法 方法参数功能注意open()打开端口,rts和的状态dtr被应用一旦端口打开,某些操作系统和/或驱动程序可能会自动激活 RTS 和/或 DTR。当rts或 dtr的设置值与其默认值 ( True/active)不同时,RTS/DTR 可能会出现故障。close()立即关闭端口__del__销毁Serial实例当串行端口实例被释放时关闭端口。read(size=1)· size为读取字节数· 返回读取到的字节,类型:bytes从缓存区读取指定字节数的字节流如果设置了超时,则返回的字符数可能少于请求的字符数。如果没有超时,它将阻塞直到读取请求的字节数。read_intil(expected=LF, size=None)· expected设置结束码,类型:bytes· size设置接收字节数从缓存区读取以指定序列结尾的字节流,如果达到size指定的大小也会停止阻塞返回数据读取直到找到指定的序列(默认为’\n’),直到超过大小或发生超时。如果设置了超时,则返回的字符数可能少于请求的字符数。如果没有超时,它将阻塞直到达到请求的字节数或指定的序列。cancel_read()从另一个线程取消挂起的读取操作。阻塞调用的 read()会立即中止。· read()不会报告任何错误,但会返回到该点为止收到的所有数据(类似于超时)。· Posix和Windows平台支持write(date)· date为要发送的数据,类型为bytes· 返回以发送的字节数,类型:int发送数据,返回已发送的字节数· SerialTimeoutException: 如果为端口配置了写超时并且超过了时间则引发该报错。· 必须对 Unicode 字符串进行编码,例如'hello'.encode('utf-8')cancel_write()从另一个线程取消挂起的写操作。该 write()方法将立即返回(未指示错误)。· 操作系统可能仍在从缓冲区发送, reset_output_buffer()可能需要单独调用 清楚发送缓存区· Posix和Windows平台支持flush()直到所有数据都被写入再刷新文件流对象in_waiting返回接收缓存区的字节数out_waiting返回写入缓存区的字节数Windows和Posix平台支持reset_input_buffer()清除接收缓存区的所有数据3.0版本更名为flushInput()reset_output_buffer()清除发送缓存区的所有数据3.0版本更名为flushOutput()send_break(duration=0.25)duration以秒为单位也没搞清楚这个方法的作用break_condition返回当前是否处于空闲状态rts设置rts是否使用,类型:bool返回rts状态,类型:boolcts获取cts状态,类型:booldtr设置drt是否使用,类型:bool返回rts状态,类型:booldsr获取dsr状态,类型:boolri获取ri状态,类型:boolRI是由外部设备通过串口发送给计算机的一个控制信号,表示外部设备中有来电或呼叫等事件发生。cd获取cd状态,类型:boolCD是指调制解调器通过串口向计算机发送的一个信号,表示调制解调器已经连接到远程通信方,可以进行数据传输。在计算机与远程通信方进行数据传输之前,需要等待CD信号的到来,以确保通信连接已经建立成功。name获取串口的名字,类型:stris_open返回串口是否被打开,类型:boolport设置端口名。如果端口已经打开的话会关闭端口并根据新的设置重新打开端口baudrate设置波特率,或者获取波特率,类型:intbytesize设置数据位,或者获取数据位,类型:int可能设置的值:FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITSType:intparity设置校验,或者获取校验可能设置的值:PARITY_NONE, PARITY_EVEN, PARITY_ODD PARITY_MARK, PARITY_SPACEstopbits设置停止位,或者获取停止位可能设置的值STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE,timeout设置接收超时时间,或者获取接收超时时间,类型:floatwrite_timeout设置写入超时时间,或者获取写入超时时间,类型:floatinter_byte_timeout没懂什么意思xonxoff设置是否启用软件流控,或者获取是否启用软件流控,类型:boolrtscts设置是否启用硬件流控,或者获取是否启用硬件流控,类型:booldsrdtr设置是否启用硬件流控,或者获取是否启用硬件流控,类型:boolrs485_mode设置是否启用RS485设置,或者获取是否启用RS485设置,类型:rs485.RS485SettingsorNone平台:· Posix (Linux, limited set of hardware)· Windows (only RTS on TX possible)readable()返回是否可读writeable()返回是否可写seekable()没懂啥意思readinto(b)b为列表,数组返回b将读取到的数据写入到b中,然后返回breadline(size=-1)size为读取到的最大字节数从字节流中读取一行数据(b’\n’结尾的),如果设定了size则最大长度不超过该值readlines(hint=-1)hint为读取的行数从字节流中读取多行,行数由hint设定writelines(lines)lines为写入的行数写入多行行的末尾需要加分行符get_settings()返回带有端口设置的字典这对于备份当前设置很有用,以便以后可以使用 恢复它们apply_settings()。请注意,控制线 (RTS/DTR) 的状态不是设置的一部分。apply_settings(d)d为带有端口设置的字典(该字典通常由get_settings()创建)设置端口参数__enter__在使用with语句时,返回Serial instance__exit__关闭串口fileno()返回此对象打开的端口的文件描述符编号没懂什么意思set_input_flow_control(enable)enable为是否启用软件流量控制,类型:bool设置是否启动软件流控· 如果启用会将 XON (true) 和 XOFF (false) 发送到其他设备。· *在 3.0 版中更改:*重命名为flowControlOutset_output_flow_control(enable)enable类型:bool当软件或者硬件流量控制启用时,设置在输出数据时是否手动进行流量控制 serial.tools.list_ports

可以执行此模块以获取端口列表 (python -m serial.tools.list_ports)。

serial.tools.list_ports.comports方法

使用serial.tools.list_ports.comports(include_links=False)方法获取端口信息,返回由ListPortInfo类组成的列表。

方法参数功能serial.tools.list_ports.comports(include_links=False)include_links符号链接是否在/dev下,类型:bool获取串口信息并返回由serial.tools.list_ports.ListPortInfo类组成的列表 serial.tools.list_ports.ListPortInfo类 ListPortInfo类包含的方法功能说明device返回完整的设备名称/路径, e.g: /dev/ttyUSB0name返回设备的名称,e.g: COM3常用description返回设备描述信息,e.g:USB Serial Port (COM3)hwid返回技术信息,e.g:USB VID:PID=0403:6001 SER=FTDWFGQCAvid返回USB的厂家ID(integer, 0…65535)pid返回USB的产品ID(integer, 0…65535)serial_number字符串格式返回USB串口序号,e.g: FTDWFGQCAlocation字符串格式返回USB串口的位置manufacture返回USB串口制造商,由制造商提供product返回USB产品字符串,有制造商提供interface返回接口特定描述 示例 p = serial.tools.list_ports.comports(include_links=True) print('端口列表:', p) print('device = ', p[0].device) print('name = ', p[0].name) print('description = ', p[0].description) print('hwid = ', p[0].hwid) print('vid = ', p[0].vid) print('pid = ', p[0].pid) print('serial_number = ', p[0].serial_number) print('location = ', p[0].location) print('manufacturer', p[0].manufacturer) print('product = ', p[0].product) print('interface = ', p[0].interface)

运行结果:

端口列表: [, , ] ************************************************** device = COM1 name = COM1 description = ELTIMA Virtual Serial Port (COM1->COM2) hwid = VSBC7\DEVICES\0000 vid = None pid = None serial_number = None location = None manufacturer ELTIMA Software product = None interface = None


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3