首先新建工程界面设计
在这里我就不做详述了,注意的一点就是接收框是QPlainTextEdit,我把我的整体放上来,有点丑,你们可以自由发挥。
在写之前我先把我创建的一些全局变量什么的写出来,免得下面的代码看不太明白:
类是这样的:
class uartmain : public QWidget
{
Q_OBJECT
public:
explicit uartmain(QWidget *parent = nullptr);
~uartmain();
QSerialPort *uart;
QTimer *timer;
QString uartbuf;
bool HEX_status;
bool timesend_status;
QTimer *timersend;
int numbrece;
int numbsend;
private slots:
void on_sendBtn_clicked();
void on_openBtn_clicked();
void on_closeBtn_clicked();
void on_clearBtn_clicked();
void slotsUartReadyread();
void slotTimeout();
void slotTimeSendout();
void on_HexcheckBox_clicked();
void on_TimeScheckBox_2_stateChanged(int arg1);
private:
Ui::uartmain *ui;
};
然后构造函数是这样的:
uartmain::uartmain(QWidget *parent) :
QWidget(parent),
ui(new Ui::uartmain)
{
ui->setupUi(this);
uart = new QSerialPort(this);
timer = new QTimer(this);
timersend = new QTimer(this);
numbsend = 0;
numbrece = 0;
HEX_status = 0;
timesend_status = 0;
//下面这段代码我后面还会再进行介绍。
//availablePorts();是返回当前系统所有能用的串口,返回值是一个容器
QList<QSerialPortInfo> info = QSerialPortInfo::availablePorts();
for(int i=0 ; i<info.size(); i++){
ui->NamecomboBox->addItem(info[i].portName()); //addItem加入数据到下拉菜单
}
connect(timer, SIGNAL(timeout()), this, SLOT(slotTimeout()));
connect(timersend, SIGNAL(timeout()),