@app.route("/MODBUS", methods=["GET","POST"])
def mod():
if request.method == "POST":
setup.slave_id= request.form.get("slave_id",type=int)
setup.port = request.form.get("port",type=str)
setup.baudrate= request.form.get("baud_rate",type=int)
setup.num_registers= request.form.get("registers",type=int)
setup.timeout= request.form.get("timeout",type=int)
print(setup.slave_id)
print(setup.port)
print(setup.baudrate)
print(setup.num_registers)
print(setup.timeout)
setup.setup_modbus()
state= request.form.get("start_button")
state1= request.form.get("stop_button")
while(str(state) == "START"):
print(state)
openapplib.open_app_modbus()
startapplib.start_app_modbus()
if(str(state1) == "STOP"):
break
print(state1)
closeapplib.close_app_modbus()
return render_template("modbus.html") 我正在运行这个烧瓶服务器,在这里我使用html表单来提交和更新另一个python安装文件中的值。在HTML文件中,我使用"START“和"STOP”作为输入来调用上面的函数。但是,当我在while中时,当我单击start和stop时,它不会调用if(str(state1) ==“stop”)中的STOP函数。
这是我的HTML文件
<h1>MODBUS SETTINGS</h1>
<form name="form1" id="form1" method="POST">
SLAVE_ID: <select name="slave_id" id="slave_id">
<option value="" selected="selected">Select Slave-ID</option>
</select>
<br><br>
PORT: <select name="port" id="port">
<option value="" selected="selected">Select No of Port</option>
</select>
<br><br>
REGISTERS: <select name="registers" id="registers">
<option value="" selected="selected">Select No of Registers</option>
</select>
<br><br>
BAUD_RATE: <select name="baud_rate" id="baud_rate">
<option value="" selected="selected">Select Baud-Rate</option>
</select>
<br><br>
TIMEOUT: <select name="timeout" id="timeout">
<option value="" selected="selected">Select Timeout</option>
</select>
<br><br>
<input type="submit" value="SETUP"/>
<br><br>
<input type="submit" name="start_button" value="START">
<br><br>
<input type="submit" name="stop_button" value="STOP">
<br><br>
<input type="button" value="BACK" onclick="history.back()">
<br><br>
</form>发布于 2021-08-04 16:42:38
当窗体上有多个提交按钮时,我相信只有单击的按钮才会发送到服务器。[https://www.coderslexicon.com/using-multiple-submit-buttons-with-a-single-form/
从您的代码中,当您单击start时,只发送该按钮,然后开始执行while循环。单击stop时,只发送该值。start从不发送,这意味着您的条件while(str(state) == "START"):从未被触发,因此您的stop无法工作。
不要使用while循环,而是在前端使用线程和一些javascript代码。
。
当您单击“开始”按钮时,
时,停止按钮将被启用或变为可见。
”按钮。
https://stackoverflow.com/questions/68653538
复制相似问题