pySerial 封装了串口通讯模块,支持Linux、Windows、BSD(可能支持所有支持POSIX的操作系统),支持Jython(Java)和IconPython(.NET and Mono).pyserial模块封装了对串口的访问

端口号默认从0开始,程序中不需要知道端口名称

像文件读写一样的API,read、write(readline等也受支持)

支持二进制传输,没有null消除,没有cr-lf转换
所有程序全由Python完成,除了标准库外不依赖其他包,除了pywin32(windows)、JavaComm(Jython). POSIX(Linux, BSD) 只依赖Python标准库

pyserial库的安装:pip install pyserial

#资料  https://blog.csdn.net/u012611644/article/details/79125234
#https://www.cnblogs.com/dongxiaodong/p/9992083.html
import serial #导入串口通讯库
import serial.tools.list_ports #ser=serial.Serial(4,9600,timeout=0.5) #winsows系统使用com4口连接串行口
ser=serial.Serial("com4",9600,timeout=0.5) #winsows系统使用com4口连接串行口--同时打开串行口
#ser=serial.Serial("com4",9600)
#参数3 连接超时--可选;None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)--按照设置的时间操作一次
#参数1 端口-Arduino端口可以用米思齐查看
#参数2 波特率.#波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
print(ser)
#Serial<id=0xaf9979d550, open=True>(port='com4', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
print(ser.name) #打印设备名
#com4
print(ser.port) #打印设备名
#com4
print(ser.baudrate) #获取波特率
port_list = serial.tools.list_ports.comports() #返回可用的串口信息对象列表
#[<serial.tools.list_ports_common.ListPortInfo object at 0x000000ACEB8A0390>, <serial.tools.list_ports_common.ListPortInfo object at 0x000000ACEB939470>]
 print(port_list) #[<serial.tools.list_ports_common.ListPortInfo object at 0x0000002847D5BD30>] if len(port_list) == 0: print('无可用串口') else: for i in range(0, len(port_list)): print(port_list[i]) #COM4 - USB-SERIAL CH340 (COM4)
    #port_list[i].name 返回串口名称
while True:

    data = ser.readline().decode('utf-8') #是读一行,以/n结束,要是没有/n就一直读,阻塞
print(data) # 29.00
print(ser.writeTimeout) #data = ser.readlines()和ser.xreadlines()#都需要设置超时时间
#ser.readlines() #读取多行,返回列表,必须匹配超时(timeout)使用
#ser.close() #关闭端口
#ser.write(b"hello")#向端口写数据,并返回发送字节数[好像只能写字节数据]
#s = ser.read(10)#从端口读10个字节
#ser.open() #打开端口
#ser.baudrate = 9600 #设置波特率
#ser.isOpen() #看看这个串口是否已经被打开
#ser.in_waiting #获取输入缓冲区的剩余字节数
#ser.out_waiting #获取输出缓冲区的字节数
#ser.timeout 返回超时设置的时间
#ser.writeTimeout #写超时
#ser.bytesize 字节大小---8
s = serial.tools.list_ports.comports() #获取可用的串口列表
len(s)  #返回可用串口数目
c=s[0]  返回指定串口信息--COM3 - USB-SERIAL CH340 (COM3)

例子:找出可用串口

import serial
import serial.tools.list_ports port = serial.tools.list_ports.comports() #返回可用的串口信息对象列表
#[<serial.tools.list_ports_common.ListPortInfo object at 0x000000ACEB8A0390>, <serial.tools.list_ports_common.ListPortInfo object at 0x000000ACEB939470>] if len(port) <= 0:
#len(port) 返回可用串口总数
print("找不到可用的端口") else:
print('可用串口总数:',len(port))
port_0 = list(port[0]) #把可用的第0个串口以字符串列表形式返回
#['COM3', 'USB-SERIAL CH340 (COM3)', 'USB VID:PID=1A86:7523 SER=5 LOCATION=1-1']

port_serial_0 = port_0[0] #返回串口名称

#COM3
异常:
ValueError:参数错误
SerialException:找不到设备或不能配置
 
 

ser.baudrate=9600#设置波特率

ser.bytesize=8#字节大小
ser.bytesize=serial.EiGHTBITS#8位数据位

ser.parity=serial.PARITY_EVEN#偶校验
ser.parity=serial.PARITY_NONE#无校验
ser.parity=serial.PARITY_ODD#奇校验

ser.stopbits=1#停止位
ser.timeout=0.5#读超时设置
ser.writeTimeout=0.5#写超时
ser.xonxoff#软件流控
ser.rtscts#硬件流控
ser.dsrdtr#硬件流控
ser.interCharTimeout#字符间隔超时

serial.inWaiting() 判断当前接收的数据

serial.flushInput() 清除输入缓冲区数据

serial.flushOutput() 中止当前输出并清除输出缓冲区数据

最新文章

  1. HTML5获取地理位置
  2. C++中定义比较函数的三种方法
  3. hdu 5029 Relief grain(树链剖分+线段树)
  4. hdu 4447 Yuanfang, What Do You Think?
  5. android图片的压缩和水印
  6. Intrusion Detection of Specific Area Based on Video
  7. First Record
  8. Razor引擎的转换数据类型
  9. 用Iconv应对NodeJs对称加密技术在汉字编码与NoSQL的一些坑洞
  10. leetcode202(Floyd判圈算法(龟兔赛跑算法))
  11. 【巨杉答疑】巨杉数据库和mongodb有什么关系吗?
  12. 网络1711班 C语言第一次作业批改总结
  13. spark-shell报错:Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
  14. 复习IIC协议---以AT24C02为例
  15. idea没配置Tomcat容器报错及解决方法
  16. yum安装时rpmdb损坏解决方法
  17. 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)
  18. 【题解】Luogu P4363 [九省联考2018]一双木棋chess
  19. js小练习-移除数组中的元素
  20. 分布式文件系统 ~MogileFS~

热门文章

  1. 【Spring】---【IOC入门案例】
  2. 工作中经常用到 github 上优秀、实用、轻量级、无依赖的插件和库
  3. cocos2dx基础篇(15) 列表视图CCTableView
  4. Spring Security Session Time Out
  5. python面试题--初级(二)
  6. MySQL-快速入门(13)MySQL日志
  7. 剑指Offer编程题(Java实现)——从尾到头打印链表
  8. 类———用类定义对象———error:C++表达式必须包含类类型
  9. package.json的所有配置项及其用法,你都熟悉么
  10. 如何遍历div里面的文本内容,用each方法,