用于硬件控制的Python服务器(可能使用Twisted?)

用于硬件控制的Python服务器(可能使用Twisted?),python,twisted,Python,Twisted,我目前正在编写一个服务器,它可以让客户端与硬件交互。对于感兴趣的读者来说,它是一种同时监测一组激光器波长(并控制激光器)的设备。服务器应该能够定期广播波长(浮动列表),并允许客户端通过dll调用更改设备的设置 我最初的想法是编写一个自定义协议来处理通信,但在考虑如何处理TCP碎片和数据编码后,我遇到了Twisted,如果我使用透视代理直接从客户端共享数据和调用服务器方法,看起来大部分工作已经完成了。这个解决方案可能有点过头了,但对我来说,它看起来很明显,你怎么看 当我想到客户的时候,我最担心的是

我目前正在编写一个服务器,它可以让客户端与硬件交互。对于感兴趣的读者来说,它是一种同时监测一组激光器波长(并控制激光器)的设备。服务器应该能够定期广播波长(浮动列表),并允许客户端通过dll调用更改设备的设置

我最初的想法是编写一个自定义协议来处理通信,但在考虑如何处理TCP碎片和数据编码后,我遇到了Twisted,如果我使用透视代理直接从客户端共享数据和调用服务器方法,看起来大部分工作已经完成了。这个解决方案可能有点过头了,但对我来说,它看起来很明显,你怎么看

当我想到客户的时候,我最担心的是他们。基本上我需要两种类型的客户端,一种只显示波长(这应该是直接的),另一种可以更改设备设置并在更改时获得反馈。我的想法是创建一个同时具备这两种功能的单一客户机,但考虑将其与我们以前的系统结合起来,让我想到。。。第二个客户端应该由一个已经相当复杂的python框架控制,该框架控制许多独立硬件,具有相对严格的定时要求,然后应该在这个顺序代码中调用波长计的设置。现在的问题是,如何将其与Twisted客户端混合?据我所知,Twisted不是线程安全的,所以我不能简单地生成一个运行reactor的新线程,然后从主线程与之交互,对吗

非常欢迎通过与Twisted不同的方式编写此服务器/客户机框架的任何建议


感谢您,您可以在专用线程中启动reactor,然后使用现有的“顺序”代码对其发出调用

另外,我建议使用协议而不是PB,因为AMP更适合于异构环境(),而且听起来您可能有大量其他技术想要与此系统集成。

您尝试过吗

它是一个简化套接字工作的库。它可以在TCP上运行,并实现多种拓扑,例如发布者/订阅者(用于广播数据,如激光读数)和请求/响应(可用于控制方案)

有几种语言的绑定,网站上有很多例子。而且,速度惊人


好东西。

我现在有一些时间来看看AMP,我相信你是对的,它非常适合这个项目。我设法让服务器和客户端运行,所以现在我将看看是否可以按照您的建议让blockingCall工作。非常感谢你的帮助!