QT测试小工具(串口通信)
2015-08-18 21:43
489 查看
最近手头上的一个STM32的项目需要通过串口通信控制,现在手头上的开发已经完全转到FEDORA之下。所以用QT做了一个小测试工具,直接快速创建工程,选择widget,带ui文件。其中需要用到串口,在pro文件中添加QT += serialport,在头文件中包含:
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
public:
QList<QSerialPortInfo> list;
bool com_open;
QSerialPort *comport;
};
其中可以通过执行下面的程序将串口信息添加到list中。
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer();
qDebug() << "Serial Number: " << info.serialNumber();
qDebug() << "System Location: " << info.systemLocation();
list.append(info);
}
在按键的事件中,实现打开或关闭串口:
void Widget::on_pushButton_clicked()
{
if (com_open)
{
comport->close();
ui->pushButton->setText(QString("打开串口"));
com_open = false;
}
else
{
QSerialPortInfo info;
info = list.at(ui->portlist->currentIndex());//ui->portlist是一个combox
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer();
qDebug() << "Serial Number: " << info.serialNumber();
qDebug() << "System Location: " << info.systemLocation();
comport->setPort(info);
//comport->setPortName(filename);
if (comport->open(QIODevice::ReadWrite))
{
ui->pushButton->setText(QString("关闭串口"));
comport->setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections);
comport->setDataBits(QSerialPort::Data8);
comport->setParity(QSerialPort::NoParity);
comport->setStopBits(QSerialPort::OneStop);
// my_serialport->setStopBits(QSerialPort::TwoStop);
comport->setFlowControl(QSerialPort::NoFlowControl);
com_open = true;
}
else
QMessageBox::information(this, tr("Opening com failed"), tr("Could not open file %1").arg(info.portName()));
}
}
然后可以通过comport->write来发送串口数据。
参考:
Qt 串口类QSerialPort 使用笔记 -- blog.csdn.net/liyuanbhu/article/details/45540825
QT5 串口收发实例代码 -- http://blog.csdn.net/liang890319/article/details/13502885
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
public:
QList<QSerialPortInfo> list;
bool com_open;
QSerialPort *comport;
};
其中可以通过执行下面的程序将串口信息添加到list中。
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer();
qDebug() << "Serial Number: " << info.serialNumber();
qDebug() << "System Location: " << info.systemLocation();
list.append(info);
}
在按键的事件中,实现打开或关闭串口:
void Widget::on_pushButton_clicked()
{
if (com_open)
{
comport->close();
ui->pushButton->setText(QString("打开串口"));
com_open = false;
}
else
{
QSerialPortInfo info;
info = list.at(ui->portlist->currentIndex());//ui->portlist是一个combox
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer();
qDebug() << "Serial Number: " << info.serialNumber();
qDebug() << "System Location: " << info.systemLocation();
comport->setPort(info);
//comport->setPortName(filename);
if (comport->open(QIODevice::ReadWrite))
{
ui->pushButton->setText(QString("关闭串口"));
comport->setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections);
comport->setDataBits(QSerialPort::Data8);
comport->setParity(QSerialPort::NoParity);
comport->setStopBits(QSerialPort::OneStop);
// my_serialport->setStopBits(QSerialPort::TwoStop);
comport->setFlowControl(QSerialPort::NoFlowControl);
com_open = true;
}
else
QMessageBox::information(this, tr("Opening com failed"), tr("Could not open file %1").arg(info.portName()));
}
}
然后可以通过comport->write来发送串口数据。
参考:
Qt 串口类QSerialPort 使用笔记 -- blog.csdn.net/liyuanbhu/article/details/45540825
QT5 串口收发实例代码 -- http://blog.csdn.net/liang890319/article/details/13502885
相关文章推荐
- Qt 编程指南(一本全中文的书,尤其QString和QByteArray讲的不错)
- 浅谈 Qt 内存管理
- Qt中 Q_PROPERTY 的使用
- Qt中Q_PROPERTY
- qt编译错误 _main 中被引用
- qt 信号与槽
- qt下unsigned char *与QString之间的相互转换
- 文章标题
- Qt中文相关问题笔记
- [PyQt] PyQt4写的音乐播放器
- 关于QT3.3下QListViewItem的应用
- 有关openCV在QT环境的配置
- qmake提示:QDialog: 没有那个文件或目录
- 自学QT之QT编程中出现collect2.exe:-1: error: error: ld returned 1 exit status的解决办法
- qt 程序用外部程序打开文件
- QT 总结(三) 1.Qt 运行 bat 文件 QProcess 2.获取当前文件路径
- QTabWidget添加自定义的按钮
- QT显示图片
- 学习记录-Qt中控件的坐标
- QTP显示TestFlow