70 lines
1.7 KiB
C++
70 lines
1.7 KiB
C++
#ifndef PARAMETERHANDLER_H
|
||
#define PARAMETERHANDLER_H
|
||
|
||
#include <QByteArray>
|
||
#include <QObject>
|
||
#include <QSerialPort>
|
||
#include <QSerialPortInfo> // <-- 增加此头文件
|
||
#include <QString>
|
||
|
||
class ParameterHandler : public QObject
|
||
{
|
||
Q_OBJECT
|
||
|
||
public:
|
||
// 构造函数:接受父对象
|
||
explicit ParameterHandler(QObject *parent = nullptr);
|
||
|
||
// 析构函数
|
||
~ParameterHandler();
|
||
|
||
static QStringList getAvailablePortNames(); // <-- 新增的静态函数声明
|
||
/**
|
||
* @brief 尝试打开并配置串口
|
||
* @param portName 要打开的串口名称 (例如 "COM3" 或 "/dev/ttyUSB0")
|
||
* @return 成功返回 true,失败返回 false
|
||
*/
|
||
bool openPort(const QString &portName);
|
||
|
||
// 关闭串口
|
||
void closePort();
|
||
|
||
// 检查串口是否已打开
|
||
bool isPortOpen() const;
|
||
|
||
/**
|
||
* @brief 写入数据到串口
|
||
* @param data 要发送的 QByteArray 数据
|
||
* @return 成功写入的字节数,失败返回 -1
|
||
*/
|
||
qint64 writeData(const QByteArray &data);
|
||
|
||
// 获取当前串口名称
|
||
QString portName() const;
|
||
|
||
signals:
|
||
/**
|
||
* @brief 接收到新数据时发出的信号
|
||
* @param data 接收到的数据
|
||
*/
|
||
void dataReceived(const QByteArray &data);
|
||
|
||
/**
|
||
* @brief 串口出错时发出的信号
|
||
* @param errorString 错误描述字符串
|
||
*/
|
||
void errorOccurred(const QString &errorString);
|
||
|
||
private slots:
|
||
// 处理串口发出的 readyRead 信号,读取数据
|
||
void handleReadyRead();
|
||
|
||
// 处理串口发出的 errorOccurred 信号,报告错误
|
||
void handleError(QSerialPort::SerialPortError error);
|
||
|
||
private:
|
||
QSerialPort *m_serialPort;
|
||
};
|
||
|
||
#endif // PARAMETERHANDLER_H
|