私はJavaの中間開発者であり、Pythonの初心者であり、Webサービスの初心者です。学習体験として、私はPythonでRESTful Webサービスを実現し、RS232-over-USBリレーボードを介して単純なオン/オフライトをリモート制御しようとしています。web.pyとpyserialライブラリの基本はすでに理解しています。私が使用しているボードは、リレーをオン/オフにするための入力としてASCIIバイトを受け取り、送信されるすべての入力のフィードバックとしてASCIIバイトを提供します。単一のリクエストは正しい方法で応答されますが、web.py委任クラスによって複数のリクエストが発行されると、フィードバックが混同されることがあります。これはスレッド同期の問題だと思います。適切なWebにフィードバックを正しく送信するために、シリアルポートへの書き込み/読み取りアクセスをpyserialと同期するための最良の方法は何ですか。py-bornスレッド?次のような解決策は正しいと見なすことができますか?
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