3
我是一個java中間開發人員,python新手和web服務uber新手。 作爲一種學習體驗,我試圖通過一個RS232-over-USB中繼板遠程控制一個簡單的開/關燈,以實現一個RESTful web服務。 我已經想出了web.py & pyserial庫的基礎知識。 我使用的電路板需要一個ascii字節作爲輸入來打開/關閉繼電器,並提供一個ascii字節作爲每個發送輸入的反饋。 以正確的方式回答單個請求,但是當web.py委派的類發出多個請求時,反饋有時會混淆在一起。我猜這是一個線程同步問題。 爲了正確地將反饋發送到適當的web.py生成的線程,用pyserial同步串行端口的寫入/讀取訪問的最佳方式是什麼?像下面這樣的解決方案能否被認爲是正確的?如果你的Web應用程序是一樣的Python實例(運行集成在web.py開發Web服務器)下運行Python網絡應用程序 - 同步串行訪問
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
謝謝安德烈您的快速回答。是的,它在同一個pyhon實例下運行。 – Jacoscaz