@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")
我正在运行这个flask服务器,在这里我使用html表单提交并更新不同python设置文件中的值。在HTML文件中,我使用“开始”和“停止”作为输入来调用上述函数。但是,当我在内部时,当我单击开始和停止时,它不会调用if(str(state1)=“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>
当表单上有多个提交按钮时,我相信只有单击的按钮才会发送到服务器。[https://www.coderslexicon.com/using-multiple-submit-buttons-with-a-single-form/
从代码中,当您单击
start
时,只发送该按钮,while循环启动。当您单击stop
时,只发送该值。start
永远不会发送,这意味着您的条件while(str(state) == "START"):
永远不会触发,因此stop
将无法工作不要使用while循环,而是在前端使用线程和一些javascript代码
单击“开始”按钮之前,“停止”处于隐藏或禁用状态
单击“开始”按钮时,将启动一个单独的线程来处理处理服务器端并将控件返回到窗体。然后,当“开始”按钮隐藏或禁用时,“停止”按钮将启用或可见
当用户单击停止按钮时,您将停止线程或函数服务器端,并且开始按钮将再次启用
相关问题 更多 >
编程相关推荐