OrsayDev / OrsayLaser

Instrumentation for Laser / Blanker / Gain usage in Nionswift
0 stars 0 forks source link

Control Laser Supply Thread [power_supply.vi] #19

Closed yvesauad closed 4 years ago

yvesauad commented 4 years ago

Pour controller la puissance de sortie, j'ai mis une thread que boucle independent du balayage du laser. Je sais pas porquoi, mais des fois on a des conflit avec la thread et avec le GUI que demande des valleurs au power supply pour afficher dans la pallete. Si je comprends bien une thread, on utilise toujours une core et c'est a dire que seulement une action deroule a la fois. On a quand meme des conflit, peut etre a cause de la vitesse du hardware.

voila comme on fait:

On appelle pw_control_thread_on au debut et ca commence a boucler periodicment (time.sleep) pw_control pendant que do_run est True. Comme do_run n'existe pas, on utilise le default getattr pour dire que c'estr True tout le temps

si on veux que la boucle se arrete, on appelle pw_control_thread_off que met do_run as False.

def pw_control_thread(self, arg):
        self.control_thread=threading.currentThread()
        while getattr(self.control_thread, "do_run", True):
            self.comm('C1:'+str(self.pow)+'\n')
            self.comm('C2:'+str(self.pow)+'\n')
            time.sleep(0.1)
            logging.info(self.pow)
            self.sendmessage(79)

    def pw_control_thread_on(self):
        self.control_thread=threading.Thread(target=self.pw_control_thread, args=("task",))
        self.control_thread.do_run=True
        self.control_thread.start()

    def pw_control_thread_off(self):
        self.control_thread.do_run=False

La question: peut etre faire une thread pour controler un truc que on envoie souvent des message sur la porte serial ne pas genial. Pour l'instante, j'ai arrete de mettre a jour les valleurs lie au power supply et la thread peut se derouler tranquille. i) il y a une deuxime facon de faire ca? ii) peut etre c'est mieux si on fait le controle avec une autre hardware, comme le filtre gradient pour ne pas jamais avoir de conflit avec le hardware power supply.

yvesauad commented 4 years ago

Pour savoir comment ca se fait maintenant: [575 nm - 590 nm - 1 nm - 30 avg] GAUCHE: controlled DROITE: normal acquisition

HAUTE: power (uW) BAS: diode current (A)

image

yvesauad commented 4 years ago

voila un truc tres tres bizarre. La sortie du laser sans controlle

image

kociak commented 4 years ago

control is definitely needed ;)

yvesauad commented 4 years ago

nice by now. Need to use a few times to check