#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QMessageBox"
int n1=0,n2=0,n3=0,n4=0;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->spinBox->setMinimum(0); // 最小值
ui->spinBox->setMaximum(255); // 最大值
ui->spinBox->setSingleStep(1); // 步长
ui->slider->setSingleStep(1);
connect(ui->slider, SIGNAL(valueChanged(int)), this, SLOT(light(int)));
connect(ui->spinBox, SIGNAL(valueChanged(int)),this, SLOT(light1(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_openBtn_clicked()
{
if(ui->comboBox->isEnabled())
{
ui->openBtn->setText("关闭串口");
ui->comboBox->setDisabled(true);
serial.setPortName(ui->comboBox->currentText());
serial.setBaudRate(QSerialPort::Baud19200,QSerialPort::AllDirections);//设置波特率和读写方向
serial.setDataBits(QSerialPort::Data8);//数据位为8位
serial.setFlowControl(QSerialPort::NoFlowControl);//无流控制
serial.setParity(QSerialPort::NoParity);//无校验位
serial.setStopBits(QSerialPort::OneStop);//一位停止位
serial.close();
if(serial.open(QIODevice::ReadWrite))//以可读写的方式打开串口
{
ui->openBtn->setText("关闭串口");
ui->comboBox->setEnabled(false);
//connect(&serial,SIGNAL(readyRead()),this,SLOT(read_Com()));
//把串口的readyRead()信号绑定到read_Com()这个槽函数上
}else{
QMessageBox::warning(NULL, "warning", "Serial port is occupied", QMessageBox::Retry);
}
}else{
ui->openBtn->setText("打开串口");
ui->comboBox->setEnabled(true);
serial.close();
}
}
/*void MainWindow::read_Com()
{
QByteArray temp=serial.read(1);
if(!temp.isEmpty())
{
ui->recvTextEdit->insertPlainText("Ox");
ui->recvTextEdit->insertPlainText(temp.toHex());//显示接收到的数据的十六进制
ui->recvTextEdit->insertPlainText(" ");
}
}
*/
/*void MainWindow::on_sendBtn_clicked()
{
serial.write(ui->sendTextEdit->toPlainText().toLatin1());//以ASCII码的形式通过串口发送出去。
}*/
void MainWindow::light(int value)
{
QString str,str1,str2,str3,str4;
QString t1="T";
QString t2="T";
QString t3="T";
QString t4="T";
int pos = ui->slider->value();
ui->spinBox->setValue(pos);
if(ui->checkBox->isChecked())
{
str1=QString("%1").arg(pos, 3, 10, QChar('0'));//3位数补0
n1=pos;
if(pos==0)
{
t1="F";
}
else
{
t1="T";
}
}
else
{
str1=QString("%1").arg(n1, 3, 10, QChar('0'));//3位数补0
}
if(ui->checkBox_2->isChecked())
{
str2=QString("%1").arg(pos, 3, 10, QChar('0'));//3位数补0
n2=pos;
if(pos==0)
{
t2="F";
}
else
{
t2="T";
}
}
else
{
str2=QString("%1").arg(n2, 3, 10, QChar('0'));//3位数补0
}
if(ui->checkBox_3->isChecked())
{
str3=QString("%1").arg(pos, 3, 10, QChar('0'));//3位数补0
n3=pos;
if(pos==0)
{
t3="F";
}
else
{
t3="T";
}
}
else
{
str3=QString("%1").arg(n3, 3, 10, QChar('0'));//3位数补0
}
if(ui->checkBox_4->isChecked())
{
str4=QString("%1").arg(pos, 3, 10, QChar('0'));//3位数补0
n4=pos;
if(pos==0)
{
t4="F";
}
else
{
t4="T";
}
}
else
{
str4=QString("%1").arg(n4, 3, 10, QChar('0'));//3位数补0
}
str="S"+str1+t1+str2+t2+str3+t3+str4+t4+"C#";
qDebug()<<str;
serial.write(str.toLatin1());//以ASCII码的形式通过串口发送出去。
}
void MainWindow::light1(int value)
{
QString str,str1,str2,str3,str4;
QString t1="T";
QString t2="T";
QString t3="T";
QString t4="T";
int pos = ui->spinBox->value();
ui->slider->setValue(pos);
if(ui->checkBox->isChecked())
{
str1=QString("%1").arg(pos, 3, 10, QChar('0'));//3位数补0
n1=pos;
if(pos==0)
{
t1="F";
}
else
{
t1="T";
}
}
else
{
str1=QString("%1").arg(n1, 3, 10, QChar('0'));//3位数补0
}
if(ui->checkBox_2->isChecked())
{
str2=QString("%1").arg(pos, 3, 10, QChar('0'));//3位数补0
n2=pos;
if(pos==0)
{
t2="F";
}
else
{
t2="T";
}
}
else
{
str2=QString("%1").arg(n2, 3, 10, QChar('0'));//3位数补0
}
if(ui->checkBox_3->isChecked())
{
str3=QString("%1").arg(pos, 3, 10, QChar('0'));//3位数补0
n3=pos;
if(pos==0)
{
t3="F";
}
else
{
t3="T";
}
}
else
{
str3=QString("%1").arg(n3, 3, 10, QChar('0'));//3位数补0
}
if(ui->checkBox_4->isChecked())
{
str4=QString("%1").arg(pos, 3, 10, QChar('0'));//3位数补0
n4=pos;
if(pos==0)
{
t4="F";
}
else
{
t4="T";
}
}
else
{
str4=QString("%1").arg(n4, 3, 10, QChar('0'));//3位数补0
}
str="S"+str1+t1+str2+t2+str3+t3+str4+t4+"C#";
qDebug()<<str;
serial.write(str.toLatin1());//以ASCII码的形式通过串口发送出去。
}