def __init__(self,num): self.obj=spidev.SpiDev() self.obj.open(num,0) if num==0: self.GDO0Pin=self.spi0_gdo0 if num==1: self.GDO0Pin=self.spi1_gdo0 fagpio.unexport(self.GDO0Pin) self.GDO0State=False self.Reset()
def run(self): gpio=fagpio.gpio(self.gpio) gpio.edge=self.edge gpio.direction=self.dir gpio.active=self.act s_id=str(self.id) s_gpio=str(self.gpio) logging.critical('gpio communication: start sensor '+s_id+' on gpio '+s_gpio+' with edge '+ self.edge) while self.running: events=gpio.epoll_obj.poll(1) logging.debug('gpio communication: sensor id ' + s_id + ': no event') for fileno,event in events: logging.debug('gpio communication: event file:'+str(fileno)+' event:'+str(event)+' file:'+str(gpio.fvalue.fileno())) if fileno==gpio.fvalue.fileno(): data=s_id+':'+str(gpio.value) logging.info('gpio communication: sensor id ' + s_id + ' gpio ' + s_gpio + ': ' + data) daemon.queue.add(data) fagpio.unexport(self.gpio) logging.critical('gpio communication: unexport '+str(self.gpio)+' gpio') logging.critical('gpio communication: stop sensor '+s_id+' on gpio '+s_gpio+' with edge '+ self.edge)
for fileno,event in events: if fileno==gpio.fvalue.fileno(): now=time.time() diff=round(now-t,2) t=now if i>1: ec.inc() ec.period(diff) logging.info('elec communication: '+str(ec.value)+' '+str(diff)+' '+ str(ec.act_pow)) else: i+=1 logging.info('elec communication: init..') except Exception,e: logging.error('elec communication: '+str(e)) finally: fagpio.unexport(elec_gpio) logging.critical('elec communication: stop') class daqd(Daemon): def run(self): try: self.queue = queue_thread() self.queue.start() self.cc1101_control=cc1101_control_thread() self.cc1101_control.start() self.cc1101_com=cc1101_com_thread() self.cc1101_com.start() self.elec_control=elec_control_thread() self.elec_control.start()
logging.info('gpio communication: sensor ' + s_id + ' counter init..') else: while self.running: events = gpio.epoll_obj.poll(1) # logging.debug('gpio communication: sensor id ' + s_id + ': no event') for fileno, event in events: # logging.debug('gpio communication: event file:'+str(fileno)+' event:'+str(event)+' \ # file:'+str(gpio.fvalue.fileno())) if fileno == gpio.fvalue.fileno(): # data=s_id+':'+str(gpio.value) logging.debug('gpio communication: sensor ' + s_id + ' signal') daemon.queue_out.add({'sensor_id':s_id,'value':1,'action_id':sensors[self.id].action_id}) except Exception, e: logging.error('gpio communication: ', exc_info=True) finally: fagpio.unexport(self.gpio) sensors[self.id].starting = False #logging.critical('gpio communication: unexport ' + str(self.gpio) + ' gpio') logging.critical('gpio communication: stop sensor:' + s_id + ' gpio:' + s_gpio + ' \ edge:' + self.edge + ' counter:' + str(self.counter)) class Daqd(Daemon): @error_logger def run(self): self.queue_out = QueueThread('out') self.queue_out.start() self.queue_in = QueueThread('in') self.queue_in.start() self.daqd_control = DaqdControlThread() self.daqd_control.start()
def GDO0Close(self): self.epoll_obj.close() fagpio.unexport(self.GDO0Pin) self.GDO0State=False
events=gpio.epoll_obj.poll(1) for fileno,event in events: if fileno==gpio.fvalue.fileno(): now=time.time() diff=round(now-t,2) t=now if i>1: ec.inc() ec.period(diff) print(str(ec.value)+' '+str(diff)+' '+ str(ec.act_pow)) else: i+=1 print('.') except Exception,e: print('elec communication error: '+str(e)) finally: fagpio.unexport(num) print('elec communication thread stop') main=elec_com_thread() main.start() elec=elec_control_thread() elec.start() while True: try: time.sleep(1) except: print('stop') elec.stop() main.stop() sys.exit(0)