QT网络和串口

从网络接收数据,发送到串口,然后串口返回数据发送到网络。
基本布局如下,串口名写在lineedit中,Send请自行忽略。
基本布局
具体代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    m_status = false;
    this->setFixedSize(652,337);
    this->setWindowTitle(tr("Three"));
    m_port = 8878;
    m_pServerIP = new QHostAddress();
    m_pserialPort = new QSerialPort();
    m_pTcpServer = new QTcpServer(this);
    if(!m_pTcpServer->listen(QHostAddress::Any,m_port))
    {
        QMessageBox::information(this,tr("error"),tr("listenerror!"));
        return;
    }
    else
    {
        connect(m_pTcpServer, SIGNAL(newConnection()), this, SLOT(sendMessages()));
    }
    connect(m_pserialPort,SIGNAL(readyRead()),this,SLOT(updateData()));
    ui->pushButtonSend->setEnabled(false);
    return;
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_pushButtonOpenPort_clicked()
{
    if(ui->pushButtonOpenPort->text()=="OpenPort")
    {
        m_pserialPort->setPortName(ui->lineEdit->text());
        m_pserialPort->setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections);
        m_pserialPort->setDataBits(QSerialPort::Data8);     //数据位为8位
        m_pserialPort->setFlowControl(QSerialPort::NoFlowControl);//无流控制
        m_pserialPort->setParity(QSerialPort::NoParity);    //无校验位
        m_pserialPort->setStopBits(QSerialPort::OneStop);   //一位停止位
        m_pserialPort->close();                 //先关串口,再打开,可以保证串口不被其它函数占用。
        if(m_pserialPort->open(QIODevice::ReadWrite))       //以可读写的方式打开串口
        {
            connect(m_pserialPort,SIGNAL(readyRead()),this,SLOT(read_Com()));
            ui->pushButtonOpenPort->setText("ClosePort");
        }
        else
        {
            QMessageBox::information(this,tr("error"),tr("com name error!"));
            return;
        }
    }
    else
    {
        ui->pushButtonOpenPort->setText("OpenPort");
        m_pserialPort->close();
    }
    return;
}
void MainWindow::sendMessages()
{
    m_pTcpSocket = m_pTcpServer->nextPendingConnection();
    connect(m_pTcpSocket,SIGNAL(readyRead()),this,SLOT(dealMessage()));
}
void MainWindow::dealMessage()
{//receive from network and send to serialport
    QString str="";
    QByteArray datagram;
    char *data="";
    while(m_pTcpSocket->bytesAvailable()>0)
    {
        datagram.resize(m_pTcpSocket->bytesAvailable());
        m_pTcpSocket->read(datagram.data(),datagram.size());
        data=datagram.data();
        str = QString::fromUtf8(data);
        ui->recvTextBrowser->append(str);
    }
    m_pserialPort->write(data);
    return;
}
void MainWindow::updateData()
{//receieve from serialport and send to network
    QByteArray requestData = m_pserialPort->readAll();
    QString str = "";
    if(requestData.size()>0)
    {
        str = requestData.data();
        ui->sendTextBrowser->append(str);
    }
    m_pTcpSocket->write(str.toLatin1());
    //sentToNetwork
    return;
}
void MainWindow::on_pushButton_clicked()
{
    ui->recvTextBrowser->clear();
}
void MainWindow::on_pushButton_2_clicked()
{
    ui->sendTextBrowser->clear();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt串口网络助手项目是一个基于Qt开发的软件工具,旨在帮助用户处理串口通信和网络通信的任务。这个项目提供了一个用户友好的界面,可以方便地进行串口网络的配置和操作。 该项目的主要功能包括串口通信和网络通信。首先,用户可以通过界面设置串口的参数,比如波特率、校验位、停止位等,并且可以实时监测和显示串口的数据。用户可以发送数据到串口上,并且可以接收来自串口的数据。这样,用户可以通过串口与外部设备进行通信,比如与嵌入式系统、传感器等进行数据交换。 此外,该项目还提供了网络通信的功能。用户可以设置网络连接的参数,比如IP地址、端口号等,并且可以实时监测和显示网络数据的传输。在网络通信模式下,用户可以向网络发送数据,并且可以接收从网络接收到的数据。因此,用户可以与远程设备或者其他计算机进行数据交互,实现远程监控、远程控制等功能。 Qt串口网络助手项目的优点在于它的界面简洁易用,并且功能丰富。用户可以通过简单的操作即可完成串口网络的配置和数据传输。而且,由于基于Qt开发,该项目具有跨平台的特性,可以在多种操作系统上运行,如Windows、Linux等。此外,Qt还提供了丰富的API和组件,方便开发人员自定义和扩展功能。 总的来说,Qt串口网络助手项目是一个实用的工具,可以帮助用户处理串口通信和网络通信的任务。无论是在嵌入式系统开发、传感器数据采集还是网络通信方面,该项目都能提供便捷的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值