【问题标题】:how can stand alone exe's communicate together?独立的exe怎么能互相通信?
【发布时间】:2017-03-07 07:18:29
【问题描述】:

我在工作中运行一条装配线,我试图实现自动化。 目前的软件是两个独立的令人兴奋的。一个是编辑器,将变量添加到 sql 数据库,第二个读取该数据库并控制 cnc。两者都在同一台电脑上,同时运行,并且都是用 vb6 编写的。当您点击第一个 .exe(编辑器)中的“添加”按钮时,它会以某种方式告诉第二个 .exe 重新加载 sql 数据库并加载任何更新。

我的问题是我编写了一个软件,它可以获取条形码并将变量自动插入数据库,这将绕过第一个软件,但第二个软件不知道何时重新访问数据库进行更新。

一个 .exe 与第二个 .exe 对话是否有任何常用方法?我如何聆听以便复制它? 谢谢 山姆

编辑: 抱歉,我所说的“绕过”是使第一个 .exe 变得多余。我的软件插入到 sql 而不是他们的编辑器软件。

【问题讨论】:

  • bypass 是什么意思?你怎么bypass
  • “SQL 数据库”的反义词是……“NoSQL 数据库?”如果您真的是指“SQL Server”,请不要说“SQL”。

标签: c# automation vb6 barcode cnc


【解决方案1】:

您可以查看名为命名管道的东西。这是通常的做法。

您可以在 msdn 上阅读有关它的信息,有一个很好的示例。 https://msdn.microsoft.com/en-us/library/bb546085(v=vs.110).aspx

【讨论】:

  • 你们太棒了。太感谢了。我会做一些研究,让你知道它是怎么回事。
【解决方案2】:

在另一个回复中提到的管道是一种常见的机制。当交换少量数据时,我的偏好是 UDP 套接字。

使用 Winsock 控件,您只需几行代码即可设置点对点或“谈话者-听众”通信。您的第二个程序可以侦听来自第一个程序的简单信号或更完整的数据包并采取相应措施。

一个附带的好处是,如果这台 PC 在本地网络上,那么如果以后需要的话,将这两个程序移动到单独的 PC 上是微不足道的。

【讨论】:

  • 是的,这比命名管道有优势。在更大的应用程序中,我们将 WCF 用于服务。我更喜欢使用 RESTful API 服务,但有很多方法可以给猫剥皮。
  • 当然,机器之间的 UDP 远不如一台机器内的可靠。这就是我们有 Pipes、TCP 等的部分原因。
  • @Bob77 - UDP 并非天生不可靠,并且可以通过添加 ACK/NAK 等轻松地变得像你喜欢的那样健壮。同意 TCP 在许多情况下更好,但对于简单的短消息本地网络 UDP 简单明了。我已经在几十个应用程序中使用它,没有任何问题。对我来说主要的好处是很多时候一个程序在 Linux 或 Arduino 等上运行。那里没有管道。
  • 当然,您可以尝试在 UDP 之上使用业余技术来弥补其固有的不可靠性,但这并不能改变事实。如果您需要可靠性、按顺序到达等,只需使用经过验证的 TCP。试图重新发明轮子通常不值得高昂的开发和测试成本。您很可能在自欺欺人并丢失大量数据。
  • @Bob77 - 我想我们必须同意不同意。 UDP 的存在是有原因的,我成功地使用了它,许多互联网应用程序(包括游戏、媒体等)也是如此。撇开你的冷嘲热讽不谈,我们肯定不能都是业余爱好者吗?我在我的工具包中保留了各种工具,包括 UDP、TCP、管道和队列,并在我的专业意见最适合的地方使用它们。 OP 只能从探索更多选项中受益。
【解决方案3】:

MSMQ 专用机器队列在 VB6 中易于设置和使用。它们听起来几乎是您正在做的事情的理想选择,而且您可以完全放弃数据库。

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 2012-04-08
    • 2016-07-07
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多