gpt4 book ai didi

Python 中断循环并再次进入循环

转载 作者:行者123 更新时间:2023-12-01 09:15:10 25 4
gpt4 key购买 nike

我有以下代码

import serial
import time
ser = serial.Serial('COM10', 9600, timeout=0)
timeout = time.time() + 60*1

def readresponse():
while 1:
try:
print(ser.readline())
time.sleep(1)
except ser.SerialTimeoutException:
print('Data could not be read')
if (time.time() > timeout):
break
time.sleep(1)

def sendHttpPost():
ser.write('AT+HTTPACTION=1\r'.encode())
def initialAtCommands():
ser.write('AT+SAPBR=3,1,\"Contype\",\"GPRS\"\r'.encode())
ser.write('AT+SAPBR=3,1,\"APN\",\"APN\"\r'.encode())
ser.write('AT+SAPBR=1,1\r'.encode())
ser.write('AT+HTTPINIT\r'.encode())
ser.write('AT+HTTPPARA=\"CID\",1\r'.encode())
ser.write('AT+HTTPPARA=\"URL\"URL\"\r'.encode())

if(ser.isOpen() == False):
print("Serialport is currently not connected")
else:
print("Serialport successfully connected")
initialAtCommands()

while 1:
sendHttpPost()
readresponse()

这个想法是,执行 sendhttppost,然后读取响应 60 秒,然后再次发送 httppost。但代码不会再次进入 readresponse。

有什么想法吗?

最佳答案

因为你的readResponse()当且仅当遇到 serialTimeoutException 时函数才会中断。请注意,您已输入 break if下的声明 block 又位于 except 内堵塞。这意味着只要您的程序没有遇到该异常 while循环无限地进行下去。如果您希望函数执行 try 后立即返回内部 block readResponse() ,然后只需输入 return print(ser.readline()) 之后的声明并输入 time.sleep() readResponse()末尾的方法功能。不要将其嵌套在 if 内 block 。

附注time.sleep(1)这里:

if (time.time() > timeout):
break
time.sleep(1)

是死代码。我认为你需要重新考虑你想用if做什么 block 。

关于Python 中断循环并再次进入循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51341314/

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