我正在使用调制解调器,因此我需要“始终”检查可用的信号,以使其正常工作。
我有一个没有线程运行的代码,但不适用于持续的信号检查步骤。
我现在正在测试线程,但是在release()操作上遇到了麻烦。
我的代码:
lock = threading.Lock()
def checking_signal():
while True:
with lock:
print('Lock Acquired')
x = ser.readline()
y = x.rstrip()
z = y.decode('utf-8')
print(z)
ser.write(str.encode('AT+CSQ\r'))
time.sleep(5)
if (z.startswith("+CSQ")):
a = int(z[5])
if a >= 3:
print('Qualidade do sinal', z[5], 'é suficiente')
Signal = True
#read_mt_message()
lock.release()
time.sleep(6)
else:
print('Buscando Sinal...')
lock.release()
time.sleep(0.5)
t = threading.Thread(target = checking_signal)
t.start()
它会检查信号2次,然后返回错误:
Exception in thread Thread-5:
Traceback (most recent call last):
File "/home/anaconda3/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/home/anaconda3/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "<ipython-input-2-03211eb25532>", line 44, in checking_signal
time.sleep(0.5)
RuntimeError: release unlocked lock
我尝试了几种不同的方法,但是结果没有改变。我的主要目标是让一个线程检查信号,而另一个只有在信号足够时才开始工作。
感谢您的时间!