2 Star 8 Fork 1

宋志硕 / QT_串口调试助手

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
serial.cpp 2.96 KB
一键复制 编辑 原始数据 按行查看 历史
宋志硕 提交于 2020-07-18 19:54 . 初次提交
#include "serial.h"
#include "QDebug"
serial::serial(QObject *parent) : QObject(parent)
{
m_serialPort = new QSerialPort;
}
// 扫描可用串口
QStringList serial::scanSerial()
{
QStringList serialStrList;
// 读取串口信息
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
m_serialPort->setPort(info);
// 判断端口能否以读写方式打开
qDebug()<<endl<<"Name"<<endl;
if(m_serialPort->open(QIODevice::ReadWrite))
{
serialStrList.append(m_serialPort->portName());
m_serialPort->close(); // 然后自动关闭等待人为开启(通过"打开串口按钮")
}
}
return serialStrList;
}
// 打开串口
bool serial::open(QString serialName, int baudRate)
{
// 设置串口名
m_serialPort->setPortName(serialName);
// 打开串口(以读写方式)
if(m_serialPort->open(QIODevice::ReadWrite))
{
m_serialPort->setBaudRate(baudRate); // 设置波特率(默认为115200)
m_serialPort->setDataBits( QSerialPort::Data8 ); // 设置数据位(数据位为8位)
m_serialPort->setParity( QSerialPort::NoParity ); // 设置校验位(无校验位)
m_serialPort->setStopBits( QSerialPort::OneStop ); // 设置停止位(停止位为1)
m_serialPort->setFlowControl( QSerialPort::NoFlowControl ); // 设置流控制(无数据流控制)
// 当下位机中有数据发送过来时就会响应这个槽函数
connect(m_serialPort, SIGNAL(readyRead()), this, SLOT(readData()));
// 当下位机中有数据发送过来时就会触发这个信号,以提示其它类对象
connect(m_serialPort, SIGNAL(readyRead()), this, SIGNAL(readSignal()));
return true;
}
return false;
}
// 关闭串口
void serial::close()
{
m_serialPort->clear();
m_serialPort->close();
}
// 发送数据给下位机
void serial::sendData(QByteArray &sendData)
{
// 发送数据帧
m_serialPort->write(sendData);
}
// 读取下位机发来数据
void serial::readData()
{
// 将下位机发来数据存储在数据缓冲区
m_readBuf = m_serialPort->readAll();
}
QByteArray serial::getReadBuf()
{
qDebug()<<"now:"<<m_readBuf<<endl;
return m_readBuf;
}
void serial::clearReadBuf()
{
m_readBuf.clear();
}
QByteArray serial::hexStringToByteArray(QString HexString)
{
bool ok;
QByteArray ret;
HexString = HexString.trimmed();
HexString = HexString.simplified();
QStringList sl = HexString.split(" ");
foreach (QString s, sl)
{
if(!s.isEmpty())
{
char c = static_cast<char>(s.toInt(&ok, 16) & 0xFF);
if(ok)
{
ret.append(c);
}
else
{
qDebug()<<"非法的16进制字符:"<<s;
QMessageBox::warning(nullptr, tr("错误:"), QString("非法的16进制字符: \"%1\"").arg(s));
}
}
}
return ret;
}
C/C++
1
https://gitee.com/song_zhi_shu/qt__serial_debugging_assistant.git
git@gitee.com:song_zhi_shu/qt__serial_debugging_assistant.git
song_zhi_shu
qt__serial_debugging_assistant
QT_串口调试助手
master

搜索帮助