import random
class check_error:
def __init__(self,firstbyte=bytearray(b'\x15\x04\xA5')) :
r=random.choice (firstbyte)
self.r=r
def pocket_data(self):
print("I am sending request for NBP/SpO2 datas")
r=self.r
while True:
print("blala")
r=self.r
print(r)
try:
if int("{:02x}".format(r))==15:
print("Negative Acknowledgment.Error occured during data transmission to device.I am sending the datas again... ")
continue
elif r==4:
print("Host does not have the capability to respond to the request,it only supports a subset of the protocol")
continue
except:
print("done")
break
s=check_error()
print(s.pocket_data())
如果选择的元素是x15或x04,循环将变得无穷无尽,但是我想做的是选择字节数组的另一个元素,直到选择的元素是xA5。
答案 0 :(得分:0)
初始化类时,r
被设置为random.choice (firstbyte)
。注意,这是永远不会改变的。您设置r
的值,然后分配self.r = r
,然后就再也不会更改self.r
。
如果希望r
继续滚动随机数,则需要做的是将firstbyte
保存到类中的变量中,例如:
def __init__(self,firstbyte=bytearray(b'\x15\x04\xA5')) :
self.firstbyte = firstbyte
r=random.choice (firstbyte)
self.r=r
然后,在循环内部,继续以与构造函数相同的方式生成随机数:
while True:
self.r = random.choice(self.firstbyte)
...