cpp文件如下 #include "serial.h"
#include "ui_serial.h"
Serial::Serial(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Serial)
{
ui->setupUi(this);
//user
system_init();
}
Serial::~Serial()
{
delete ui;
}
/*--------------------------------------------------------------------------
* funtions
* -------------------------------------------------------------------------*/
void Serial::system_init()
{
//port config
global_port.setParity(QSerialPort::NoParity);
global_port.setDataBits(QSerialPort::Data8);
global_port.setStopBits(QSerialPort::OneStop);
//connect
connect(ui->btn_open,&QPushButton::clicked,this,&Serial::btn_open_port);
connect(ui->btn_close,&QPushButton::clicked,this,&Serial::btn_close_port);
connect(ui->btn_send,&QPushButton::clicked,this,&Serial::btn_send_data);
connect(&global_port,&QSerialPort::readyRead,this,&receive_data);
//timersetting
this->myTimer = new
QTimer;
myTimer->setInterval(100);
connect(myTimer,SIGNAL(timeout()),this,SLOT(btn_send_data()));
//timer_btn
connect(ui->timed_send,&QPushButton::clicked,this,&Serial::btn_timed_send);
}
/*--------------------------------------------------------------------------
* slots
* -------------------------------------------------------------------------*/
void Serial::btn_open_port(bool)
{
/*--------port name------------------------*/
qDebug()<<ui->cmb_port_name->currentIndex();//printf 0
// int i = 10;
// qDebug("%d",i);
switch (ui->cmb_port_name->currentIndex()) {
case 0:
global_port.setPortName("COM1");
break;
case 1:
global_port.setPortName("COM2");
break;
case 2:
global_port.setPortName("COM3");
break;
case 3:
global_port.setPortName("COM4");
break;
case 4:
global_port.setPortName("COM5");
break;
case 5:
global_port.setPortName("COM6");
break;
case 6:
global_port.setPortName("COM7");
break;
default:
global_port.setPortName("COM8");
break;
}
/*--------baud rate-----------------------------*/
switch (ui->cmb_baud_rate->currentIndex()) {
case 0:
global_port.setBaudRate(QSerialPort::Baud115200);
break;
case 1:
global_port.setBaudRate(QSerialPort::Baud57600);
break;
case 2:
global_port.setBaudRate(QSerialPort::Baud38400);
break;
case 3:
global_port.setBaudRate(QSerialPort::Baud19200);
break;
case 4:
global_port.setBaudRate(QSerialPort::Baud9600);
break;
case 5:
global_port.setBaudRate(QSerialPort::Baud4800);
break;
case 6:
global_port.setBaudRate(QSerialPort::Baud2400);
break;
default:
global_port.setBaudRate(QSerialPort::Baud1200);
break;
}
//open
global_port.open(QIODevice::ReadWrite);
ui->lab_status->setText("Connected");
//test
// global_port.write("1");
//timer test
myTimer->start () ;
}
void Serial::btn_close_port(bool)
{
ui->lab_status->setText("Disconnected");
global_port.close();
}
/*------------sending data---------------------*/
void Serial::btn_send_data(bool)
{
qDebug("11111");
QString datatest = ui->lint_send_data->text();
QByteArray array = QByteArray::fromHex (datatest.toLatin1().data());//QString--->QByteArray
global_port.write(array);
}
/*-----------receive data-----------------*/
void Serial::receive_data()
{
QByteArray array = global_port.readAll();
qDebug()<<array;
if(ui->checkBox->checkState() == Qt::Checked){
ui->plainTextEdit->insertPlainText(
QString(array.toHex(' ').toUpper().append(' ')));
}else {
ui->plainTextEdit->insertPlainText(QString(array));
}
}
void Serial::btn_timed_send()
{
myTimer->start () ;
}
界面如图 
期望按下timed_send键定时发送
数据到
串口,但是按下以后并
没有反应
是定时器设置有
问题吗