python 串口pyserial

参考:

1、https://pyserial.readthedocs.io/en/latest/pyserial_api.html?highlight=flush


安装:
需要安装Pyserial
pip install Pyserial
成功后用,在python IED中测试,import serial

打开:
>>>ser=serial.Serial("COM5",115200),
如果打不开,检查测试环境
发送:
>>>ser.write('hello,serial test'.encode())
17
发送测试(如果返回字节数,说明返回成功),这里需要转换一个编码为字节
接收:
>>> print(ser.readline())
b'abcdefg\r\n'
这里是串口接收,有接收的超时。设备或是串口助手发送一个字符串,以回车换行结束,这里就可以收到打印出来。
也可以用ser.read(),这里只接收一个字符来实现


关闭串口
>>> ser.close()

《测试用脚本》
import serial  
ser=serial.Serial("COM5",115200,timeout=0.5)  
for i in range(0,100-1):  
    ser.write('hello\r\n'.encode())  
print(ser.readline());  
ser.close()

《获取PC下串口的名称》
#!/usr/bin/env python
# -*- coding: utf-8 -*
import serial
import serial.tools.list_ports

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

if len(plist) <= 0:
    print "The Serial port can't find!"
else:
    plist_0 =list(plist[0])
    serialName = plist_0[0]
    serialFd = serial.Serial(serialName,9600,timeout = 60)

    print "check which port was really used >",serialFd.name

注意点:

1、读取和发送的是byte形式,

2、write和readline的内容以'\n'结尾

import sys
import serial
import serial.tools.list_ports

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

if len(plist) <= 0:
    print ("The Serial port can't find!")
else:
    plist_0 = list(plist[0])
    serialName = plist_0[0]
    serialFd = serial.Serial(serialName, 9600, timeout = 60) #注意串口波特率
    print("check which port was really used >", serialFd.name)
#self test ,TX - RX
    for i in range (0,10):        
        serialFd.write(b'hello')        
        print(serialFd.read())

    serialFd.flushInput()

    print("self test over")

    #read byte by byte
    while(1):

       print(serialFd.read())


猜你喜欢

转载自blog.csdn.net/u011270542/article/details/80432191