创建串口对象、搜索所有可用串口
在Widget构造函数中创建一个串口对象并搜索所有可用串口:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
QStringList serialNamePort;
ui->setupUi(this);
this->setWindowTitle("serial_led");
/* 创建一个串口对象 */
serialPort = new QSerialPort(this);
/* 搜索所有可用串口 */
foreach (const QSerialPortInfo &inf0, QSerialPortInfo::availablePorts()) {
serialNamePort<<inf0.portName();
}
ui->serialBox->addItems(serialNamePort);
}
(4)编写“打开串口”槽函数
大林上位机机器视觉_苏州电工培训_苏州PLC培训_苏州上位机培训_苏州机器视觉培训_苏州工业机器人培训_最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)
信号和槽是用于对象之间的通信,它是Qt的核心机制。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。如果有对象对这个信号感兴趣,想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这里,我们点击打开串口按钮会发出clicked信号,此时对应槽函数on_openButton_clicked会被调用。下面我们来实现这个槽函数:
void Widget::on_openButton_clicked()
{
/* 串口设置 */
serialPort->setPortName(ui->serialBox->currentText());
serialPort->setBaudRate(ui->baudrateBox->currentText().toInt());
serialPort->setDataBits(QSerialPort::Data8);
serialPort->setStopBits(QSerialPort::OneStop);
serialPort->setParity(QSerialPort::NoParity);
/* 打开串口提示框 */
if (true == serialPort->open(QIODevice::ReadWrite))
{
QMessageBox::information(this, "提示", "串口打开成功");
}
else
{
QMessageBox::critical(this, "提示", "串口打开失败");
}
}
这里我们写死数据位、停止位、求校验位;增加提示框。其中使用QMessageBox需要包含如下头文件:
#include
(5)编写“关闭串口”、“点灯”、“灭灯”槽函数
按照上面打开串口槽函数的方法编写关闭串口、点灯、灭灯槽函数:
void Widget::on_closeButton_clicked()
{
serialPort->close();
}
void Widget::on_onButton_clicked()
{
serialPort->write("ON\n");
qDebug("ON\n");
}
void Widget::on_offButton_clicked()
{
serialPort->write("OFF\n");
qDebug("OFF\n");
}
以上就是上位机逻辑代码的编写。
版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1
技术支持: 易动力网络