对对python3 Serial 串口助手的接收读取数据方法详解串口助手的接收读取数据方法详解
其实网上已经有许多python语言书写的串口,但大部分都是python2写的,没有找到一个合适的python编写的串口助手,只能
自己来写一个串口助手,由于我只需要串口能够接收读取数据就可以了,故而这个串口助手只实现了数据的接收读取。
创建串口助手首先需要创建一个类,重构类的实现过程如下:创建串口助手首先需要创建一个类,重构类的实现过程如下:
#coding=gb18030
import threading
import time
import serial
class ComThread:
def __init__(self, Port='COM3'):
#构造串口的属性
self.l_serial = None
self.alive = False
self.waitEnd = None
self.port = Port
self.ID = None
self.data = None
#定义串口等待的函数
def waiting(self):
if not self.waitEnd is None:
self.waitEnd.wait()
def SetStopEvent(self):
if not self.waitEnd is None:
self.waitEnd.set()
self.alive = False
self.stop()
#启动串口的函数
def start(self):
self.l_serial = serial.Serial()
self.l_serial.port = self.port
self.l_serial.baudrate = 115200
#设置等待时间,若超出这停止等待
self.l_serial.timeout = 2
self.l_serial.open()
#判断串口是否已经打开
if self.l_serial.isOpen():
self.waitEnd = threading.Event()
self.alive = True
self.thread_read = None
self.thread_read = threading.Thread(target=self.FirstReader)
self.thread_read.setDaemon(1)
self.thread_read.start()
return True
else:
return False
创建好类后,就要实现串口读取的功能,其读取数据的函数如下:
首先要创建一个字符串来存放接收到的数据:首先要创建一个字符串来存放接收到的数据:
data = ''
data = data.encode('utf-8')#由于串口使用的是字节,故而要进行转码,否则串口会不识别
在创建好变量来接收数据后就要开始接收数据:在创建好变量来接收数据后就要开始接收数据:
n = self.l_serial.inWaiting()#获取接收到的数据长度
if n:
#读取数据并将数据存入data
data = data + self.l_serial.read(n)
#输出接收到的数据
print('get data from serial port:', data)
#显示data的类型,便于如果出错时检查错误