QT做基于串口,tcp/ip,udp通信的上位机调试软件

一.基于串口通信。

 

serialport 类
在.pro文件中添加 QT += serialport   直接看代码:

 /* parity */
    parityList<<"无"<<"奇"<<"偶";
    ui->parity->addItems(parityList);
    ui->parity->setCurrentIndex(0);
    /* data bits */
    dataBitsList<<"5"<<"6"<<"7"<<"8";
    ui->dataBit->addItems(dataBitsList);
    ui->dataBit->setCurrentIndex(3);
    /* stop bits */
    stopBitsList<<"1"<<"1.5"<<"2";
    ui->stopBit->addItems(stopBitsList);
    ui->stopBit->setCurrentIndex(0);

相信注释写的很清楚了。
从代码看,必须定义一个QSerialPortInfo类的对象,用于遍历系统可以使用的串口,用于显示。

串口发送函数如下:



接受函数 可以用readall();


二:基于tcp/ip通讯

1:tcp客户端:
主要掌握QTcpSocket类的五个信号:
connected:连接上服务器成功
disconnected:断开服务器
readyRead:收到客户端信息
hostFound:发现主机
error(QAbstractSocket::SocketError);出错
有了这五个信号,再自己编写响应的曹函数,便可以实现通信。

tcpSocket->connectToHost(*server_ip,port);  //连接,连接成功时 发出connect信号


2:tcp服务器:
QTcpServer,掌握信号SIGNAL:newConnection    :发现新的客户端连接上来
QTcpSocket类,掌握信号SIGNAL:disconnected       :客户端断开连接
不管是服务器模式还是客户端模式,都有响应的发送write函数和接受read函数。


3:udp模式:
udp模式更简单,还可以广播地址发送数据 
udpSocket->writeDatagram((char *)&Sdata.buf[0],Sdata.buf_length,QHostAddress::Broadcast,port);


  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用QT编写一个基于tcp/ip协议通信的服务端和客户端的步骤: 1. 创建一个QT项目,并添加QT网络库 2. 创建一个服务端 ```c++ QTcpServer *server = new QTcpServer(this); connect(server, SIGNAL(newConnection()), this, SLOT(newConnection())); if(!server->listen(QHostAddress::Any, 1234)) { qDebug() << "Server could not start!"; } else { qDebug() << "Server started!"; } void Server::newConnection() { QTcpSocket *socket = server->nextPendingConnection(); sockets.append(socket); qDebug() << "Client connected!"; } ``` 3. 创建一个客户端 ```c++ QTcpSocket *socket = new QTcpSocket(this); connect(socket, SIGNAL(connected()), this, SLOT(connected())); connect(socket, SIGNAL(disconnected()), this, SLOT(disconnected())); connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead())); socket->connectToHost("127.0.0.1", 1234); if(!socket->waitForConnected(5000)) { qDebug() << "Error: " << socket->errorString(); } else { qDebug() << "Connected!"; } void Client::connected() { qDebug() << "Connected to server!"; } void Client::disconnected() { qDebug() << "Disconnected from server!"; } void Client::readyRead() { QByteArray data = socket->readAll(); qDebug() << "Received: " << data; } ``` 4. 在服务端中处理接收到的数据 ```c++ void Server::newConnection() { QTcpSocket *socket = server->nextPendingConnection(); sockets.append(socket); connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead())); qDebug() << "Client connected!"; } void Server::readyRead() { QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender()); if(socket) { QByteArray data = socket->readAll(); qDebug() << "Received: " << data; foreach(QTcpSocket *s, sockets) { s->write(data); } } } ``` 5. 在客户端中发送数据 ```c++ socket->write("Hello, server!"); ``` 这样就完成了基于tcp/ip协议通信的服务端和客户端的编写。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值