#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()),this,SLOT(slotSendData()));
QSerialPortInfo info;
serialPort = new QSerialPort(this);
foreach(info, QSerialPortInfo::availablePorts())//const QSerialPortInfo &info
{
serialPort->setPort(info);
if (serialPort->open(QIODevice::ReadWrite))
{
ui->comboBoxCom->addItem(info.portName());
ui->textEditInfo->append(QStringLiteral("检测到端口列表"));
ui->textEditInfo->append(info.portName());
ui->textEditInfo->append(info.description());
ui->textEditInfo->append(info.manufacturer());
serialPort->close();
}
}
connect(serialPort, SIGNAL(readyRead()), this, SLOT(slotReadData()));
ui->comboBoxBaudRate->setCurrentIndex(0);
ui->pushButtonStart->setEnabled(false);
ui->pushButtonStop->setEnabled(false);
ui->pushButtonCloseCom->setEnabled(false);
}
Dialog::~Dialog()
{
if (timer->isActive())
{
timer->stop();
}
delete ui;
}
void Dialog::on_pushButtonOpenCom_clicked()
{
serialPort->setPortName(ui->comboBoxCom->currentText());
serialPort->open(QIODevice::ReadWrite);
serialPort->setBaudRate(ui->comboBoxBaudRate->currentText().toInt());
serialPort->setDataBits(QSerialPort::Data8);
serialPort->setParity(QSerialPort::NoParity);
serialPort->setStopBits(QSerialPort::OneStop);
serialPort->setFlowControl(QSerialPort::NoFlowControl);
ui->pushButtonOpenCom->setEnabled(false);
ui->pushButtonCloseCom->setEnabled(true);
ui->pushButtonStart->setEnabled(true);
ui->pushButtonStop->setEnabled(true);
}
void Dialog::on_pushButtonCloseCom_clicked()
{
if (serialPort->isOpen())
{
serialPort->close();
ui->pushButtonOpenCom->setEnabled(true);
ui->pushButtonCloseCom->setEnabled(false);
ui->pushButtonStart->setEnabled(false);
ui->pushButtonStop->setEnabled(false);
}
}
void Dialog::on_pushButtonStart_clicked()
{
timer->start(1000);//能发多快就发多快
}
void Dialog::on_pushButtonStop_clicked()
{
if (timer->isActive())
{
timer->stop();
}
}
void Dialog::slotSendData()
{
QByteArray temp;
temp.append(getCurrentTime());
temp.append("#");
serialPort->write(temp);
}
QString Dialog::getCurrentTime()
{
QDateTime dateTime = QDateTime::currentDateTime();
return dateTime.toString("hh-mm-ss-zzz");
}
QString str;
void Dialog::slotReadData()
{
QByteArray temp = serialPort->readAll();
if (!temp.isEmpty())
{
//byteArray.append(temp);
//if (byteArray.contains("#"))
{
str+=tr(temp);//累加接收的数据
ui->textEditReceive->append(str);//附加str字符串值
// ui->textEditReceive->setText(byteArray.split('#').at(0));
// byteArray = byteArray.right(byteArray.length() - byteArray.indexOf('#') - 1);
}
}
}
爱上杨小厨
- 粉丝: 16
- 资源: 7
最新资源
- 使用群晖NAS搭建虚拟机
- 基于minifly的学习源码-本人耗时五年完善的稳定源码移植于minifly上,不带操作系统,直接操作寄存器,代码简洁明了,算法基于数学公式,便于学习数学知识
- 基于motorcad设计的外转子发电机,磁钢采用FB6B铁氧体 ,不等匝绕组,输出功率2.3KW 定子外径156 3200RPM,18极27槽永磁同步发电机(PMSG)设计案例.
- 电力电子、电机驱动、数字滤波器matlab simulink仿真模型实现及相关算法的C代码实现 配置C2000 DSP ADC DAC PWM定时器 中断等模块,提供simulink与DSP的联合仿
- 视觉系统程序,新能源电池检测 1、支持4个相机 2、实现Profinet网卡通信 3、实现日志功能 4、实现图像存储功能 5、实现电芯有无判断、电芯和端板涂胶检测
- 基于51单片机的电子时钟设计
- 西门子smart200与汇川变频器 Modbus RTU控制程序 步科触摸屏程序 振捣控制系统 汇川变频器手册
- C#上位机与西门子plc通信,实现伺服控制与数字量控制 提供C#源代码,plc测试程序
- 45.<资源>番茄钟3.0 无代码 C#例子 WPF例子
- stm32f103的Bootloader IAP串口升级stm32f103的Bootloader IAP串口升级st m32固件的学习资料,成熟产品方案已经用在批量产品上,资料包括上位机(电脑端)运行
- 基于Spark的电商用户行为分析系统-源码+课设论文(本科期末课程设计).zip
- Qt C++pdf阅读器源码 上下翻页 精美工具栏 支持ofd格式 1. 仿WPS界面 2. 预览PDF文件 3. 支持PDF预览放大,缩小 4. 支持目录预览查看 5. 支持目录点击跳转页查
- RDM(radis桌面工具)
- 西门子s7 200smart与3台台达VFD-M变频器通讯目标:用触摸屏和西门子smart 控制3台台达变频器通讯 器件:西门子s7 200 smart PLC,3台台达VFD-M变频器,昆仑通态触摸
- 基于51单片机的电子密码锁设计
- Qt5工业上位机源码 工业电子称 无线扫码器 串口的使用 Qt5.14可运行 Qt5工业上位机应用! 一套完整工程! 工业电子称使用, 无线扫码枪的使用, 串口的使用 使用Qt5.14 用QtCrea
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈