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

3
我目前正在编程一个服务器,可以让客户端与一台硬件进行交互。对于感兴趣的读者来说,这是一台同时监测一组激光波长(并控制激光器)的设备。服务器应该能够定期广播波长(一系列浮点数),并通过dll调用让客户端更改设备设置。
我的初始想法是编写自定义协议来处理通信,但在考虑如何处理TCP分段和数据编码后,我遇到了Twisted,并且使用透视代理共享数据并直接从客户端调用服务器方法,大部分工作看起来都已经完成。这种解决方案可能有些过度,但对我来说显然,你觉得呢?
我的主要关注点是客户端。基本上我需要两种类型的客户端,一种只显示波长(这应该很简单),另一种则可以更改设备设置并在更改时获得反馈。我的想法是创建一个能够同时胜任两者的单一客户端,但考虑将其与我们先前的系统结合起来时,让我开始思考...第二个客户端应该由一个已经相当复杂的Python框架控制,该框架控制着许多独立硬件,并具有相对严格的时间要求,然后在这个顺序代码中调用波长计的设置。现在问题是,我如何将其与Twisted客户端混合?据我了解,Twisted不是线程安全的,所以我不能简单地生成一个新线程来运行反应堆,然后从我的主线程与其交互,对吗?
非常欢迎通过不同于Twisted的方式提供编写此服务器/客户端框架的建议!
谢谢
2个回答

4

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

0

你试过zeromq吗?

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

有多种语言的绑定,网站上也有很多示例。而且,它的速度非常快。

好东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接