SerialPort

#pragma once
#include <QSerialPort>
#include <QObject>
class QThread;

class LkSerialPort : public QObject
{
	Q_OBJECT
public:
	LkSerialPort(QObject *parent = 0);
	~LkSerialPort();
	virtual void init(QString portName, int baudRate);
	virtual void parse(QByteArray data) = 0;
	void writeData(QByteArray data);
	void setRecLength(int len);

public slots:
	virtual void onReceive() = 0;
	
signals:
	void serialChanged(QByteArray);
protected:
	QSerialPort *mPort;
	QByteArray mRecBytes;
	int mRecLen;

private:	
	QThread *mThread;
};

#include "LkSerialPort.h"
#include <QThread>
#include <QMessageBox>

LkSerialPort::LkSerialPort(QObject *parent)
	: QObject(parent)
{
	
}

LkSerialPort::~LkSerialPort()
{
	mPort->close();
	mPort->deleteLater();
	mThread->quit();
	mThread->wait();
	mThread->deleteLater();
}

void LkSerialPort::init(QString portName, int baudRate)
{
	mThread = new QThread();
	mPort = new QSerialPort();
	mPort->setPortName(portName);
	mPort->setBaudRate(baudRate);
	mPort->setParity(QSerialPort::NoParity);

	if (!mPort->open(QIODevice::ReadWrite))
	{
		QMessageBox msg;
		msg.setText(QString::fromLocal8Bit("串口打开失败!"));
		msg.exec();
	}	

	this->moveToThread(mThread);
	mPort->moveToThread(mThread);
	mThread->start();
	mRecLen = 0;
}

void LkSerialPort::writeData(QByteArray data)
{
	mPort->write(data.data());
}

void LkSerialPort::setRecLength(int len)
{
	mRecLen = len;
}

void LkSerialPort::onReceive()
{	
	
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值