fbpx

QMH dal cluster Stringa/Variant alle Classi

Il QMH si basa su un architettura producer consumer utilizzando la coda per eseguire azioni e passare i dati.

Il modello del messaggio nel QMH è basato su un cluster Stringa(comando da eseguire) e Variant (dato da passare).

Proviamo a sfruttare le caratteristiche OOP come astrazione ed ereditarietà per modificare il modello QMH.

Creiamo una classe Message con i seguenti metodi DinamicDispatch : Send, Do, Stop

Procedura : Andiamo su MyComputer e clicchiamo NewClass, quindi New Vi from Dinamic Dispatch e salviamo come Do.vi, quindi ancora per send.vi e stop.vi.

Modifichiamo Send.vi inserendo una reference alla coda (Enqueuer) come input (questa coda deve essere creata con il tipo di dato Classe Message).

Modifichiamo Stop.vi inserendo un led come output e lo settiamo con una costante a False

Ora abbiamo creato una classe Message che viene ereditata per i comandi dei vari processi.

Creiamo quindi il processo Process1.

Prima creiamo una libreria (non è obbligatorio, ma è un buon metodo per tenere in ordine le cose).

Quindi Creiamo il Process1.vi e lo inseriamo nella library Process1.lvlib

Ora il nostro progetto dovrebbe apparire come nell’immagine:

 

Selezioniamo Process1.lvlib e facciamo NEW CLASS, e la nominiamo Init (un caso sempre esistente).

Facciamo tasto destro sulla classe Init, quindi properties e Inheritance, cliccare “Change Inheritance” e selezionare la classe Message creata in precedenza.

Ora possiamo riscrivere i metodi necessari per questa classe, facendo tasto destro e NEW/VI for Override e selezioniamo Send e Do.

Creiamo un vi per eseguire il metodo Send.vi in modo che possiamo incapsulare la costante della classe Init. Per farlo andiamo sulla classe Init e NEW/Vi from Static dispatch Template, modifichiamo il vi trascinando il metodo send come mostrato in figura.

Ora abbiamo il Send del messaggio da posizionare nel vi per generare l’azione Do per la classe Init.

Creiamo la classe Stop e dopo aver modificato l’inheritance dalla classe message, creiamo gli override per Stop e Send.

Stessa cosa per la error class che eredita solo error e send.

Per tutti gli altri messaggi saranno eseguiti dal Do e quindi ereditiamo sempre Send e Do per ogni altra classe creata.

Allo stesso modo creeremo i comandi che ci servono, ora però creiamo il main.vi come da immagine.

Ora il codice del process non necessita piu di modifiche, lavoriamo direttamente sul progetto creando le classi per gli altri messaggi.

 

Ecco l’interfaccia main terminata :

 

E il Diagramma del Main.VI

 

Se vuoi scaricare il progetto di esempio puoi farlo da qui:

 

 

Condividi:

Mi piace:

Mi piace Caricamento...
Translate »
%d blogger hanno fatto clic su Mi Piace per questo: