![](https://img-blog.csdnimg.cn/20201203213539977.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
上面是我的微信和QQ群,欢迎新朋友的加入。
1.创建QT界面
![](https://img-blog.csdnimg.cn/20190822215538250.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
目前界面比较简单,就是两个按键加两个文本窗口
第一个文本窗口用于输入聊天信息
第二个文本窗口用于显示图灵的返回信息
send按键发送聊天信息
clear按键清除文本框内容
2.修改pro增加模块
#-------------------------------------------------
#
# Project created by QtCreator 2019-08-22T21:01:43
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4):
QT += widgets
QT += network
QT += script
TARGET = untitled
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
主要增加了网络和script两个模块
3.控制界面的实现
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QNetworkReply>
#include <QScriptValue>
#include <QScriptValueIterator>
#include <QScriptEngine>
const QString URL="http://www.tuling123.com/openapi/api";
const QString API_KEY="xxxxxx";//这里自己去申请
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::replyFinish(QNetworkReply *reply)
{
QString data=reply->readAll();//读取回话信息
QString strText="";
QScriptValue jsontext;
QScriptEngine engineText;
jsontext=engineText.evaluate("value="+data);
QScriptValueIterator iteratorText(jsontext);
//解析回话信息
while(iteratorText.hasNext())
{
iteratorText.next();
if(iteratorText.name()=="text")
{
strText=iteratorText.value().toString();
ui->textEdit_2->setText(strText);
//回话对话框设置为回话信息
break;
}
}
}
void MainWindow::on_readyRead()
{
qDebug()<<"changing ~~~"<<endl;//打印表示回话成功
}
void MainWindow::on_send_clicked()
{
QString Url=URL+"?key="+API_KEY+"&info="+ui->textEdit->toPlainText();
//拼接对话信息
QUrl url;
url.setUrl(Url);//格式转换
QNetworkRequest request(url);//传输对话信息
QNetworkAccessManager *manager=new QNetworkAccessManager(this);
QNetworkReply *reply=manager->get(request);
//等待回话信息
//回话的信号与槽
connect(manager,SIGNAL(finished(QNetworkReply *)),this,SLOT(replyFinish(QNetworkReply *)));
connect(reply,SIGNAL(readyRead()),this,SLOT(on_readyRead()));
}
void MainWindow::on_clear_clicked()
{
QString str="";//空字符串
ui->textEdit->setText(str);//回应对话框变为空字符串
ui->textEdit_2->setText(str);//输入对话框变为空字符串
}
功能很简单,实现按键发生输入信息,再显示返回信息
4.API申请
上面的代码copy之后是没有用的,因为key被我删了,这个东西自己申请,如果我放出来,很可能我自己就没得用了
申请链接:http://www.tuling123.com
登录之后,创建一个机器人
![](https://img-blog.csdnimg.cn/20190822220141456.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
然后将自己的key拷贝出来
![](https://img-blog.csdnimg.cn/20190822220214509.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
注意:如果不掏钱,使用是有限制的
![](https://img-blog.csdnimg.cn/20190822220315277.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
5.PC端测试
![](https://img-blog.csdnimg.cn/20190822220405439.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
6.在I.mx287上运行图灵机器人
编译嵌入式qt程序
![](https://img-blog.csdnimg.cn/20190822220647739.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
拷贝到设备上面
![](https://img-blog.csdnimg.cn/20190822220805466.png)
7.设备端测试
先测试一下,设备能否连接外网
如果不行
输入rote确定网关正常
route add default gw 192.168.1.1
修改vi /etc/resolv.conf
增加如下内容:
nameserver 114.114.114.114 (电信的DNS)
nameserver 8.8.8.8(googel的DNS)
就可以实现ping通外网了
![](https://img-blog.csdnimg.cn/20190823000137521.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
我发个123上去
![](https://img-blog.csdnimg.cn/20190823000126450.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
图灵回了个321,不过目前QT不支持中文显示。之后抽时间将QT的中文显示处理一下
![](https://img-blog.csdnimg.cn/20190822232314692.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bjYyNg==,size_16,color_FFFFFF,t_70)
同时可以在管理后台可以看到访问了API
![](https://img-blog.csdnimg.cn/20190823000251546.png)
我现在没认证,一天就能用两次