编写TCP到RS232驱动程序
我需要通过网络插座把RS232连接暴露给客户端。我打算用Python写一个TCP插座服务器,这个服务器会监听某个端口,允许客户端连接,并处理从RS232端口发出的请求和回复。
我想问的是,如何让客户端之间保持同步?每个客户端都会向串口发送一些字符串,等回复发回来后,我需要把结果返回给那个客户端。只有这样,我才能处理下一个请求。
我该如何同步对串口的访问呢?
2 个回答
1
最简单的方法就是直接接受一个连接,处理这个请求,然后关闭连接。这样,你的程序一次只处理一个请求。
另一种方法是使用锁或者信号量,来防止多个客户端同时访问RS232端口。
2
为了更详细地解释Sjoerd的回答,我们可以建立一个单线程的服务器(比如说 http://docs.python.org/library/basehttpserver.html),然后通过一些工具(像是 http://pyserial.sourceforge.net/pyserial_api.html)来控制端口,再加上简单的URL结构,这样就能以一种简单的、符合RESTful方式来处理请求。
我用的东西和这个很相似(稍微复杂一点,有个网页界面)来控制我们的 园林灌溉系统; 我老婆非常喜欢这个系统。