为了实现小型车的梦想,建造由QT主机控制的智能车(4)

遵循之前的文章:实现汽车梦想,打造智能汽车(1)实现汽车梦想,打造智能汽车(2)基于熊的WIFI PWM控制,汽车前进和后退实现汽车的梦想。

用于向前,向后,向左和向右转弯的智能汽车(3)的基本框架QT控制界面大致如下,非常简单:包含4个按钮,用于前进,后退,左转,右转以及显示,该如何实现?非常简单。

1.拖动四个QPushButton按钮以更改您过去想要表达的方式。

2.拖动另一个textBrowser。

3.将按钮设置到插槽上主要是设置按钮的特定功能,例如单击,按下,释放等。

找到这些动作后,将触发相应的插槽功能。

右键单击与该按钮对应的按钮,然后选择“转到插槽”。

在这里,我们选择两个信号被按下()和释放(),即按下和释放,然后单击确定,程序将自动生成相应的插槽功能,依此类推,我们为前进的四个按钮设置了这种方式,向后,向左转,再向右转。

& nbsp;& nbsp;因为我们要控制Wifi车,所以我们需要将其包含在.pro中:网络网络模块QT + =核心gui网络接下来看mainwindow.h #ifndef MAINWINDOW_H#define MAINWINDOW_H#include& lt; QMainWindow& gt; //包括相应的头文件#include& lt; QTcpSocket& gt; #include& lt; QDebug& gt; #include& lt; QString& gt; #include& lt; QByteArray& gt;命名空间Ui {class MainWindow ;}类MainWindow:公共QMainWindow {Q_OBJECTpublic:显式MainWindow(QWidget * parent = 0); 〜MainWindow();专用插槽:/ *与网络处理有关* / void ReadData();无效的ReadError(QAbstractSocket :: SocketError); / *相应的四个按钮按下和释放插槽功能由系统确定*系统自动生成* / void on_go_released(); void on_back_released(); void on_go_pressed(); void on_back_pressed(); void on_turn_left_pressed(); void on_turn_right_pressed(); void on_turn_left_released(); void on_turn_right_released();私有:Ui :: MainWindow * ui; QTcpSocket * client;};#endif // MAINWINDOW_H mainwindow.cpp实现:#include“ mainwindow.h” #include“ ui_mainwindow.h” MainWindow :: MainWindow(QWidget * parent):QM ainWindow(parent),ui( new Ui :: MainWindow){ui-& gt; setupUi(this); this-& gt; setWindowTitle(tr(“ Smart Car Control%1%2”)。

arg(tr(“---2020年5月19日”))。

arg(tr(“ ----开发人员:Yang Yuanxin”))));客户端=新的QTcpSocket(this);客户-> abort(); //连接到TCP客户端终端处理相关信号和插槽connect(client,SIGNAL(readyRead()),this,SLOT(ReadData())); connect(client,SIGNAL(error(QAbstractSocket :: SocketError)),this,SLOT(ReadError(QAbstractSocket):: SocketError))); //连接到服务器客户端-& gt; connectToHost(“ 192.168.4.1”,8080); if(client-> waitForConnected(1000))ui-& gt;标签-& gt; setText(“ Connected Smart car”);否则ui-> label-> setText(“无法连接到智能汽车!”);} void MainWindow :: ReadData(){QByteArray buffer = client-> readAll(); if(!buffer。

isEmpty())ui-& gt; textBrowser-& gt; append(buffer);} void MainWindow :: ReadError(QAbstractSocket :: SocketError){client-& gt; disconnectFromHost();} void MainWindow :: on_go_pressed(){QString data =“ GO”; ui-& gt; textBrowser-& setText(“ forward”);客户端写入(data.toLatin1()); // / qt5已删除。

toAscii()}避免MainWindow :: on_back_pressed(){QString data =“ BACK”; ui-& gt; textBrowser-& setText(“ back”);客户端写入(data.toLatin1()); // qt5删除了。

toAscii()}避免MainWindow :: on_turn_left_pressed(){QString data =“ LEFT”; ui-& gt; textBrowser-& setText(“左转”);客户端-> write(data .toLatin1()); // qt5删除.toAscii()} void MainWindow :: on_turn_right_pressed(){QString data =“ RIGHT”; ui-& gt; textBrowser-> setText(“右转”);客户端-> write(data.toLatin1()); // qt5已删除.toAscii()}避免MainWindow :: on_turn_left_released(){QString data =“ STOP”;客户端写入(data.toLatin1()); // qt5删除.toAscii()} void MainWindow :: on_turn_right_released(){QString data =“ STOP”;客户端写入(data.toLatin1()); // qt5删除.toAscii()} void MainWindow :: on_go_released(){QString data =“ STOP”;客户端写入(data.toLatin1()); // qt5已删除。

toAscii()}避免MainWindow :: on_back_released(){QString data =“ STOP”;客户端-& gt; write(data.toLatin1()); // qt5删除.toAscii())ainWindow ::〜MainWindow(){删除客户端; delete ui;}操作结果:在运行之前,请先连接到Wifi网络。

由于我的计算机是无线网络,因此可以直接连接到无线网络,然后确保

欢迎您的咨询