software:qview:qview_6:qcl_library:vi10checkbufferready

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
software:qview:qview_6:qcl_library:vi10checkbufferready [2025/01/13 11:59] – creata qem214software:qview:qview_6:qcl_library:vi10checkbufferready [2025/04/02 11:29] (versione attuale) qem214
Linea 1: Linea 1:
 ====== VI10CheckBufferReady ====== ====== VI10CheckBufferReady ======
  
-PRELIMINARE-+Sostituisce [[software:qview:qview_6:qcl_library:vi10waitbufferreadyusingend|VI10WaitBufferReadyUsingEND]]
  
 **V = **//Vector// **V = **//Vector//
Linea 9: Linea 9:
 Funzione utilizzata per la gestione della funzionalità Vector Image (oggetto presente su alcune versioni di Qpaint). Funzione utilizzata per la gestione della funzionalità Vector Image (oggetto presente su alcune versioni di Qpaint).
  
-La funzione VI11WaitBufferReadyUsingEND viene utilizzata per poter attendere la conclusione della fase di disegno precedentemente avviata, __in un task a tempo__.\\ +La funzione VI10CheckBufferReady viene utilizzata per poter ottenere lo stato di ''READY'' del buffer senza essere bloccante
-Nel caso in cui la procedura di disegno non sia completa, quando si richiama questa funzione, il task a tempo viene interrotto e si passa al task successivo. Nel ciclo successivo il task a tempo ricomincerà dalla prima istruzione.+ 
 +Si usa all'interno di una macchina a stati per poter sapere quando procedere con lo stato successivo.
  
 ===== IMPLEMENTAZIONE ===== ===== IMPLEMENTAZIONE =====
  
-FIXME +**VI10CheckBufferReady (awBuffer, gfState)**
- +
-**VI10WaitBufferReadyUsingEND (awBuffer)**+
  
 Parametri: Parametri:
  
-^IN/OUT^TIPO VARIABILE^NOME DI ESEMPIO^DIM^^ +^ IN/OUT  ^ TIPO VARIABILE      ^ NOME DI ESEMPIO  ^ DIM                                                  || 
-|  IN  |  ARRSYS /\\ ARRGBL  |  awBuffer  |  W  |Array che funge da buffer per istruzioni/dati|+|  IN     |  ARRSYS /\\ ARRGBL  |  awBuffer        |  W   | Array che funge da buffer per istruzioni/dati  | 
 +|  OUT    |  GLOBAL              gfState          F    Stato del buffer: 0 = occupato, 1 = pronto    |
  
 === Esempio === === Esempio ===
Linea 27: Linea 27:
 //T_TIME00// //T_TIME00//
 <code qcl> <code qcl>
-MAIN: +;dichiarazione costanti 
-      IF gbSequenza EQ 1 +CONST
-             VI10DrawBuffer(awBuffer) ;Disegna il contenuto del Buffer +
-             gbSequenza = 2 +
-      ENDIF +
-      IF gbSequenza EQ 2 +
-             VI10WaitBufferReadyUsingEND(awBuffer) ;Attende la conclusione del disegno +
-             gbSequenza = 3 +
-      ENDIF +
-      IF gbSequenza EQ 3 +
-             glPippo = 1000                 ;(questa istruzione viene eseguita solo alla fine del processo di disegno) +
-             gbSequenza = 4 +
-      ENDIF +
-;....+
  
-END +BUFFPLOT_SIZE 500                        ;dimensione del buffer
-</code>+
  
-=== Note ===+;dichiarazione variabili 
 +GLOBAL 
  
-  * La funzione può interrompere l'esecuzione del task enel ciclo successivofarlo ripartire dalla prima istruzione.+gfState    F                               ;stato del buffer 
 +phase      B                               ;numero dello stato (macchina a stati) 
 + 
 +;dichiarazione array 
 +ARRGBL 
 + 
 +agwBuffPlotDemo11    W    BUFFPLOT_SIZE    ;buffer per VectorImage  
 + 
 +SUB DRAW 
 + SWITCH (phase)  
 + CASE 0 
 + NOP  
 + CASE 1 
 + VI10CheckBufferReady(agwBuffPlotDemo11gfState) 
 + VI10SetLayer (agwBuffPlotDemo110)  
 + VI10SetBackground (agwBuffPlotDemo11, COLOR.BLUE) 
 + VI10AddCls(agwBuffPlotDemo11)  
 + VI10SetLayer(agwBuffPlotDemo11, 0)  ;- LAYER 0 (zero), background 
 + gwFill = 1 
 + gwCoordX1 = 340 
 + gwCoordY1 = 50 
 + gwCoordX2 = gwCoordX1 + SIDE_SIZE 
 + gwCoordY2 = gwCoordY1 + SIDE_SIZE  
 + gwPenColor = COLOR.RED 
 +     VI10AddPen(agwBuffPlotDemo11, gwPenColor) 
 + VI10AddSet(agwBuffPlotDemo11, gwCoordX1, gwCoordY1) 
 + VI10AddRect(agwBuffPlotDemo11, gwCoordX2, gwCoordY2, gwFill)     
 + VI10DrawBuffer(agwBuffPlotDemo11)      
 + phase = 2  
 + CASE 2  
 + VI10CheckBufferReady(agwBuffPlotDemo11, gfState)  
 + IF NOT gfState 
 + VI10SetLayer(agwBuffPlotDemo11, 1) ;- LAYER 1 (one)  
 + gwCoordX1 = gwCoordX1 + OFFSET 
 + gwCoordY1 = gwCoordY1 + OFFSET 
 + gwCoordX2 = gwCoordX1 + SIDE_SIZE 
 + gwCoordY2 = gwCoordY1 + SIDE_SIZE  
 + gwPenColor = COLOR.GRAY 
 +     VI10AddPen(agwBuffPlotDemo11, gwPenColor) 
 + VI10AddSet(agwBuffPlotDemo11, gwCoordX1, gwCoordY1) 
 + VI10AddRect(agwBuffPlotDemo11, gwCoordX2, gwCoordY2, gwFill) 
 + VI10DrawBuffer(agwBuffPlotDemo11)      
 + phase = 3 
 + ENDIF  
 + CASE 3 
 +        VI10CheckBufferReady(agwBuffPlotDemo11, gfState) 
 +     IF NOT gfState 
 +     phase = 4 
 +     ENDIF  
 + CASE 4 
 +     phase = 0 
 + ENDSWITCH 
 +ENDSUB 
 +</code>
  
  • Ultima modifica: 2025/01/13 11:59