【发布时间】:2011-08-08 10:22:13
【问题描述】:
我是一名 java 中级开发人员、python 新手和 web 服务超级新手。 作为学习经验,我正在尝试在 python 中实现一个 RESTful Web 服务,以通过 RS232-over-USB 继电器板远程控制简单的开/关灯。 我已经弄清楚了 web.py 和 pyserial 库的基础知识。 我正在使用的板将一个 ascii 字节作为输入来打开/关闭继电器,并为每个发送的输入提供一个 ascii 字节作为反馈。 单个请求以正确的方式回答,但是当 web.py 委托类发出多个请求时,反馈有时会混淆。我猜这是一个线程同步问题。 将串行端口的写入/读取访问与 pyserial 同步以便正确地将反馈发送到适当的 web.py 出生线程的最佳方法是什么?像下面这样的解决方案可以被认为是正确的吗?
from threading import RLock
import serial # pyserial library
lock = RLock()
ser = serial.Serial("/dev/ttyACM0", 9600, 1)
def serialOut(self, string):
lock.acquire()
data = ''
try:
ser.open()
ser.write(string)
data = ser.readall()
ser.flushOutput()
finally:
lock.release()
return data
【问题讨论】:
标签: python multithreading web-services web.py pyserial