我需要维护的 VB6 应用程序如下所示。
- 通过以太网建立与已知地址和端口的连接。
发送请求
等待回复。
我尝试使用 WinSock 和 Winsock 替换,但它们都以一种或另一种形式依赖于各种 Windows 应用程序中固有的消息传递循环。我对 Winsock API 如何在 VB6(或任何其他语言)中实现上述算法知之甚少。
我的应用程序是一个 VB6 CAD/CAM 软件,它通过专用以太网控制金属切割机。该软件已经维护了 20 年,我们为不同类型的运动控制器开发了多种驱动程序。迄今为止,这些运动控制器的 API 包括
- 打开与硬件的连接
- 向硬件发送请求(例如轴的位置)
- 等待响应(通常以毫秒为单位)。
其中一些控制器通过以太网工作,但直到现在我才不必直接与端口交互。我使用公司提供的图书馆来处理事情。它们以我上面提到的方式工作,如果在某个定义的时间内没有发生响应,则会引发超时错误。
Winsock 的问题是我必须插入 DoEvents 才能得到响应。这会破坏我们在 VB6 应用程序中处理多任务的方式。像 CSocketMaster 这样的替代品使用子类化,这也会对我们的多任务处理造成严重破坏。
因此,有关如何使用 Winsock API 或第三方 dll 的任何帮助都可以完成我需要做的事情,如上所述。我不会问我是否还没有看到其他运动控制做我想做的事情。