Ciao Francesco,
purtroppo non è facile dare una risposta quando manca la comprensione generale di quello che il programma dovrebbe fare.
Nel vi che hai allegato mancano tutti i subvi del tipo BTICard_Ecc. e quand'anche ci fossero non sarebbe facile capirne la funzione.
Un'ipotesi comunque si può fare: nel loop interno viene costruito un array 2d di dimensioni crescenti. E' logico che se per esempio il programma non esce mai da questo loop potrebbe facilmente esaurire la memoria, ammesso che la frequenza effettiva del loop moltiplicata per la quantità di dati restituita da SeqFindNext (due valori di cui non so nulla) sia abbastanza elevata.
In generale, posso fare alcune altre osservazioni sul tuo codice:
a) sicuramente contiene un eccesso di sequenze, p.es. tutti i frame dell'inizializzazione BTICard sono inutili, perchè la sequenzialità è garantita dal fatto che i vari subvi sono collegati dal filo di errore; ne derica che p.es. CardReset non può essere eseguito prima di OpenCard, perchè per essere eseguito è necessario che riceva lo status di errore dal primo vi; in genere ci si deve sforzare di conseguire la serializzazione (che è spesso necessaria) SENZA utilizzare le strutture di sequenza (anche perchè queste strutture rendono il codice più difficilmente leggibile, come testimoniato dall'"effetto lenzuolo" del vi)
b) la parte di codice che gestisce i confronti degli angoli non è ben progettata; in una struttura case viene impostato nbloccogradopartenza, che viene utilizzato in un altro case: ebbene, non c'è nessuna garanzia che il primo case venga eseguito prima del secondo, perchè non c'è alcun percorso "filato" che li congiunge; dal punto di vista di LabView, potrebbe capitare benissimo che nbloccogradopartenza venga prima letto e poi scritto
c) in effetti, la variabile locale nbloccogradopartenza non serve a nulla: avresti potuto benissimo far arrivare al secondo case direttamente il valore, collegandoci il filo (tra l'altro, questo risolverebbe il problema di sequenzialità del punto b); un analogo discorso si può fare per le variabili locali angolo, angolo partenza e ogni angolo: perchè non tirare direttamente i fili che portano il valore a questi controlli?
d) per finire (altrimenti diventa un romanzo) ti consiglio di adottare uno stile di "disegno" più ordinato (anche se capisco che a volte si ha fretta di arrivare al risultato), disponendo gli elementi in modo accurato ed evitando per esempio un eccessivo intreccio di fili; vedrai che ti sarà di aiuto per una più immediata comprensione del codice.
Spero di esserti stato di aiuto.
Paolo
Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021