首页 > 系统相关 >【C++】C++ qt 与 python 简单进程通讯

【C++】C++ qt 与 python 简单进程通讯

时间:2022-09-03 20:22:54浏览次数:56  
标签:tcpClient qt python C++ data socket

前言


准备用C++写一个简单的文字转语音的小东西,对C++ qt这个怎么弄不太清楚(现在看到qt5.8后有个叫QTextToSpeech的东西),发现python调用一些库来进行文字转语音的发声比较简单,准备用python来进行接受C++信息,转成语音。

python端


python文字转语音还比较简单,导入pyttsx3这个库,然后调用一下就可以了。用的socket通讯,python是作为服务端接受信息。

import socket               # 导入 socket 模块
import pyttsx3 as py3
port = '127.0.0.1' #定义ip
ip = 12345	#定义端口
#申请socket服务端对象
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)        # 创建 socket 对象
s.bind((ip, int(port)))        # 绑定端口
s.listen(5)               # 等待客户端连接
while True:
    print("> 服务成功开启,等待连接")
    client,addr = s.accept()     # 建立客户端连接
    data = client.recv(2048)     #一次最多接受2048个字节
    receive_data = data.decode('gb18030') #接受到的信息转成这个编码,这个编码范围广一些
    engine = py3.init()
    engine.say(receive_data)
    engine.runAndWait()
    client.close()

C++端


C++端作为客户端,发送消息给python。

  1. 用的VS2013环境,其中要把qt的web socket模块加上。
  2. 在调用的地方加上#include <QtNetwork/QtNetwork> 这是一个全局的,qtcpsocket在里面。
  3. 可能需要在配置,链接器,输入中添加Qt5Networkd.lib这个库。

这么用的
头文件里面添加了个QTcpSocket *m_tcpClient;指针。

	QString english_word = mWordList[index].mWord;//得到英语文本信息;
	std::string res = english_word.toLocal8Bit().toStdString();//转成string类型;
	char *buff = const_cast<char *>(res.c_str());//转成char类型发送;
	m_tcpClient->close();//关闭之前在主程序初始化时写了m_tcpClient = new QTcpSocket(this);生成的一个m_tcpClient;这段代码就可以多次调用了;
	delete(m_tcpClient);//释放指针空间;
	m_tcpClient = new QTcpSocket(this);//新建对象;
	m_tcpClient->connectToHost(QHostAddress("127.0.0.1"), 12345);//建立链接;
	m_tcpClient->write(buff);//发送信号

OK。

标签:tcpClient,qt,python,C++,data,socket
From: https://www.cnblogs.com/shucode/p/16653497.html

相关文章

  • 学习:python进阶 单例模式
        通过类的绑定方法来实现  如果用戶不通过绑定类的方法实例化对象,而是直接通过类名加括号方式实例化对象,那这样就不是单例模式了 ......
  • 命令行查看python版本弹出应用商店
    命令行查看python版本弹出应用商店win10系统,在命令行输入python查看版本,弹出应用商店,出现该问题的原因可参考下列博客:链接:https://blog.csdn.net/qq_36949278/article......
  • Python爬虫-Pyquery的用法(四)
    一、PyQuery介绍与安装1、PyQuery简介PyQuery简介PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝......
  • leetcode 77 组合 C/C++ 深度优先搜索
    #include<iostream>#include<vector>usingnamespacestd;classSolution{public:voidrecursive(intn,intk,intvalue,intindex,vector<int>&com_case,ve......
  • 学习 python进阶 限制子类必须实现方法
          方法二 ......
  • 学习 python进阶 Mixin机制,派生和组合
          派生和組合    组合   ......
  • python数据类型
    序列类型str字符型list列表tuple元组列表与元组最大的区别就是列表可变,而元组不可变遍历从头到尾,依次访问到每一个range()包头不包尾range(start,end,step)......
  • Python tkinter 制作一个经典的登录界面和点击事件
    前言Tkinter(即tkinterface)是Python标准GUI库,简称“Tk”;从本质上来说,它是对TCL/TK工具包的一种Python接口封装。Tkinter是Python自带的标准库,因此无须另......
  • 献芹奏曝-Python面试题-算法-链表篇
    上一篇:献芹奏曝-Python面试题    开篇的话:本文目的是收集和归纳力扣上的算法题,希望用python语言,竭我所能做到思路最清奇、代码最简洁、方法最广泛、性能最高效,了解......
  • 【Python】路径相关
    Python自带os.path库相关函数一、判断文件/路径是否存在os.path.isfile()os.path.isdir()os.path.exists()返回值:True/False二、创建文件夹os.makedirs()impor......