#include "sendandreceivewidge.h"
SendandReceiveWidge::SendandReceiveWidge(QWidget *parent) : QDialog(parent)
{
isreceivestr = 1;
issendstr = 1;
applyforspace();
controlnamed();
controltranslate();
controllayout();
connect(pushButtonsend,SIGNAL(clicked(bool)),this,SLOT(on_pushButtonsend_clicked()));
connect(pushButtonsendclear,SIGNAL(clicked(bool)),this,SLOT(on_pushButtonsendclear_clicked()));
connect(pushButtonclearreceive,SIGNAL(clicked(bool)),this,SLOT(on_pushButtonclearreceive_clicked()));
connect(pushButtonsave,SIGNAL(clicked(bool)),this,SLOT(on_pushButtonsave_clicked()));
connect(radioButtonreceivestr,SIGNAL(clicked(bool)),this,SLOT(setreceiveformstr()));
connect(radioButtonreceivehex,SIGNAL(clicked(bool)),this,SLOT(setreceiveformhex()));
connect(radioButtonsendstr,SIGNAL(clicked(bool)),this,SLOT(setsendformstr()));
connect(radioButtonsendhex,SIGNAL(clicked(bool)),this,SLOT(setsendformhex()));
//serialport
connect(serialport,SIGNAL(readyRead()),this,SLOT(on_serialdataready()));
//udp
connect(udp.udp_socket_rx, SIGNAL(readyRead()),this, SLOT(on_udpdataready()));
}
SendandReceiveWidge::~SendandReceiveWidge()
{
}
void SendandReceiveWidge::setreceiveformstr()
{
isreceivestr = 1;
}
void SendandReceiveWidge::setreceiveformhex()
{
isreceivestr = 0;
}
void SendandReceiveWidge::setsendformstr()
{
issendstr = 1;
}
void SendandReceiveWidge::setsendformhex()
{
issendstr = 0;
}
void SendandReceiveWidge::applyforspace()
{
groupBoxsend = new QGroupBox();
textEditsend = new QTextEdit();
labelsend = new QLabel();
pushButtonsendclear = new QPushButton();
radioButtonsendstr = new QRadioButton();
radioButtonsendhex = new QRadioButton();
pushButtonsend = new QPushButton();
groupBoxreceive = new QGroupBox();
textEditreceive = new QTextEdit();
labelreceive = new QLabel();
pushButtonclearreceive = new QPushButton();
radioButtonreceivestr = new QRadioButton();
radioButtonreceivehex = new QRadioButton();
pushButtonsave = new QPushButton();
}
void SendandReceiveWidge::controlnamed()
{
groupBoxsend->setObjectName(QStringLiteral("groupBoxsend"));
textEditsend->setObjectName(QStringLiteral("textEditsend"));
labelsend->setObjectName(QStringLiteral("labelsend"));
pushButtonsendclear->setObjectName(QStringLiteral("pushButtonsendclear"));
radioButtonsendstr->setObjectName(QStringLiteral("radioButtonsendstr"));
radioButtonsendhex->setObjectName(QStringLiteral("radioButtonsendhex"));
pushButtonsend->setObjectName(QStringLiteral("pushButtonsend"));
groupBoxreceive->setObjectName(QStringLiteral("groupBoxreceive"));
textEditreceive->setObjectName(QStringLiteral("textEditreceive"));
labelreceive->setObjectName(QStringLiteral("labelreceive"));
pushButtonclearreceive->setObjectName(QStringLiteral("pushButtonclearreceive"));
radioButtonreceivestr->setObjectName(QStringLiteral("radioButtonreceivestr"));
radioButtonreceivehex->setObjectName(QStringLiteral("radioButtonreceivehex"));
pushButtonsave->setObjectName(QStringLiteral("pushButtonsave"));
}
void SendandReceiveWidge::controltranslate()
{
//设置文字
groupBoxreceive->setTitle(tr("receive area"));
labelreceive->setText(tr("total receive"));
pushButtonclearreceive->setText(tr("clear"));
radioButtonreceivestr->setText(tr("sting"));
radioButtonreceivehex->setText(tr("hex"));
pushButtonsave->setText(tr("save"));
groupBoxsend->setTitle(tr("send area"));
labelsend->setText(tr("total send"));
pushButtonsendclear->setText(tr("clear"));
radioButtonsendstr->setText(tr("sting"));
radioButtonsendhex->setText(tr("hex"));
pushButtonsend->setText(tr("send"));
}
void SendandReceiveWidge::controllayout()
{
QVBoxLayout *v_send_layout = new QVBoxLayout();
v_send_layout->addWidget(labelsend);
v_send_layout->addStretch();
v_send_layout->addWidget(radioButtonsendstr);
v_send_layout->addWidget(radioButtonsendhex);
v_send_layout->addWidget(pushButtonsendclear);
v_send_layout->addWidget(pushButtonsend);
QHBoxLayout *h_send_layout = new QHBoxLayout();
h_send_layout->addWidget(textEditsend);
h_send_layout->addLayout(v_send_layout);
groupBoxsend->setLayout(h_send_layout);
QVBoxLayout *v_receive_layout = new QVBoxLayout();
v_receive_layout->addWidget(labelreceive);
v_receive_layout->addStretch();
v_receive_layout->addWidget(radioButtonreceivestr);
v_receive_layout->addWidget(radioButtonreceivehex);
v_receive_layout->addWidget(pushButtonclearreceive);
v_receive_layout->addWidget(pushButtonsave);
QHBoxLayout *h_receive_layout = new QHBoxLayout();
h_receive_layout->addWidget(textEditreceive);
h_receive_layout->addLayout(v_receive_layout);
groupBoxreceive->setLayout(h_receive_layout);
QVBoxLayout *main_layout = new QVBoxLayout();
main_layout->addWidget(groupBoxreceive);
main_layout->addWidget(groupBoxsend);
this->setLayout(main_layout);
radioButtonsendstr->setChecked(true);
radioButtonreceivestr->setChecked(true);
}
void SendandReceiveWidge::on_pushButtonclearreceive_clicked()
{
textEditreceive->clear();
}
void SendandReceiveWidge::on_pushButtonsendclear_clicked()
{
textEditsend->clear();
}
void SendandReceiveWidge::on_pushButtonsend_clicked()
{
if(tool == SERIAL)
{
if(issendstr) //以字符串方式发送
{
QString str = textEditsend->toPlainText();
QByteArray ba = str.toLatin1();
serialport->write(ba);
}
else
{
QString str = textEditsend->toPlainText();//从LineEdit得到字符串
QByteArray ba;
StringToHex(str,ba);//将str字符串转换为16进制的形式
serialport->write(ba);//发送到串口
}
}
if(tool == UDP)
{
if(issendstr) //以字符串方式发送
{
QString str = textEditsend->toPlainText();
QByteArray ba = str.toLatin1();
udp.udp_socket_tx->writeDatagram(ba, ba.size(), udp.IP_remote, udp.Port_Tx);
}
else
{
QString str = textEditsend->toPlainText();//从LineEdit得到字符串
QByteArray ba;
StringToHex(str,ba);//将str字符串转换为16进制的形式
udp.udp_socket_tx->writeDatagram(ba, ba.size(), udp.IP_remote, udp.Port_Tx);
}
}
if(tool == TCP)
{
//会崩溃
// if(issendstr)
// {
// QString str = textEditsend->toPlainText();
// QByteArray ba = str.toLatin1();
// //tcp.tcp_socket->write(ba);
// tcp.tcp_socket->write("gaoweijin");
// }
// else
// {
// QString str = textEditsend->toPlainText();//从LineEdit得到字符串
// QByteArray ba;
// StringToHex(str,ba);//将str字符串转换为16进制的形式
// tcp.tcp_socket->write(ba);
// }
}
}
void SendandReceiveWidge::on_pushButtonsave_clicked()
{
//写入到文件
QFile data("D:\\file.txt");
if (data.open(QFile::WriteOnly | QIODevice::Truncate))
{
QTextStream out(&data);
out << textEditreceive->toPlainText();
}
}
void SendandReceiveWidge::on_serialdataready()
{
if(mode == SENDANDRECEIVE)
{
if(isreceivestr)
{
QByteArray requestData;
requestData = serialport->readAll(); //读取数据 串口读取出来的数据类型 是QByteArray 不是QString
textEditreceive->insertPlainText(requestData);
textEditreceive->moveCursor(QTextCursor::End);
}
else
{
QByteArray requestData = serialport->readAll();
- 1
- 2
前往页