: : def read_frame(self):
: :   try: frame = self.ccd.get_frame()  #self.ccd是前面initialize过的camera.py
: :   except: return None
: :   if frame is not None:
: :     return frame.image - np.mean(frame.dark)
: :   else:
: :     return None
:   这个read_frame函式  的回传值
:   可以是 None 或是 "有用的值"
:   但是下面的函式在使用时  并没有做判断
: : 这个部份的live数据的读取会是 (我是用一个100ms的counter,到时后就call下面)
: : def updateposition(self):
: :   self.ccd.set_exposure_time(self.ui.ExpSlide.value()) #把快门设成使用者所要的
: :   self.data = self.read_frame() #读取data
: :   x = np.arange(len(self.data)) #取得data长度
:     读取后就直接用了??  是None怎么辨??
感谢K大,
我现在把read_frame改写成这样
def read_frame(self):
  frame = None
  while not frame:
    try:
      frame = self.ccd.get_frame()
    except:
      time.sleep(self.ui.ExpSlide.value()/100000) #让他等一下
      return frame is None
  print(frame) #从print看一下它有没有正确抓
  return frame.image-np.mean(frame.dark)
是不会抓到None了,但是因为把它写成只要不是none就是持续的try
(还是我误解这样写的意思)
现在的问题是卡在exposure time长一点的时候它程式应该就是一直在while的循环里
整个ui就会很卡
不过这个好像没有办法解决吼.
因为整个ui基本上还是同一个thread...multithread的部份对我好深奥.
感谢!