我的最终目标是开发用于微控制器开发的接口工具,允许在设备和计算机之间中继信息。我正在开发一个Qt gui,它将以图形方式显示libusb
程序发送给它的信息。
我已经开发了我将使用的Qt gui,它将显示此信息。此外,gui有一个发送按钮,它将执行相反的操作并将字符串传递给独立开发的其他程序。因此,简而言之,让这样的事情发挥作用的步骤是什么:
- Qt gui send commands to someProgram
- someProgram responds
在基本的echo程序的上下文中,我理解一个简单的辅助程序只需要使用一些字符串参数,这取决于你的语言,类似main(int argc, char *argv)
。只需拿走这些字符串并将它们发回即可。相对简单。
但是,我对如何使用Qt框架接受和发送这些运行时参数感到困惑。我想在运行时将参数发送到其他程序时几乎没有什么区别,但我不确定接收它们的位置。
摘要:如何使用Qt框架从第三方程序发送和接收参数
答案 0 :(得分:3)
通常,您可以使用网络,共享内存或内存映射文件。 Qt提供了有关inter-process communication选项的更具体信息。
答案 1 :(得分:2)
您可以从多种方式中进行选择,但请注意在这方面Qt 4和Qt 5之间的情况发生了变化,因此您最好关注Qt 5而不是Qt 4.来自official documentation:
TCP / IP
跨平台Qt网络模块提供的类使网络编程变得轻松便捷。它提供了使用特定应用程序级协议进行通信的高级类(例如,QNetworkAccessManager,QFtp),以及用于实现协议的低级类(例如,QTcpSocket,QTcpServer,QSslSocket)。 共享内存
共享内存
跨平台共享内存类QSharedMemory提供对操作系统共享内存实现的访问。它允许多个线程和进程安全访问共享内存段。此外,QSystemSemaphore可用于控制对系统共享的资源的访问,以及进程之间的通信。 D-Bus协议
D-Bus协议
Qt D-Bus模块是一个纯Unix库,可以使用D-Bus协议实现IPC。它将Qt的信号和插槽机制扩展到IPC级别,允许一个进程发出的信号连接到另一个进程的一个插槽。 Qt D-Bus文档提供了有关如何使用Qt D-Bus模块的详细信息。 另外,QProcess
QProcess中
跨平台类QProcess可用于将外部程序作为子进程启动,并与它们进行通信。它提供了一个用于监视和控制子进程状态的API。 QProcess通过继承QIODevice来访问子进程的输入/输出通道。 会话管理
会话管理
在Linux / X11平台上,Qt提供对会话管理的支持。会话允许将事件传播到进程,例如,在发生关闭时通知。然后,流程和应用程序可以执行任何必要的操作,例如保存打开的文档。