0
我想編寫一個腳本來打開一個錢箱,使用串行設備(使用USB),而不是每次打印機打印時打開它(例如在信用卡付款上不需要錢箱)開放)。python3燒瓶pyserial腳本只能工作一次
它應該通過Ajax調用基於Flask的網站工作(整個網站將作爲ajax接收器來執行python腳本)。
燒瓶網站正在運行,其他腳本運行沒有問題,這就是爲什麼我在這裏展示只有主腳本的有趣的部分:
...
@app.route("/cashdrawer")
def cashdrawer():
import cash_drawer_open
return "open ?" # website output
...
錢箱首戰cash_drawer_open.py
看起來像
#!/usr/bin/python3
import serial
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=300,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
xonxoff=serial.XOFF,
rtscts=False,
dsrdtr=False
)
ser.write(bytes([0, 4]))
ser.flush() # something
ser.flushInput() # I played
ser.flushOutput() # around
ser.close() # with
# exit() # etc.
# quit() # etc.
print ("open ?") # terminal output
問題是,在啓動Flask服務器並且第一次調用腳本後,抽屜僅打開一次。同一網站的每個進一步呼叫都不會在終端中返回open ?
,並且抽屜保持冷靜。唯一的事情是終端迴應
192.168.178.29 - - [11/Oct/2017 18:31:56] "GET /cashdrawer HTTP/1.1" 200 -
192.168.178.29 - - [11/Oct/2017 18:31:58] "GET /cashdrawer HTTP/1.1" 200 -
192.168.178.29 - - [11/Oct/2017 18:32:03] "GET /cashdrawer HTTP/1.1" 200 -
一遍又一遍。
我也試圖與參數來調用它,改變時間戳
http://myserver/cashdrawer?t=12765435664543
,但沒有成功。
任何想法如何我可以每次打電話給我的USB單元說話地址?謝謝
好了,現在我有'高清import_cashdrawer():主腳本的頂部和'@ app.route( 「/ cashdrawer」) 高清cashdrawer() 進口cash_drawer_open': import_cashdrawer() 回報「現在打開?「'在路由功能中,但結果相同,它只能工作一次。我不在這裏? – ddlab
啊......我明白了......那一刻。 – ddlab
是是的。你是對的,它的工作,謝謝。 1+ – ddlab