gpt4 book ai didi

Python:如何中断,然后返回到 while 循环,没有 goto?

转载 作者:行者123 更新时间:2023-11-28 18:35:09 25 4
gpt4 key购买 nike

我正在 python 中运行一个简单的 PID 控制程序。基本上是一个无限循环,它从传感器读取然后计算适当的控制信号,并将诊断信息输出到终端。

但是,有时在查看诊断信息时,我想更改 PID 系数(本质上是循环使用的一些常量),方法是从循环中中断,接受用户输入,然后返回到同一个循环。我想这样做任意次数。

如果使用“goto”,这会简单易行,而且正是我想要的。有人可以给我一些 python 伪代码来做到这一点吗?我真的想不出该怎么做。我可以使用 CTRL+C 异常处理程序中断循环,但我无法返回主循环。

一定有一些非常简单的方法可以做到这一点,但我想不出。想法?我的代码片段:

while True:
t0 = get_temp_deg_c(thermocouple1)
print "Hose Temperature = " + str(t0) + " deg C"

t1 = get_temp_deg_c(thermocouple2)
print "Valve Temperature = " + str(t1) + " deg C"

# write temps to file
fi.write(str(t0))
fi.write(" " + str(t1) + "\n")

error = setpoint - t0

print "Setpoint = " + str(setpoint) + " deg C"
print "Error = " + str(error) + " deg C"

percent_error = error/setpoint*100
print "Percent error = " + str(percent_error) + " %"

duty_out = p.GenOut(percent_error)
print "PID controller duty output: " + str(duty_out) + " %"
# clamp the output
if(duty_out) > 100:
duty_out = 100
if(duty_out < 0):
duty_out = 0

PWM.set_duty_cycle(PWM_pin, duty_out)

# do we need to increment the setpoint?
if( (setpoint - setpoint_precision) ... # omitted logic here

# Here we return to the top

最佳答案

只要您可以在每次中断后“从头开始”重新启动(而不是在发出信号时返回到循环中的确切点,这是一个更难的问题):

while True:
try:
controller.main_loop()
except KeyboardInterrupt:
controller.set_coefficients()

关于Python:如何中断,然后返回到 while 循环,没有 goto?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33273930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com