一、ui界面制作如下截图
二、程序源码
1、circular_buffer.cpp
#include "circular_buffer.h"
#include "protocol.h"
Circular_buffer::Circular_buffer()
{
m_recv_msg_buffer[BUFFER_MAX_LINE] = {0};
m_pointer_write = 0;
m_pointer_read = 0;
m_read_byte = 0;
}
Circular_buffer::~Circular_buffer()
{
}
void Circular_buffer::write_circular_buffer(char write_byte)
{
m_pointer_write %= BUFFER_MAX_LINE;
m_recv_msg_buffer[m_pointer_write++] = write_byte;
}
char Circular_buffer::read_circular_buffer(void)
{
m_pointer_read %= BUFFER_MAX_LINE;
m_read_byte = m_recv_msg_buffer[m_pointer_read];
m_recv_msg_buffer[m_pointer_read] = 0;
m_pointer_read++;
return m_read_byte;
}
void Circular_buffer::cpynbyte2buffer(char *data,char len)
{
int i = 0;
for(i = 0; i < len; i++)
{
write_circular_buffer(data[i]);
}
}
void Circular_buffer::traverse_circular_buffer(void)
{
}
2、main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QFile>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFile skinFile(":/new/skins.css");
if(skinFile.open(QIODevice::ReadOnly))
{
a.setStyleSheet(skinFile.readAll());
skinFile.close();
}
MainWindow w;
w.show();
return a.exec();
}
3、mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
m_flag_recv(false)
{
ui->setupUi(this);
connect(ui->pb_open_com,SIGNAL(clicked()),this,SLOT(Slot_Open_com()));
ui->te_recv_text->append(tr("检测到端口列表:"));
foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
{
QSerialPort serial_port;
serial_port.setPort(info);
if(serial_port.open(QIODevice::ReadWrite))
{
ui->cb_com_port->addItem(info.portName());
ui->te_recv_text->append(info.portName());
ui->te_recv_text->append(info.description());
serial_port.close();
}
}
m_clock = new QTimer(this);
connect(m_clock, SIGNAL(timeout()), this, SLOT(Slot_Clock_Update()));
m_clock->start(1000);
ui->cb_baud_rate->setCurrentI