我是一名 java 中级开发人员、python 新手和 web 服务超级新手。作为学习经验,我正在尝试在 python 中实现一个 RESTful Web 服务,以通过 RS232-over-USB 继电器板远程控制简单的开/关灯。我已经弄清楚了 web.py 和 pyserial 库的基础知识。我正在使用的板将一个 ascii 字节作为输入来打开/关闭继电器,并为每个发送的输入提供一个 ascii 字节作为反馈。单个请求以正确的方式回答,但是当 web.py 委托类发出多个请求时,反馈有时会混淆。我猜这是一个线程同步问题。将串行端口的写入/读取访问与 pyserial 同步的最佳方法是什么,以便正确地将反馈发送到适当的网络。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