python串口收发
一、安装串口模块pip3 install pyserialer二、串口接口打开串口,并得到串口对象ser=serial.Serial(portx,bps,timeout=timex)发送result=ser.write(text.encode(“gbk”))接收rcv = ser.read_all()三、程序示例import serial #导入模块import xlrdimport time#i
·
一、安装串口模块
pip install pyserial
二、串口接口
打印可用串口列表
port_list = list(serial.tools.list_ports.comports())
print(port_list)
打开串口,并得到串口对象
ser=serial.Serial(portx,bps,timeout=timex)
name:设备名字
port:读或者写端口
baudrate:波特率
bytesize:字节大小
parity:校验位
stopbits:停止位
timeout:读超时设置
writeTimeout:写超时
xonxoff:软件流控
rtscts:硬件流控
dsrdtr:硬件流控
interCharTimeout:字符间隔超时
发送
result=ser.write(text.encode("gbk"))
接收
rcv = ser.read_all()
ser对象常用方法
ser.isOpen():查看端口是否被打开。
ser.open() :打开端口‘。
ser.close():关闭端口。
ser.read():从端口读字节数据。默认1个字节。
ser.read_all():从端口接收全部数据。
ser.write("hello"):向端口写数据。
ser.readline():读一行数据。
ser.readlines():读多行数据。
in_waiting():返回接收缓存中的字节数。
flush():等待所有数据写出。
flushInput():丢弃接收缓存中的所有数据。
flushOutput():终止当前写操作,并丢弃发送缓存中的数据。
三、操作步骤
1、打开、配置串口
2、收发数据
3、关闭串口
四、程序示例
import serial #导入模块
try:
# 打开串口,并得到串口对象
ser=serial.Serial("COM3", 115200, timeout=5)
print("打开串口 ")
while(1):
rcv = ser.read_all()
if(len(rcv) > 1):
print(rcv)
result=ser.write("hello guoguo".encode("gbk"))
ser.close()#关闭串口
except Exception as e:
print("---异常---:",e)
五、工程实例
import serial #导入模块
import xlrd
import time
#import easygui
import tkinter
try:
#端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
portx="COM6"
#波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
bps=115200
#超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
timex=5
# 打开串口,并得到串口对象
ser=serial.Serial(portx,bps,timeout=timex)
print("打开串口 ",portx)
#打开excel文件
data = xlrd.open_workbook("123.xls")
table = data.sheets()[0] # 打开第一张表
nrows = table.nrows # 获取表的行数
top = tkinter.Tk()
# 进入消息循环
top.mainloop()
#逐行打印并发送excel里面的内容
for i in range(nrows):
while(1):
print(table.row_values(i))
text = table.row_values(i)[0]
result=ser.write(text.encode("gbk"))
rcv = ser.read_all()
print(rcv)
cmpvlue = b'ok'
if(rcv == cmpvlue):
print("写入成功\n")
break
print(rcv == cmpvlue)
time.sleep(1)
print("全部写完\n")
ser.close()#关闭串口
except Exception as e:
print("---异常---:",e)
更多推荐
已为社区贡献10条内容
所有评论(0)