笔记: PYTHON3 windows下串口

#串口
import serial
import serial.tools.list_ports
import time

plist = list(serial.tools.list_ports.comports())

if len(plist) <= 0:
    print("没有发现端口!")
else:
    #检测可用端口
    for x in plist:
        serialName = x[0] #获取端口名
        ij = False
        try:
            #配置并打开端口
            serialFd = serial.Serial(port=serialName, baudrate=9600, bytesize=8,
                                 stopbits=1, timeout=10)
        except:
            print("com", serialName, "is used")
            ij = True

if ij: #无可用端口
    print("error")
    while(1):
        pass
else:
    print("可用端口名>>>", serialFd.name)
    adc = bytes("start\r\n", "ascii")
    serialFd.write(adc) #按字节发送
    #time.sleep(1)
    while(1):
        if serialFd.inWaiting(): #获取待读字节数量
            data = serialFd.readline() #获取行字节数据,直到/n或超时,阻塞
            print(data)
            serialFd.write(data)
 

serialFd = serial.Serial(0) 是打开第一个串口
print serialFd.portstr 串口的标识,windows下是COMx
serial.write(“hello") 按字节发送
serial.close() 就是关闭serial表示的串口
serial.open() 会打开这个串口
serial.Serial('COM1', 115200, timeout=10) 来设置波特率, 读取超时,还有专用函数
serial.read()可以读一个字符
serial.read(x) 是读x个字符
serial.readline() 是读一行,以/n结束,要是没有/n就一直读,阻塞。
serial.readlines()和ser.xreadlines()都需要设置超时时间
serial.baudrate = x 设置波特率
serial来查看当前串口的状态
serial.isOpen() 看看这个串口是否已经被打开

接受数据是按照bytes格式接受,如果与嵌入式系统匹配,可以用a.hex()方法转化成16进制

发送数据也是按照bytes格式发送,不支持unicode编码,在发送字符串时需要加上 str.encode('utf-8'),

数值如果要转化成bytes,用chr()方法或者格式化字符串 s = “%c” * n  % (1,2,3,4,...n)

 

serial官网

https://pythonhosted.org/pyserial/pyserial_api.html#native-ports

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值