参考:
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 bytewhile(1):
print(serialFd.read())