================================================================================ Controllo colore e luminosità LED RGB ================================================================================ AUTORE: 11021 DATA :07/01/2015 - 11:01:51 ---------------------------------------- Salve a tutti sono nuovo del foro e di labview vedendo un pò tra i vari esempi sto cercando di capire come controllare il colore e una volta trovato il colore variare la luminosità di un led rgb, per quanto riguarda il colore diciamo che ci sono riuscito utilizzando la funzione "color to rgb" ma non riesco a capire come variare la luminosità. Grazie ---------------------------------------- AUTORE: 645 DATA :08/01/2015 - 07:52:09 ---------------------------------------- Una volta trovato il colore dovrebbe essere sufficiente aumentare o diminuire la tensione o la corrente di comando per aumentare o diminuire l'intensità luminosa. Non riguardano LabView ma spiegano il funzionamento del led e magari possono essere interessanti: http://www.maffucci.it/2012/12/12/ardui ... a-lezione/ http://www.electroyou.it/g.schgor/wiki/ ... er-led-rgb http://www.istitutobartolo.it/didattica ... -parte.pdf ---------------------------------------- AUTORE: 11021 DATA :08/01/2015 - 10:50:05 ---------------------------------------- Si una volta trovato il colore con pwm sui singoli colori comando in pwm anche il positivo comune essendo led ad anodo comune, però questo come posso riportarlo in labview? Grazie ---------------------------------------- AUTORE: 645 DATA :12/01/2015 - 16:52:20 ---------------------------------------- Scusa la domanda, cosa intendi con "riportare in LabView"? ---------------------------------------- AUTORE: 1078 DATA :16/01/2015 - 10:04:44 ---------------------------------------- Ciao @vinny74, In Labview non lo puoi riportare, devi avere in mezzo una scheda analogica con almeno tre uscite (AO) e io meterei anche tre ingressi (AI). Le uscite (AO) per "pilotare" il LED RGB fisico, mentre gli ingressi (AI), come feedback di quello che stai effettivamente dando al LED. Se fai il tutto con una scheda NI, devi usare le DAQMx mentre se usi una'altra marca di schede devi vedere il driver che ti fornisce il fornitore (ormai quasi tutti danno una libraria labview). Puoi replicare il tutto in Labview facendoti un controllo che sia molto simile al tuo LED RGB (forse lo trovi già fatto in rete) che si fa utilizzando gli XControl. Programmazione Avanzata. Nel tuo front panel devi aggiungere 3 controlli che ti serviranno per settare la tensione ai capi del tuo LED e, 3 indicatori che ti faranno vedere che tensione stai applicando effettivamente (feedback scheda AI). Spero di essere stato chiaro, buon divertimento. ---------------------------------------- AUTORE: 645 DATA :20/01/2015 - 08:36:12 ---------------------------------------- Capito! \":D\" ---------------------------------------- ================================================================================ timing ================================================================================ AUTORE: 4376 DATA :08/01/2015 - 14:03:36 ---------------------------------------- ciao a tutti mi chiamo Davide conosco labview da tanti anni ma lo uso intensamente da poco... Devo scaricare dei dati in maniera temporizzata ogni 30 minuti, premetto che lo scarico funziona correttamente ma mi serve il timing.... Qualcuno ha suggerimenti?? Ciao e grazie ---------------------------------------- AUTORE: 3428 DATA :08/01/2015 - 15:01:17 ---------------------------------------- La vi che ti posto fa al caso tuo. Visto che devi scaricare i file ogni 30 min puoi permetterti di utilizzare direttamente il timestamp piuttosto che le vi WAIT in ms, ma comunque puoi rimpiazzarle ugualmente. Così hai un errore di 100ms. Ciao ---------------------------------------- AUTORE: 4376 DATA :08/01/2015 - 15:08:41 ---------------------------------------- Grazie mille del supporto faccio una prova e integro tutto nella mia macchina a stati Ciao D. ---------------------------------------- ================================================================================ sequence ================================================================================ AUTORE: 4376 DATA :09/01/2015 - 15:39:08 ---------------------------------------- Ciao a tutti! Ho bisogno di un piccolo "indirizzamento"..... Quando chiudo la VI premendo sul tasto STOP devo in sequenza mettere a FALSE poi TRUE e nuovamente a FALSE un uscita digitale, con una tempistica di circa 200, 250 msec tra una transazione e l'altra...ho provato con diverse structure ma non mi riesce... dove sbaglio??? ciao e grazie Davide ---------------------------------------- AUTORE: 482 DATA :12/01/2015 - 07:39:35 ---------------------------------------- Bisognerebbe vedere il tuo VI per capire cosa c'e' che non va ma in linea di massima potresti realizzare una cosa cosi': dopo aver fatto tutto quello che devi fare, gli spari una sequence che: 1) mette a FALSE il booleano 2) aspetta 200ms 3) mette a TRUE il booleano 4) aspetta 200ms 5) rimette a FALSE il booleano cosi' a naso, secondo me hai messo nella stessa sequence il cambio di stato e l'attesa senza legami. Se hai fatto cosi', non hai modo di stabilire se venga fatta prima l'attesa o prima il cambio di stato. Per essere sicuro che venga eseguito prima il cambio di stato o lo metti in una sequence precedente o ci deve essere un filo che collega le due cose in modo da stabilire cosa viene fatto prima e cosa dopo. ---------------------------------------- AUTORE: 4376 DATA :13/01/2015 - 09:10:33 ---------------------------------------- ciao ti ringrazio. Mi sono scervellato domenica e sono giunto alla tua stessa conclusione con uno staked... alzo, attendo 250 msec, abbasso.... grazie per l'aiuto che si trova nel gruppo, anche per risolvere problemi da novellino come il mio D. ---------------------------------------- ================================================================================ Scorrere due vettori di Array in un Cluster ================================================================================ AUTORE: 11023 DATA :12/01/2015 - 20:38:01 ---------------------------------------- Buonasera a tutti. Sto da poco imparando ad usare il labview e come esercizio devo far scorrere due vettori di array(ampiezza 1-2 e frequenza) inclusi in due cluster.(I valori della frequenza sono identici). A1(Ampiezza1)=(A11,A12) A2(Ampiezza2)=(A21,A22) f(frequenza1)=(f1,f2) 1) Prima Prova: CL1(Cluster1)= (A11,f1) ; CL2(Cluster2)= (A21,f1) 2)Seconda Prova: CL1=(A11,f1) ; CL2=(A22,f1) 3)Terza Prova: CL1=(A12,f1) ; CL2=(A21,f1) 4)Quarta prova: CL1=(A12,f1) ; CL2=(A22,f1)...e così via tutte le altre combinazioni. Ho capito che devo mettere in iniezione dei cicli for...il mio problema è far scorrere quel vettore di array nel cluster \":oops:\" ---------------------------------------- AUTORE: 927 DATA :13/01/2015 - 09:40:37 ---------------------------------------- Non sei stato chiarissimo... I "vettori di array" sono array monodimensionali? E "far scorrere nel cluster" significa che vuoi copiare nei cluster il contenuto degli array? Se ho capito bene ti servono due cicli for uno dentro l'altro (tre, se devi anche cambiare la frequenza). Attenzione ai punti in cui i fili degli array entrano nei cicli: per ottenere tutte le combinazioni il quadratino dev'essere "indexing" per il primo array solo nel primo for e per il secondo array solo nel secondo for. All'interno dell'ultimo for ottieni i valori scalari e usi la funzione "Bundle" per unirli in un cluster. ---------------------------------------- AUTORE: 11023 DATA :13/01/2015 - 09:54:54 ---------------------------------------- Grazie mille per l'aiuto. \":)\" ---------------------------------------- AUTORE: 1078 DATA :16/01/2015 - 10:06:01 ---------------------------------------- Effettivamente non sei stato molto chiaro. Riusciresti a postare un esempietto? ---------------------------------------- ================================================================================ event callback dotnet ================================================================================ AUTORE: 129 DATA :17/01/2015 - 10:01:40 ---------------------------------------- Ciao a tutti, ho una dll dotNet in c# che all'interno ha delle callback. In dettaglio ho una callback che dovrebbe essere chiamata ogni volta che eseguo una funzione connect. Come nello schema allegato ho registrato la callback con la "register event callback", all'interno di una event structure chiamo la funzione open che dovrebbe lanciare la callback "OnClientConnect". Per verificare che funzioni ho messo all'interno del Callback.vi un dialog message. Però non succede nulla. Per verifica ho provato un esempio che lo fa con il system.timer e funziona correttamente. Qualcuno ha mai avuto esperienze del genere, mi sapete indicare cosa devo guardare? Grazie, Nicola ---------------------------------------- AUTORE: 129 DATA :17/01/2015 - 10:58:35 ---------------------------------------- Ho risolto, mi hanno cambiato la dll, e questa funziona. Grazie, Nicola ---------------------------------------- ================================================================================ Comunicazione UDP utilizzando Labview ================================================================================ AUTORE: 10958 DATA :22/01/2015 - 10:38:51 ---------------------------------------- Salve a tutti, vi scrivo perchè avrei bisogno del vostro supporto per una cosa che vorrei realizzare. Il mio obiettivo è quello di utilizzare Labview ed i suoi blocchetti UDP per poter leggere dati provenienti da una FPGA Xilinx collegata in LAN tramite un cavo cross. Vi spiego nel dettaglio quanto fino ad ora realizzato. Le figure seguenti fanno riferimento al programma (SDK) con compilatore C, tramite il quale vado a programmare l'FPGA. Come testimoniano gli screen, i parametri settati sono i seguenti: LAN settata sul pc: IP: 10.3.0.95 SUB: 255.255.255.0 GAT: 10.3.0.1 FPGA: IP: 10.3.0.96 SUB: 255.255.255.0 GAT: 10.3.0.1 Collegando il cavo di rete cross tra FPGA e Pc, andando a far partire il programma sull'FPGA il tutto funziona. Infatti, utilizzando il programma Wireshark (screen in allegato) i pacchetti di dati provenienti dai sensori arrivano correttamente dall'FPGA al pc. Purtroppo, nel momento in cui voglio utilizzare labview per viualizzare i dati ricevuti, non funziona nulla. Dove sbaglio? Il file VI.jpg è la VI che ho realizzato. Grazie mille in anticipo! \":D\" ---------------------------------------- AUTORE: 10958 DATA :23/01/2015 - 09:29:26 ---------------------------------------- Se qualcuno può darmi anche un piccolo suggerimento per andare avanti.... \":roll:\" \":roll:\" \":roll:\" ---------------------------------------- AUTORE: 301 DATA :23/01/2015 - 12:52:01 ---------------------------------------- ciao, terminando l'esecuzione del tuo vi, hai un errore? la porta è identificata in modo corretto? Aris ---------------------------------------- AUTORE: 645 DATA :23/01/2015 - 16:15:55 ---------------------------------------- Puoi mandare il Block Diagram del VI? Come suggerisce Aris collega al termine del VI dopo la chiusura della comunicazione UDP un blocco di gestione dell'errore per sapere se LabView restituisce qualche informazione. Scusa non avevo letto di VI.jpg! \":mrgreen:\" Prova ad iniziare come nell'immagine allegata inserendo la porta che utilizzi. Il blocco si occupa di inviare i messaggi a tutti i sistemi collegati e non ad uno solo, vediamo se può essere un problema dell'indirizzamento ad un unico dispositivo. E temporizza il ciclo perchè la lettura continua potrebbe causare problemi di comunicazione. ---------------------------------------- AUTORE: 10958 DATA :27/01/2015 - 15:20:45 ---------------------------------------- Grazie mille per le risposte. Appena torno dalle varie trasferte (spero presto \":(\" ), vi aggiorno sulla situazione. Grazie ancora... \":D\" ---------------------------------------- ================================================================================ Come trasformo un Array di booleani in un Array di stringhe? ================================================================================ AUTORE: 822 DATA :23/01/2015 - 09:13:44 ---------------------------------------- Ciao! Esiste in LabVIEW un comando veloce che mi permetta di trasformare un Array di booleani in una Array di stringhe? Voglio passare da: T T F F in booleani F T F F a 1 1 0 0 in stringhe 0 1 0 0 Grazie, Giuseppe ---------------------------------------- AUTORE: 482 DATA :23/01/2015 - 09:45:04 ---------------------------------------- ...ma ciao! c'e' la funzione di conversione da boolean array a bit (si chiama "boolean to (0,1)") e poi da li metti una number to decimal string e sei a posto. ---------------------------------------- AUTORE: 822 DATA :23/01/2015 - 10:24:05 ---------------------------------------- Grazie! Mi perdo sempre nelle banalità.. scusa. \":(\" ---------------------------------------- ================================================================================ Modi di utilizzo event structur ================================================================================ AUTORE: 11030 DATA :26/01/2015 - 14:54:28 ---------------------------------------- Buongiorno a tutti, devo usare labview per lavoro, anche se non sono praticissimo Volevo chiedervi una cosa ho creato una event structur a piu entries ognuna fa le sue cose, e fin qui va bene Sono riuscito anche a far chiamare le entries fra di loro (per esempio la prima entries fa quello che deve fare e alla fine chiama entries 8 che fa il suo lavoro) quello che mi chiedevo è questo: E' possibile chiamare entries all'interno di un loop? Per esempio entries uno è un loop e scrive un numero entries due accende il led se il numero è pari e possibile far chiamare entries due nel loop nell'entries uno? attualmente riesco solo a farla chiamare alla fine del loop non so se mi sono spiegato grazie ---------------------------------------- AUTORE: 43 DATA :26/01/2015 - 16:27:25 ---------------------------------------- [quote="scipio":2a3lelh3]...Volevo chiedervi una cosa ho creato una event structur a piu entries[/quote:2a3lelh3] uhmmm... Mi puoi spiegare cosa intendi per "entry"? La [b:2a3lelh3]Event Structure[/b:2a3lelh3] è composta da più [b:2a3lelh3]Event Case[/b:2a3lelh3] ed ogni Event Case può essere attivato cioè eseguito in seguito al verificarsi di una (una sola) certa condizione di interfaccia UI, meglio nota come [b:2a3lelh3]Event[/b:2a3lelh3], fra quelle elencate nell Event Case. A quale delle 2 possibilità ti stai riferendo? (Event structure composta da più Event Case o Event Case che risponde a più Eventi) [quote="scipio":2a3lelh3]ognuna fa le sue cose, e fin qui va bene Sono riuscito anche a far chiamare le entries fra di loro (per esempio la prima entries fa quello che deve fare e alla fine chiama entries 8 che fa il suo lavoro)[/quote:2a3lelh3] Ora le "entries"se mbrano essere "chiamate"... Sono forse delle funzioni o sotto funzioni, insomma sono dei [b:2a3lelh3]SubVI[/b:2a3lelh3]? [quote="scipio":2a3lelh3]quello che mi chiedevo è questo: E' possibile chiamare entries all'interno di un loop?[/quote:2a3lelh3] Dunque, è possibile: - usare un'event structure all'interno di un loop - usare un loop all'interno di un Event Case - usare un'event structure all'interno di un event case (annidamento) magari dentro un loop ma prima bisagna capire come funziona l'event structure. - avere 2 loop che girano in parallelo ognuno avente all'interno una Event structure. Dipende da quello che si vuole ottenere. Le ultime opzioni (annidamneto o gestione parallela di event structure) sono pratiche sconsigliate dalla stessa NI. [quote="scipio":2a3lelh3]Per esempio entries uno è un loop e scrive un numero entries due accende il led se il numero è pari e possibile far chiamare entries due nel loop nell'entries uno? attualmente riesco solo a farla chiamare alla fine del loop non so se mi sono spiegato grazie[/quote:2a3lelh3]Io nn ho capito.. se qualcuno lo avesse capito, me lo spieghi x cortesia. [quote="scipio":2a3lelh3]Buongiorno a tutti, devo usare labview per lavoro, anche se non sono praticissimo[/quote:2a3lelh3]auguri!! ---------------------------------------- ================================================================================ Array to cluster ================================================================================ AUTORE: 482 DATA :27/01/2015 - 11:03:22 ---------------------------------------- panico panico.... mi sembra una cosa semplice ma mi sfugge e non capisco se è il mio cervello che è in pappa o se non l'ho mai fatto e non so come fare... Devo trasformare un array che non so a priori che dimensione avrà in un cluster. Il blocchetto array to cluster vuole per forza di cose una dimensione fissa che si imposta nelle proprietà del blocchetto e quindi non va bene. Come posso fare? ---------------------------------------- AUTORE: 43 DATA :27/01/2015 - 13:10:54 ---------------------------------------- [quote="gepponline":dwn647f7]... Devo trasformare un array che non so a priori che dimensione avrà in un cluster. ...[/quote:dwn647f7] Dipende cosa intendi per "trasformare" Nn puoi banalmente inserire l'array come elemento nel cluster? fare un cluster composto dallo stesso tipo di elemento ripetuto, teoricamente,all'infinito nn ha senso... dovresti referenziere gli elementi con un nome, nn con un indice... bye ---------------------------------------- AUTORE: 482 DATA :27/01/2015 - 14:41:52 ---------------------------------------- mi spiego meglio, vado a fare l'update di alcuni campi in un DB. Il tool di comunicazione con i database vuole in ingresso un cluster (poi trafsormato in variant). vorrei fare in modo che il mio update sia riutilizzabile in vari punti del codice inserendo quindi tanti valori quanti sono i campi da modificare. Se devo modificare 2 campi il cluster sarà di 2 valori, s ene devo modificare 5 il cluster sarà da 5 ecc ecc.. L'alternativa sarebbe fare un update per ogni campo da modificare ma non mi sembra il caso oppure fare l'update di tutti i campi, ma anche li ogni volta dovrei portarmi dietro tutti i valori del record. consigli? ---------------------------------------- AUTORE: 43 DATA :28/01/2015 - 08:57:09 ---------------------------------------- Secondo me devi scegliere fra i 2 tipi di dati: array stringhe o cluster/variant. La scelta deve essere esclusiva, cioè se scegli cluster/variant nel sw che hai scritto puoi usare solo dati sottoforma di variant o cluster, mai usare array di stringhe. bye. ---------------------------------------- AUTORE: 482 DATA :28/01/2015 - 12:37:27 ---------------------------------------- [quote:2t7q3e80]Secondo me devi scegliere fra i 2 tipi di dati: array stringhe o cluster/variant.[/quote:2t7q3e80] Questo non mi risolve il problema pero'. Anche se decidessi di usare solo cluster (cosa che non faro' perchè complica parecchio la gestione), resta il fatto che il mio cluster non sarà sempre della stessa dimensione perchè non voglio portarmi dietro decine di dati inutili nei vari subVi. ---------------------------------------- AUTORE: 482 DATA :28/01/2015 - 12:41:23 ---------------------------------------- Comunque a quanto ho capito, la quetsione è che i cluster devono per forza essere allocati prima dell'esecuzione. Quindi provo a ribaltare il problema. E' possibile trasformare l'ingresso della funzione UPDATE del database connectivity toolkit da cluster ad array? ---------------------------------------- AUTORE: 43 DATA :13/02/2015 - 09:00:15 ---------------------------------------- Io ribalterei l'uso che fai della libreria... Ho visto dal Database Connectivity Toolkit User Manual (cercato con Google) che nella libreria ci sono funzioni "Advanced" che ti permettono di parametrizzare le Query. In particolare la funzione "Create Parametrized Query"potrebbe esserti di aiuto. In generale direi che è inutile incaponirsi ad utilizzare una funzione nn adattabile a quello che ti serve, ma meglio farsene una in casa, magari un po' + complessa, ma che fa quello che deve fare. in fondo si tratta di comporre una stupidissima stringa di comando. Pur nn avendo mai usato il Database Connectivity Toolkit, quando ho dovuto gestire DB mi sono costruito le mie query come stringhe parametriche. bye ---------------------------------------- AUTORE: 482 DATA :13/02/2015 - 13:33:41 ---------------------------------------- beh si di solito se ho robe un po' piu' impegnative gli passo direttamente la query con il comando execute query..ma siccome il comando standard è comodo, volevo capire se c'era qualche passaggio che mi sfuggiva e magari era possibile aggirare. D'altronde, i nomi delle colonne glieli passo tramite array, non cpaisco perchè non hanno strutturato come array anche i valori... ---------------------------------------- ================================================================================ comandi per inserimento testo ================================================================================ AUTORE: 11031 DATA :27/01/2015 - 12:58:52 ---------------------------------------- Buongiorno a tutti, sono nuovo del forum e mi presento: Sono Marco ed abito a Genova, tecnico di produzione che si diletta ad armeggiare con labview ogni tanto. vengo al dunque, ho scritto un .vi nel quale acquisisco delle misure da seriale con una state machine; prima di iniziare le misure interrogo un db sql con una store procedure, io fornisco la matricola del prodotto, in risposta ho un altro codice che mi serve a decidere quale processo di misura utilizzare. mi sono bloccato per un problema forse banale ma del quale non ho trovato soluzioni su internet, vorrei leggere la matricola con un lettore codebar usb, non ho ben chiaro come avere automaticamente il focus nel campo di inserimento dati del front pannel e come eliminare la pressione del tasto "enter text" (la V) o sostituirla con il return generato dal lettore. spero di essere stato sufficientemente chiaro. un saluto M. ---------------------------------------- AUTORE: 43 DATA :27/01/2015 - 14:00:08 ---------------------------------------- [quote="Giove":363dt7c8]Buongiorno a tutti, sono nuovo del forum e mi presento: Sono Marco ed abito a Genova, tecnico di produzione che si diletta ad armeggiare con labview ogni tanto. vengo al dunque, ho scritto un .vi nel quale acquisisco delle misure da seriale con una state machine; prima di iniziare le misure interrogo un db sql con una store procedure, io fornisco la matricola del prodotto, in risposta ho un altro codice che mi serve a decidere quale processo di misura utilizzare. mi sono bloccato per un problema forse banale ma del quale non ho trovato soluzioni su internet, vorrei leggere la matricola con un lettore codebar usb, non ho ben chiaro come avere automaticamente il focus nel campo di inserimento dati del front pannel e come eliminare la pressione del tasto "enter text" (la V) o sostituirla con il return generato dal lettore. spero di essere stato sufficientemente chiaro. un saluto M.[/quote:363dt7c8] Il tuo nick, Giove, mi ricorda un passato ormai remoto che nn fu troppo felice...ma devo ammettere che il tuo post, pur nn avendo immagini o VI in allegato, è molto chiaro e comprensibile. I BCR (BarCodeReaders) sono degli oggetti che di solito si collegano al PC tramite porta USB (come nel tuo caso) e simulano, ne più ne meno una tastiera. Sempre "di solito", questi BCR possono inserire in fondo alla stringa di caratteri che leggono, un carattere terminatore, tipicamente CR o LF o entrambi... Ciò è indispensabile per sfruttare al meglio il BCR Ma veniamo a LabVIEW. Per gestire al meglio l'inserimento di dati con BCR, consiglio di usare un controllo di tipo Testo, che deve essere limitato all'inserimento di una sola linea di testo (mettere la spunta alla proprietà [b:363dt7c8]Linit to Single Line[/b:363dt7c8]) All'inizio, per il primo inserimento di dati e subito dopo aver terminato l'inserimento del dato, è necessario posizionare automaticamente il cursore su controllo che dovrà ricevere il testo letto da BCR o in alternativa digitato a mano. Questa operazione è molto semplice basta, usando il[b:363dt7c8] reference del controllo[/b:363dt7c8] sul quale si vuole mettere il fuoco, settare a TRUE la Proprietà Booleana [b:363dt7c8]KeyFocus[/b:363dt7c8], proprietà comune a tutti i controlli LabVIEW. In alternativa si può creare partendo dal controllo sul FP, un [b:363dt7c8]Property Node[/b:363dt7c8], ma, secondo me, risulterebbe scomodo se devi gestirne + di uno, ... In realtà questa operazione da sola nn è sufficiente per prepararsi correttamente all'immissione dati: è possibile infatti che si voglia inserire il testo dove è presente un testo precedentemente inserito e perciò bisogna predisporsi alla sovrascrittura. Per fare ciò usare le proprietà Text --> Selection --> Start Test --> Selection --> End Settando la proprietà start a 0 e la prop. end a 1000 o meglio alla lunghezza della stringa visualizzata In questo modo, quando il focus sarà sul controllo , il testo apparirà automaticamente selezionato e verrà cancellato appena il primo carattere verrà digitato o letto da bcr. E' chiaro che se si vuole modificare a manoil valore nel controllo, basterà premere il tasto freccia dx o sx per posizionare il cursore all'inizio o alla fine della stringa disabilitando la selezione automatica. infine si deve gestire l'evento di value change che verrà innescato dalla pressione del tasto return sul controllo in corso di modifica (con il focus) bye ---------------------------------------- AUTORE: 11031 DATA :27/01/2015 - 15:15:47 ---------------------------------------- Grazie per la risposta Paracarro, stasera provo ad applicare i tuoi consigli, vediamo cosa ci salta fuori.. Non ho ben capito a cosa ti riferissi, ad ogni modo il mio nick è semplicemente dettato dalla passione per l'astronomia. M. ---------------------------------------- ================================================================================ salvataggio temporizzato ================================================================================ AUTORE: 4376 DATA :27/01/2015 - 13:32:11 ---------------------------------------- Ciao sono in alto mare... Devo acquisire per un tempo prefissato un cluster contenennte 11 segnali analogici... Ho provato di tutto ma sono fuso...... Qualcuno ha suggerimenti??? Sicuramente la soluzione sarà anche facile ma... Davide ---------------------------------------- AUTORE: 645 DATA :21/04/2015 - 10:53:18 ---------------------------------------- Hai provato a guardare gli esempi relativi ai cicli? Potresti fare un ciclo While (o anche For) temporizzato (con sottomultipli del tempo totale di acquisizione) e leggere i segnali analogici. Come acquisisci i segnali? Che scheda usi? ---------------------------------------- ================================================================================ SMTP mittente ================================================================================ AUTORE: 482 DATA :27/01/2015 - 14:44:31 ---------------------------------------- ...ma ciao! sto usando i VI di comunicazione via SMTP per mandare email ad alcuni utenti. Il vi ha un ingesso che si chiama "return address" che indica l'indirizzo email dal quale mandare la mail. Qualcuno di voi ha esperienza su questo tool e sa come sostituire questo indirizzo con un alias? In modo che chi la riceve non veda l'indirizzo ma un Nome specifico. ---------------------------------------- AUTORE: 927 DATA :14/04/2015 - 09:38:17 ---------------------------------------- Anni fa per mandare email (senza allegati) mi funzionava questo VI, che ho trovato non so dove e rimaneggiato. E' leggero ma ha più parametri rispetto al VI di sistema, tra cui il mittente. La mia risposta arriva troppo tardi, ma per curiosità provalo \":)\" ---------------------------------------- ================================================================================ Gestione di numerosi canali su cDAQ ================================================================================ AUTORE: 4217 DATA :29/01/2015 - 18:07:55 ---------------------------------------- Salve a tutti, sto sviluppando un'applicazione che prevede l'acquisizione di 37 canali provenienti da un cDAQ-9188. Ovviamente sul pannello frontale sono presenti altrettanti indicatori (sia di tipo grafico che numerico). Sono riuscito a essere ordinato sul Front Panel. I problemi sorgono sul Block Diagram dove devo gestire array grandi provenienti dai vari task acquisiti e devo inserire in bundle i segnali acquisiti insieme ad elaborazioni effettuate parallelamente. Vi è mai capitata una situazione del genere? Come avete gestito questa miriade di wire/index array/bundle/ecc ecc che occupano un sacco di spazio nel block diagram e vanno a degradare la chiarezza dello stesso ? Grazie. ---------------------------------------- AUTORE: 301 DATA :30/01/2015 - 06:41:20 ---------------------------------------- ciao, data la mancanza del vi, alla domanda risponderei solo...."non mettendoli". Hai i segnali gestiti in array, e la via più comoda, rapida e meno onerosa è proprio gestire gli array stessi. Poi, ripeto, non avendo un esempio di cio che hai fatto, è difficile dare consigli. A livello di FP puoi sfruttare una tabella, anzi che avere ogni indicatore singolo (se domani devi aggiungere un canale al tuo progetto, devi riprendere in mano il tutto?!?!). Aris ---------------------------------------- AUTORE: 43 DATA :30/01/2015 - 08:38:31 ---------------------------------------- [quote="Jvb":1st5cvap]Salve a tutti, sto sviluppando un'applicazione che prevede l'acquisizione di 37 canali provenienti da un cDAQ-9188. Ovviamente sul pannello frontale sono presenti altrettanti indicatori (sia di tipo grafico che numerico). Sono riuscito a essere ordinato sul Front Panel. I problemi sorgono sul Block Diagram dove devo gestire array grandi provenienti dai vari task acquisiti e devo inserire in bundle i segnali acquisiti insieme ad elaborazioni effettuate parallelamente. Vi è mai capitata una situazione del genere? Come avete gestito questa miriade di wire/index array/bundle/ecc ecc che occupano un sacco di spazio nel block diagram e vanno a degradare la chiarezza dello stesso ? Grazie.[/quote:1st5cvap] Se mi permetti, questa è la parte + bella del Nostro mestiere di programmatore... Estrapolare la parte di codice comune e, [b:1st5cvap]EVITANDO LA DUPLICAZIONE DEL CODICE[/b:1st5cvap] come si evita la morte, ottimizzare codice e performance cercando di mantenerne leggibilità e semplicità nell'introduzione di aggiunte e modifiche (ove possibile). SubVI e "strutture ciclanti" (for while) sono le chiavi per evitare le duplicazioni di codice, mentre l'indicizzazione semplifica l'accesso ai dati in genere. Nel tuo caso: se hai 37 cluster o controlli [b:1st5cvap]dello stesso tipo[/b:1st5cvap] sparpagliati nel FP, basta raccogliere i reference di tutti i controlli in un array per gestirne l'aggiornamento in un loop. Per avere un refresh veloce del FP consiglio di usare la proprietà del FP [b:1st5cvap]defer panel update[/b:1st5cvap], già descritta in molti altri post di questo forum. bye ---------------------------------------- AUTORE: 1078 DATA :02/02/2015 - 12:33:53 ---------------------------------------- Sono d'accordo con @paracarro! La bellezza del nostro mestiere e la bravura nel farlo si vede soprattutto nella gestione di miriadi di segnali lasciando "pulito" il codice.... Per fare quello che pensi di fare davi essere padrone di strutture complesse, quali le code e altro. Un consiglio che posso darti è: evita le variabili globali come la peste..... Ciao e buon lavoro! ---------------------------------------- AUTORE: 4217 DATA :03/02/2015 - 16:23:47 ---------------------------------------- Salve a tutti. Innanzitutto grazie infinite per la gentilezza nel rispondermi. Volevo, se possibile, essere chiarito alcune cose: [quote="aris":1duq747o] A livello di FP puoi sfruttare una tabella, anzi che avere ogni indicatore singolo (se domani devi aggiungere un canale al tuo progetto, devi riprendere in mano il tutto?!?!). [/quote:1duq747o] @aris, cosa intendi per tabella? [quote="paracarro":1duq747o] SubVI e "strutture ciclanti" (for while) sono le chiavi per evitare le duplicazioni di codice, mentre l'indicizzazione semplifica l'accesso ai dati in genere. Nel tuo caso: se hai 37 cluster o controlli [b:1duq747o]dello stesso tipo[/b:1duq747o] sparpagliati nel FP, basta raccogliere i reference di tutti i controlli in un array per gestirne l'aggiornamento in un loop. Per avere un refresh veloce del FP consiglio di usare la proprietà del FP [b:1duq747o]defer panel update[/b:1duq747o], già descritta in molti altri post di questo forum. bye[/quote:1duq747o] @paracarro, ho afferrato il concetto delle strutture ciclanti, che mi sembra un ottimo consiglio, però non ho capito bene cosa intendi per indicizzazione. Ti riferisci ai casi in cui si ha a che fare con array o cluster? Detto ciò Vi illustro in modo più chiaro la situazione, allegandovi anche un'immagine del VI semplificato, utile per mostrare il concetto in modo chiaro. Allora, all'interno del VI c'è un singolo task che raccoglie 40 canali (Multiple Channel Single Sample - Continuos Sample). E' stata scelta una struttura Producer/Consumer basata su una coda, a cui vengono destinati i dati acquisiti. Nel ciclo Consumer vengono raccolti i dati dalla coda, vengono confrontati con dei parametri di min e max e il risultato viene incapsulato in un cluster. Per questo motivo è stato scelto di creare un controllo typedef formato da un indicatore numerico e un booleano. Per motivi di chiarezza e di posizionamento sul FP, tali controlli non possono stare in un ulteriore cluster o in un array. Adesso la domanda è questa: fare l'operazione di bundle e collegamento per 4/5 indicatori è banale, ma farlo per 40 diventa una matassa di fili inimmaginabile. Probabilmente la questione si può approcciare, in modo elegante, con un SubVI e con i reference. Voi che consiglio mi date? Vi ringrazio. Saluti ---------------------------------------- AUTORE: 482 DATA :04/02/2015 - 07:20:46 ---------------------------------------- ipotizzo una soluzione: Allo startup del tuo VI crei un array di reference che contiene i reference a tutti i tuoi indicatori. Puo' essere fatto manualmente uno per uno oppure in automatico utilizzando le property del VI e andando a prendere tutti i controlli che hanno una stessa caratteristica (es. nome che comincia per "Indicatore ") appena il consumer legge la coda, trasformi la coda in un array di cluster e associ il valore di ogni cluster al rispettivo indicatore. Allego snippet per chiarezza. (Uno snippet è un immagine PNG che se trascinata nel block diagram diventa codice labVIEW.Per crearla basta selezionare una prozione di codice poi dal menu EDIT selezionare "create Vi snippet from selection) ---------------------------------------- AUTORE: 482 DATA :04/02/2015 - 07:22:13 ---------------------------------------- creando lo snippet sembra che che i reference siano diventati dei controlli a se stanti. quindi sostituisci i controlli reference con i reference effettivi ai rispettivi indicatori. come nell'immagine allegata ---------------------------------------- AUTORE: 43 DATA :04/02/2015 - 10:48:01 ---------------------------------------- [quote="Jvb":24jdwf8y]@paracarro, ho afferrato il concetto delle strutture ciclanti, che mi sembra un ottimo consiglio, però non ho capito bene cosa intendi per indicizzazione. Ti riferisci ai casi in cui si ha a che fare con array o cluster?[/quote:24jdwf8y] Si, mi riferivo agli array. Mi aspettavo che mi chiedessi qualcosa riguardo "reference" e "defer panel update", ma nn importa. Immaginavo che i tuoi Indicatori fossero sparpagliati nel FP messi in un sinottico di impianto... Rappresentare le 37 grandezze in una tabella testuale come a scritto aris nn sarebbe comunque male: basta colorare lo sfondo della cella con un colore (rosso o verde x es.) se la misura è valida o meno. Geppo ha implementato quello che ti stavo suggerendo: creare un array di reference e gestirne l'aggiornamento in un loop. Però sarebbe utile costruire l'array di reference in modo automatico e usare defer panel update che potrebbe dare "una svolta" velocizzando l'"update" del FP. Se riesco ti posto un esempio bye ---------------------------------------- AUTORE: 4217 DATA :05/02/2015 - 16:52:26 ---------------------------------------- Salve a tutti e come sempre grazie per il supporto \":)\" Sulla base dei primi suggerimenti (quelli in cui si consigliava di ciclare la parte di codice comune), l'altro ieri trovai una soluzione utilizzando un ciclo di for che mi costruisse i bundle necessari agli indicatori. La soluzione non è elegante, ma funziona. Riporto uno screenshot di quello che ho eseguito. Una cosa mi rimane in dubbio: se ci fate caso, al collegamento con l'indicatore typedef c'è il puntino rosso di casting. Ho controllato che le "Representation" dell'indicatore e del cluster sono coerenti. Per LabVIEW Cluster e Indicatore typedef sono tipi diversi? Altrimenti perchè fa il casting? @geppolinde: ti ringrazio per il supporto di codice. Non conoscevo la funzione snippet. Nei giorni futuri cercherò di implementare anche la soluzione che mi hai indicato, che sicuramente rende il codice più pulito ed elegante, oltre che di più alto livello. Potresti spiegarmi meglio la questione relativa alle property del VI che prende tutti i controlli che hanno la stessa caratteristica? @paracarro: perdonami se ti ho "deluso" nel chiederti una banalità. Non ti ho chiesto del "reference" e del "defer panel update" perchè avevo le nozioni sul VI Servere e sul secondo mi sono documentato dopo il tuo primo post di suggerimenti. Da quanto ho potuto capire il "defer" va a gestire l'aggiornamento (redraw) del FP. Nell'help dice che, se tale proprietà è impostata su true, il FP non viene aggiornato al cambio del valore degli indicatori. Ho capito bene? Grazie mille come sempre. Saluti ---------------------------------------- AUTORE: 482 DATA :06/02/2015 - 07:19:50 ---------------------------------------- Ti allego il vi che crea l'array di reference ai vari indicatori. L'ho commentato un po' per chiarire cosa fa. ---------------------------------------- AUTORE: 43 DATA :06/02/2015 - 08:48:33 ---------------------------------------- [quote="Jvb":33k2gmw8]... La soluzione non è elegante, ma funziona. Riporto uno screenshot di quello che ho eseguito. Una cosa mi rimane in dubbio: se ci fate caso, al collegamento con l'indicatore typedef c'è il puntino rosso di casting. Ho controllato che le "Representation" dell'indicatore e del cluster sono coerenti. Per LabVIEW Cluster e Indicatore typedef sono tipi diversi? Altrimenti perchè fa il casting?[/quote:33k2gmw8] Certo! sono tipi diversi! Anche un I16 e un U16 sono tipi diversi ma occupano la memoria nello stesso modo. Per evitare il pallino rosso coertion dot, devi ovviamente usare un "Bundle by Name" al posto di "Bundle", in modo che i nomi degli elementi della struttura coincidano. Al bundle by name devi collegare in ingresso uno a caso dei tuoi indicatori (variabile locale tipo controllo, nn indicatore...). E' quasi sempre meglio usare bundle by name e unbundle by name xkè rendono comprensibile il codice. Anche se gli elementi del cluster sono 2. Ho notato, purtroppo, che nn hai apprezzato l'uso dei reference proposti da me e geppo anche xkè dall'immagine postata si notano delle eccezioni (io avrei gestito comunque quelle eccezioni dentro un loop) Se mio permetti una considerazione:l'"index Array" usato come fai tu potrebbe essere semplificato se collegassi solamente il primo indice xkè se viene omesso un indice (mi riferisco alle costanti numeriche intere, numeri blu)verrà considerato l'indice precedente incrementato di uno. nell'index array dove usi gli indice dal 15 al 27, potresti indicare solo l'indice 15, mentre nell'index array che va da 0 a 14 potresti anche evitare di mettere indici, dato che se il primo indice viene omesso viene considerato l'elemento 0. [quote="Jvb":33k2gmw8]@paracarro: perdonami se ti ho "deluso" nel chiederti una banalità. Non ti ho chiesto del "reference" e del "defer panel update" perchè avevo le nozioni sul VI Servere e sul secondo mi sono documentato dopo il tuo primo post di suggerimenti. Da quanto ho potuto capire il "defer" va a gestire l'aggiornamento (redraw) del FP. Nell'help dice che, se tale proprietà è impostata su true, il FP non viene aggiornato al cambio del valore degli indicatori. Ho capito bene? [/quote:33k2gmw8] Hai capito bene. se devi aggiornare 37 indicari in un FP , potresti vedere un "effetto onda" per cui noti visivamente che gli indicatori vengono aggiornati "a macchia di leopardo" cioè vedi aggiornarsi prima un indicatore poi un altro ecc., in funzione anche della frequenza con cui li aggiorni... con defere panel update messo a true viene sospeso l'aggiornamento di tutto il FP. a questo punto tu aggiorni tutti i tuoi indicatori. poi metti a false defere panel update e... pam! tutto il FP viene aggiornato in un istante. bye ---------------------------------------- AUTORE: 4217 DATA :06/02/2015 - 15:33:19 ---------------------------------------- @gepponline: Grazie per l'ottimo esempio! Adesso ho capito perfettamente cosa intendevi! Scusa se nel post precedente con la tastiera ho pastrugnato il tuo nick. @paracarro: non la sapevo questa del coercion dot sui bundle, cambierò con bundle by name. Lungi da me dal non apprezzare i Vostri consigli: sarei uno stupido a scrivere su un forum dove ci sono persone più esperte di me e successivamente ignorarne i consigli! E' capitato semplicemente che sulla base dei primi consigli che mi avete dato (tra cui proprio il tuo di utilizzare codice ciclato) feci il codice che Vi ho mostrato nel precedente post. Come ho detto a gepponline, a breve cercherò di scrivere anche il codice con i reference, che lo rendono più snello e chiaro. Per quanto riguarda l'index Array, ovviamente non lo sapevo...purtroppo questo è il frutto del fatto che ho le nozioni...ma poca pratica! e quindi i Vostri Tips&Tricks sono sempre bene accetti! \":)\" Cercherò anche di implementare il "defer". Vi ringrazio come sempre per il supporto. Saluti ---------------------------------------- AUTORE: 4217 DATA :18/02/2015 - 15:07:11 ---------------------------------------- Salve a tutti. @paracarro: ritorno sulla questione del "defer update panel". Ho provato questa soluzione che mi consigliavi e devo dire che funziona alla grande. Giusto per capire se ho fatto bene: ho creato un ciclo che ogni secondo fa switchare la proprietà "defer panel update" da FALSE a TRUE e viceversa, in modo che l'aggiornamento del Front Panel avvenga per l'intervallo che ho prestabilito. @paracarro, era proprio questo quello che intendevi oppure ho interpretato male il tuo consiglio? Grazie. Saluti ---------------------------------------- AUTORE: 43 DATA :19/02/2015 - 08:35:03 ---------------------------------------- [quote="Jvb":qlir8w0b]Salve a tutti. @paracarro: ritorno sulla questione del "defer update panel". Ho provato questa soluzione che mi consigliavi e devo dire che funziona alla grande. Giusto per capire se ho fatto bene: ho creato un ciclo che ogni secondo fa switchare la proprietà "defer panel update" da FALSE a TRUE e viceversa, in modo che l'aggiornamento del Front Panel avvenga per l'intervallo che ho prestabilito. @paracarro, era proprio questo quello che intendevi oppure ho interpretato male il tuo consiglio? Grazie. Saluti[/quote:qlir8w0b] La cosa + importante è che tu riesca ad apprezzare la differenza nel comportamento del tuo sw fra con e senza defer panel update. Mi sembra di capire che tu mantenga sospeso l'aggiornamento grafico per tutto il tempo e che periodicamente fai un aggiornamento generale del tuo FP. Beh! Nn sono sicuro sia la cosa migliore... Nn so quanta interazione, quante possibilità sono date all'operatore di interagire con il tuo FP, ma tenere l'aggiornamento sospeso, per es. potrebbe impedire che venga visualizzata correttamente la pressione di un tasto... Cioè sarebbe giusto secondo me sospendere l'aggiornamento del FP solo per il + breve tempo possibile, quindi concentrando tutti gli aggiornamenti in un unico punto del codice facendoli precedere dal comando di sospensione (defer =True) ed al termine eseguire l'aggiornamento (defer =False) bye ---------------------------------------- AUTORE: 4217 DATA :23/02/2015 - 09:54:27 ---------------------------------------- @paracarro: perfetto...recepito il messaggio \":)\" Grazie Saluti ---------------------------------------- ================================================================================ tempo ciclico ================================================================================ AUTORE: 4376 DATA :30/01/2015 - 14:22:27 ---------------------------------------- Ciao a tutti Ho fatto un VI ciclico per una banco prova Ad una ora prefissata dal lunedi al venerdi, dovrebbe cambiare stato, ma la soluzione trovata funziona una volta ogni tanto, per via del tempo troppo preciso, che non è mai uguale. Oltretutto vorrei aggiungere la possibilità di cambiare anche la data al venerdi e mifaccia cambiare lo stato al lunedi ad una ora precisa.... si accettani suggerimenti Ciao Davide ---------------------------------------- AUTORE: 43 DATA :30/01/2015 - 15:36:55 ---------------------------------------- [quote="Davide":4ancai3a]Ciao a tutti Ho fatto un VI ciclico per una banco prova Ad una ora prefissata dal lunedi al venerdi, dovrebbe cambiare stato, ma la soluzione trovata funziona una volta ogni tanto, per via del tempo troppo preciso, che non è mai uguale. Oltretutto vorrei aggiungere la possibilità di cambiare anche la data al venerdi e mifaccia cambiare lo stato al lunedi ad una ora precisa.... si accettani suggerimenti Ciao Davide[/quote:4ancai3a] Beh ! mi rendo conto di essere a volte incomprensibile. Specie quando mi rileggo e noto come ho scritto male un concetto che volevo esprimere. Però nn capisco nulla di quanto scritto. Soprattutto mancano riferimenti un po' + tecnici riguardo LabVIEW. Posta il codice così vediamo dove sta il baco. bye buon we a tutti ---------------------------------------- AUTORE: 482 DATA :02/02/2015 - 09:36:30 ---------------------------------------- ..concordo con paracarro quindi provo a buttare li un ipotesi di cosa potrebbe esserci in ballo. Hai fatto sto ciclo che DOVREBBE cambiare stato quando passa un tot di tempo. Il problema è che tu per stabilire che pass aun tot tempo hai messo un UGUALE invece dovresti mettere un MAGGIORE O UGUALE senno' se sta eseguendo qualcosa mentre dovrebbe essere uguale, l'uguaglianza non c el'avrai mai. ..cosi'..giusto per sparare qualcosa... ---------------------------------------- AUTORE: 1078 DATA :02/02/2015 - 10:05:46 ---------------------------------------- Effettivamente quello che dice @geppo ha senso. Prova a mettere un maggiore-uguale per verificare che sia trascorso il tempo necessario. Inoltre concordo con paracarro! Del codice aiuterebbe a capire meglio! Ti allego un VI di esempio che implementato correttamente può essere usato per eseguire del codice in base al giorno scelto. Spero di essere stato di aiuto. Buon lavoro! ---------------------------------------- AUTORE: 4376 DATA :02/02/2015 - 15:23:41 ---------------------------------------- Ciao a tutti e grazie del vostro aiuto.. Mi spiego meglio.... ho una macchina a stati che esegue sempre lo stesso ciclo per fare una prova di endurance.... deve fermarsi sempre alla stessa ora dal lunedi al venerdi es. le 17.00 poi deve andare per tutto il we e fermarsi successivamente al lunedi mattina ad una ora prestabilita.... ho trovato sul sito NI un applicazione,che posto, ma non riesco a farla funzionare.... dentro il ciclo non va, fuori dal ciclo nemmeno..... boh non capisco... Purtroppo non ho la versione 2014 ma la 2012 se riuscite a salvarla in versione precedente sarei grato un grazie a tutti e un caloroso saluto Scusate appena riesco posto il codice..... ---------------------------------------- AUTORE: 43 DATA :02/02/2015 - 15:56:13 ---------------------------------------- Quando scrivi un post in questo forum, ti appaiono nella parte inferiore 3 pulsanti [Save] [Preview] [Submit] appena sotto questi, trovi un tab con [Option] selezionato in automatico e a fianco [Upload Attachment] "Attachment" è "Allegato" in inglese Premi il tab [Upload Attachment] Premi a questo punto [Scegli file] una volta selezionato il file che vuoi postare, scrivi un commento nella riga sottostante (opzionale)File comment ed infine premi il tasto [Add the File] bye ---------------------------------------- AUTORE: 1078 DATA :06/02/2015 - 08:07:16 ---------------------------------------- @Davide, Intanto ti posto il mio VI di esempio in formato LV2012... ---------------------------------------- AUTORE: 4376 DATA :06/02/2015 - 10:42:10 ---------------------------------------- Ciao Riccardo ti ringrazio del VI modificato. Posto il VI trovato e modificato un "zic" da me.... in pratica legge una stringa e la verifica tra due valori e diciamo che funziona. Cercherò di integrare la tua VI nel mio programma e magari implementerò insieme quella dell'ora. Se hai suggerimenti in merito sono ben accetti, visto che sono abbastanza novellino Ciao Davide ---------------------------------------- AUTORE: 4376 DATA :06/02/2015 - 10:47:01 ---------------------------------------- [attachment=0:xhh8j94t]Event.vi[/attachment:xhh8j94t] ---------------------------------------- AUTORE: 43 DATA :06/02/2015 - 11:23:51 ---------------------------------------- Ma dai! confrontare 2 numeri convertiti in stringa lo trovo scomodo e pericoloso. La stringa "2" per es. è maggiore di "1000" e in generale di tutte le stringhe che iniziano con il carattere '0' o '1'. Quindi la prima considerazione è che se DEVI confrontare due numeri convertiti in stringa lo puoi fare solamente se le stringhe sono lunghe uguali e le cifre sono correttamente allineate (allineate a destra). Nel tuo caso le stringhe sono lunghe uguali e quindi ok, ma si nota chiaramente un potenziale baco: tu metti ggmmaaaahhmmss sbagliando a dare "peso" ai componenti la data. Sarebbe meglio confrontare le stringhe nel formato aaaammgghhmmss bye ---------------------------------------- AUTORE: 4376 DATA :06/02/2015 - 13:12:54 ---------------------------------------- Ciao ringrazio per il supporto ricevuto. LO so, quindi non mi vergogno di dire che il programma che ho fatto ( IL PRIMO ) nonostante le mie precarie conoscenze e visto soprattutto che fino a qualche mese fà nella vita facevo altro....gira benino. Al di la di qualche modifica sarebbe pronto. Ovviamente cercherò di attingere il più possibile da voi che siete ormai esperti in questo... Ciao D. ---------------------------------------- AUTORE: 1078 DATA :06/02/2015 - 15:38:13 ---------------------------------------- Ciao @Davide, Sono d'accordo con @paracarro, confrontare due numeri come stringa e verificandone il loro formato non mi sembra il massimo, non è il massimo dell'efficienza! Ma se funziona! ---------------------------------------- AUTORE: 4376 DATA :16/02/2015 - 15:13:42 ---------------------------------------- Ciao a tutti Partendo dai ringraziamenti per il loro aiuto a Ricky, Paracarro e Geppo ho tirato le somme per quanto riguarda il VI che tiene conto dei giorni e dall'ora per effettuare degli eventi su una macchina a stati..... Posto il VI che, scusandomi, per la mia "RUZZEZZA" come diceva il buon vecchio DOC Emmet Brown ho più volte provato e funziona regolarmente.... sicuramente sarebbe potuto venire meglio o addirittura più funzionale, ma diciamo che per le mie esigenze funziona correttamente. Sono aperte critiche, suggerimenti e (sicuramente) migliorie. Un cordiale saluto e buon lavoro a tutti. D. ---------------------------------------- AUTORE: 43 DATA :17/02/2015 - 14:36:07 ---------------------------------------- commenti all'interno del VI[attachment=0:269uh0y1]BoolDailyEvent.vi.vi[/attachment:269uh0y1]bye ---------------------------------------- AUTORE: 4376 DATA :19/02/2015 - 13:43:45 ---------------------------------------- Ciao @Paracarro Ti ringrazio infinitamente per il tuo supporto... Una curiosità: nessuno ha disponibilità della documentazione rigurdante il corso Core 3 di LabVIEW???? ciao D: ---------------------------------------- ================================================================================ Comportamento controlli ================================================================================ AUTORE: 482 DATA :17/02/2015 - 08:48:41 ---------------------------------------- Per quanto ne so non è possibile ma ultimamente sono rimasto un po' indietro sugli aggiornamenti allora vi chiedo: E' possibile modificare il comportamento intrinseco ad un controllo senza per forza passare dal codice del programma? Mi spiego con un esempio. Ho un cluster in cui il primo controllo è un menu ring in cui scelgo un tipo di comparazione: = < > <> poi ho due controlli stringa. Il primo è sempre presente. Il secondo deve comparire solo se il valore del menu ring è "<>" Normalmente andrei a verificare il cluster e verificare se il menu ring dentro al cluster ha un certo valore ecc ecc... Non è che nelle nuove versioni di labview si puo' inserire del codice nei singoli controlli? L'alternativa è OOP? mai usata e preferirei non usarla, ma nel caso specifico, è una cosa fattibile senza troppi sbattimenti? o cmq non si puo' neanche in OOP? grazie!! ---------------------------------------- AUTORE: 43 DATA :17/02/2015 - 09:41:01 ---------------------------------------- l'alternativa sono gli Xcontrol bye ---------------------------------------- AUTORE: 482 DATA :17/02/2015 - 10:02:26 ---------------------------------------- .mmhh..mai usati...riesci a riassumermi come funzionano? ---------------------------------------- AUTORE: 43 DATA :17/02/2015 - 12:56:04 ---------------------------------------- [quote="gepponline":1a3jzphy].mmhh..mai usati...riesci a riassumermi come funzionano?[/quote:1a3jzphy] Ti rimando all'Help di LabVIEW. Digita "Xcontrol" e seleziona nell'help (colonna "Location") tutte le pagine relative a "Concept".Ti farai una idea + precisa e completa di cosa sono. L'informazione essenziale che riguarda gli XControl è che gli XControl possono essere creati e modificati solo usando LabVIEW Professional Edition, senza alternative. L'aspetto grafico del controllo è definito in un FP con tutto quello che ne consegue, cioè il pieno controllo dell'interfaccia... Però se posso esprimere un'opinione riguardo al concetto che hai espresso nel 1mo post,.. è che il miglior controllo che può contenere una "espressione" è una stringa. Devi solo levarti da dosso un po' di pigrizia per scrivere/disegnare un parser che gestisca l'interpretazione di tale stringa... bye ---------------------------------------- AUTORE: 43 DATA :17/02/2015 - 13:01:28 ---------------------------------------- dimenticavo: usando la stringa per contenere espressioni, puoi evitare di creare e gestire un editor fatto ad hoc, e potrai delegare tutto ad un text editor esterno. Sarà + facile anche il salvataggio e il caricamento di tali espressioni potendo utilizzare plain txt files ---------------------------------------- AUTORE: 482 DATA :17/02/2015 - 13:51:42 ---------------------------------------- ..il problema è che non lo devo fare io. Se si trattasse di un app che resta in mano a me non ci sarebbero problemi. Sto realizzando un interfaccia che dovranno usare degli utenti finali con minimissime nozioni e quindinon posso permettermi di fargli scrivere direttamente un espressione SQL. Seguendo il tuo consiglio ho provato a realizzare un Xcontrol che sembra poter fare al caso mio, ma sto avendo un problemino... Quando lo piazzo nel FP si inizializza ad un "NON valore"(65535) il menu ring e non capisco come mai e come risolvere. suggerimenti? Allego l'X control realizzato. ---------------------------------------- AUTORE: 43 DATA :17/02/2015 - 15:07:53 ---------------------------------------- [quote="gepponline":v2o6y2zg]..il problema è che non lo devo fare io. Se si trattasse di un app che resta in mano a me non ci sarebbero problemi. Sto realizzando un interfaccia che dovranno usare degli utenti finali con minimissime nozioni e quindinon posso permettermi di fargli scrivere direttamente un espressione SQL.[/quote:v2o6y2zg] E speri di cavartela con questa roba???? Le query che vengono eseguite saranno probabilmente un numero limitato, non tendente all'infinito... Quindi deciderei a priori le query con il cliente. Le scrivo in un file di config. Gli dico che volendo se le possono aggiungere per i fatti loro, ma mi rendo disponibile ad assisterli per un periodo di tempo limitato ( 2 settimane, 1 mese, 6 mesi). Dopodichè si arrangiano!!! Se nn fai una roba ultrafiga,... e cmq... ti faranno impazzire!!! LabVIEW nn è lo strumento + adatto per fare queste cose... [quote="gepponline":v2o6y2zg]Seguendo il tuo consiglio ho provato a realizzare un Xcontrol che sembra poter fare al caso mio, ma sto avendo un problemino... Quando lo piazzo nel FP si inizializza ad un "NON valore"(65535) il menu ring e non capisco come mai e come risolvere. suggerimenti? Allego l'X control realizzato.[/quote:v2o6y2zg] quel 65535 nn è altro che il -1 risultato dal 1mo datachange eseguito (Facade.vi): la stringa di confronto è vuota e nn viene trovata nella lista xciò ti becchi sto -1 devi inizializzare il tuo array di stringhe ---------------------------------------- AUTORE: 43 DATA :17/02/2015 - 15:27:26 ---------------------------------------- [attachment=0:9gatzb1w]Facade.vi[/attachment:9gatzb1w]bye ---------------------------------------- AUTORE: 482 DATA :17/02/2015 - 15:29:49 ---------------------------------------- Ok quindi la prima volta che viene piazzato viene generato un evento datachange? è questo che mi mancava \";)\" grazie! Per la scelta di soluzione guarda...non è una cosa per clienti ma interna all'azienda e sto cercando di dare il maggior numero di opzioni possibili senza far addentrare troppo gli utenti ma senza limitarli troppo. Ho già usato questa soluzione in un altra applicazione ed è andata bene....è che gli utenti non sanno ancora quello che vogliono, quindi non posso facilitare e e limitare troppo ma allo stesso tempo non conoscono l'SQL quindi gli fornisco una sorta di via di mezzo che mi evita di intervenire ogni 3 per 2 sul software. Ovviamente il controllo che ho postato era solo una prova, quello definitivo è un po' piu' complesso appunto per limitare ma non troppo le possibilità dell'addetto. L'unica cosa di cui sono certo è che se parto da delle query parametrizzate prefissate, 5 minuti dopo ne avrebbero bisogno un altra \":)\" (p.s. intanto sto giochicchiando con livecode e lo trovo molto interessante) ---------------------------------------- AUTORE: 482 DATA :17/02/2015 - 15:36:09 ---------------------------------------- tral'altro avevo lasciato un diable al posto di un visible.. ---------------------------------------- ================================================================================ X control e Label ================================================================================ AUTORE: 482 DATA :19/02/2015 - 14:10:37 ---------------------------------------- ...ma ciao! ho da pochissimo "scoperto" gli xcontrol e ne sto sviluppando uno. Ora sto creando una proprietà dell'oggetto che mi restituisce una stringa SQL in base al contenuto del controllo. E' possibile fare riferimento alla Label che verrà data al controllo per poterla restituire in uscita nella mia stringa SQL ? Provo con un esempio: il mio controllo conterrà i valori 10 e 20. Tramite la proprietà GETSQL che sto creando, otterro' una stringa con scritto [code:3ixy8q0l]BETWEEN '10' AND '20'[/code:3ixy8q0l] vorrei che se il controllo nel front panel finale si chiamerà PLUTO. la scritta SQL diventi [code:3ixy8q0l]PLUTO BETWEEN '10' AND '20'[/code:3ixy8q0l] si puo' fare? ---------------------------------------- AUTORE: 482 DATA :19/02/2015 - 14:21:46 ---------------------------------------- Come non detto, HO RISOLTO! Nel vi della property e nel facade c'e' il controllo "Container State" che contiene il refnum al controllo e da li si puo' accedere alle proprietà dei controlli classici. \";)\" ---------------------------------------- AUTORE: 43 DATA :19/02/2015 - 14:40:25 ---------------------------------------- Guarda che nel Cluster "Container State", oltre allo stato booleano "Indicator?" che ti dice se l'istanza del tuo Xcontrol è indicatore o controllo, e oltre al booleano"Run Mode?" che ti dice se il VI nel quale hai inserito l'Xcontrol è running oppure no (potresti essere in edit quando lo modifichi), oltre a cio' dicevo, c'è un bellissimo Refnum che identifica l'istanza del tuo Xcontrol. Da quel refnum puoi ricavare un bel po' di info compreso il testo della label. Tra l'altro con quel refnum puoi anche modificare le proprietà che sono modificabili e probabilmente puoi chiamare anche i metodi: che sia possibile anche qui la ricorsione con tutto ciò che ne consegue? bye ---------------------------------------- ================================================================================ Generazione sinusoide e conversione A/D ================================================================================ AUTORE: 11008 DATA :21/02/2015 - 14:08:01 ---------------------------------------- Ciao a tutti, avrei bisogno del vostro aiuto per capire a fondo i due blocchi che vi sto presentando, in particolare la generazione di forme d'onda che presenta il simpling info con valori Fs ed s, che a quanto ho capito sono piu o meno come la frequenza di campionamente (Fs), e i campioni presi; generalmente imposto Fs=30 e s in base a quante semi onde voglio visualizzare facendo delle prove. [url=http://postimg.org/image/wvy0k9pcx/:27na079b][img:27na079b]http://s8.postimg.org/wvy0k9pcx/singenerator.jpg[/img:27na079b][/url:27na079b] L'altro mio dubbio è su uno spreadsheet string to array che messo dopo il recive dovrebbe effettuare una specie di conversione analogico digitale, ma perche? come? cosa succede alla matrice di array che vi entra ed esce? [url=http://postimg.org/image/lxir5yjiv/:27na079b][img:27na079b]http://s23.postimg.org/lxir5yjiv/Cattura.jpg[/img:27na079b][/url:27na079b] ---------------------------------------- ================================================================================ Stampa del front panel ================================================================================ AUTORE: 482 DATA :23/02/2015 - 14:09:35 ---------------------------------------- ...ma ciao! sto stampando il front panel del mio VI ma ho un problemino. Utilizzo l' "Easy Print Vi front panel or documentation vi" dalla palette dei report. Funziona tutto bene tranne un immagine BMP in bianco e nero (all'interno di un indicatore picture)che per non so quale motivo mi resta stampata in negativo. A v ideo la vedo correttamente. QUalcuno ha avuto esperienze simili? ---------------------------------------- ================================================================================ Pulsantiera pannello avionico ================================================================================ AUTORE: 11034 DATA :24/02/2015 - 12:41:46 ---------------------------------------- Salve, e' la mia prima volta e mi presento come un "senior engineer" .... oltre i 60 ahime'. Vorrei realizzare una pulsantiera che alla pressione di un tasto facesse risalire l'altro/i della stessa riga che eventualmente fosse premuto. Una cosa come questa [url:3kqttvi7]http://www.electronicsurplus.it/product/896/Pannello-avionico-con-pulsanti-luminosi.html[/url:3kqttvi7] A suo tempo ero esercitato ma sono almeno 5 anni che non lavoro con LV. Grazie a chi mi avra' letto fin qui. ---------------------------------------- AUTORE: 482 DATA :24/02/2015 - 15:50:27 ---------------------------------------- Cosi' a primo impatto ti direi di customizzare esteticamente un radio button. ---------------------------------------- AUTORE: 43 DATA :24/02/2015 - 16:45:20 ---------------------------------------- [quote="ramundo":8v0pbg3o]Salve, e' la mia prima volta e mi presento come un "senior engineer" .... oltre i 60 ahime'. Vorrei realizzare una pulsantiera che alla pressione di un tasto facesse risalire l'altro/i della stessa riga che eventualmente fosse premuto. Una cosa come questa [url:8v0pbg3o]http://www.electronicsurplus.it/product/896/Pannello-avionico-con-pulsanti-luminosi.html[/url:8v0pbg3o] A suo tempo ero esercitato ma sono almeno 5 anni che non lavoro con LV. Grazie a chi mi avra' letto fin qui.[/quote:8v0pbg3o] haha io sto scrivendo un simulatore per testare una tastiera avionica proprio in questo momento.... Ti propongo una soluzione diversa da quella di geppo, che ho fatto di getto!! c'ho messo 1 min. di tempo..) In soldoni metto i booleani in un cluster e nell'event case faccio uno xor con il valore precedente del cluster. gestisco anche l'eccezione nel caso di spegnimento dell'unico tasto acceso bye ---------------------------------------- AUTORE: 11034 DATA :25/02/2015 - 14:27:03 ---------------------------------------- Ingegnoso! Lo faccio mio. Grazie assaissimo ---------------------------------------- AUTORE: 482 DATA :25/02/2015 - 15:46:14 ---------------------------------------- curioso, me lo converti in 2012? ---------------------------------------- AUTORE: 11034 DATA :25/02/2015 - 15:47:37 ---------------------------------------- Si anche cosi' funziona e ci sto giocando. Purtroppo, e per fortuna, il mio e' stato ed e' un levoro che non mi ha permesso di eccellere in nulla ma essere bravino in tantissime cose. Grazie anche a te. ---------------------------------------- ================================================================================ Multicolumn listbox ordinabile ================================================================================ AUTORE: 482 DATA :25/02/2015 - 15:41:36 ---------------------------------------- ..ma ciao! sempre giocando con gli Xcontrol, mi è venuto in mente che spesso utilizzando le multicolumn listbox mi tocca poi inserire il subvi per far ordinare in base ad una certa colonna e allora sto valutando di creare un xcontrol ad hoc. La mia domanda è...che voi sappiate c'e' già in giro qualcosa di valido e quindi mi metto a fare un lavoro inutile o puo' essere una cosa interessante? ---------------------------------------- AUTORE: 4 DATA :26/02/2015 - 10:10:05 ---------------------------------------- Ciao, si esiste questa https://lavag.org/files/file/39-multi-c ... -xcontrol/ Poi io volevo fare la mia con in più la possibilità di avere un menu selection in certe righe o colonne Ciao ---------------------------------------- AUTORE: 3428 DATA :26/02/2015 - 11:25:11 ---------------------------------------- Ciao, avrei postato lo stesso esempio che avevo già trovato. Quello che invece vorrei aggiungere visto che si parla di multicolumn è se anche voi avete notato rallentamenti del pc ovvero, utilizzando l'ordinamento degli header ho notato che quando vado ad ordinare una colonna come la data (che ovviamente si porta il rimpiazzo di tutte le altre) il pc ci mette un bel pò di tempo. Per quantificare diciamo che con 1000 righe e 30 colonne per ordinare una colonna ci mette circa 3-4 secondi, senza colorare nessuna cella altrimenti passiamo in doppia cifra... Il problema secondo me è la quantità di dati visibili visto che il multicolumn ha tutto in memoria quando dovrebbe avere solamente o poco più di quello che è visibile... Consigli? ---------------------------------------- AUTORE: 482 DATA :26/02/2015 - 12:29:36 ---------------------------------------- Avevo già visto quell'esempio ma non mi convince esteticamente......non è quello che vorrei..a me basta un semplice multicolumn che visualizzi la classica freccetta fatta un po' bene e che permetta di ordinare i dati clikkando sulla colonna...oltre al fatto che seguendo poi un topic sul forum legato a quello sembra ci foss eun baco irrisolto non so con che cosa... Quindi vado avanti col mio giochino \":)\" ---------------------------------------- AUTORE: 482 DATA :26/02/2015 - 14:36:11 ---------------------------------------- Ci sono ancora un po' di cosette da sistemare, ma già cosi' mi da quella funzione in piu' che mi torna comoda. Adesso resta il problema che devo creare la proprietà peer settare gli header, speravo di risucire a far ereditare le prorietà del controllo multicolumn usando quello come DATA ma cosi' non era e quindi ho preferito usare direttamente una tabella.... Quindi dovro' implementare l'autosize delle colonne e il settaggio degli header.. ---------------------------------------- AUTORE: 3428 DATA :08/04/2016 - 09:39:17 ---------------------------------------- Faccio ritornare in auge questa discussione. Come avevo detto tempo fa il problema è ritornato. Ho un csv che importato in una multicolumns listbox ha normalmente le dimensioni di 40 colonne x 10000 righe circa. Il caricamento, lettura del file e la scrittura di "itemnames" ci mette circa 2,5 sec, ci stà è bello ciccio! il problema è che ho delle funzioni che mi permettono di ordinare la listbox in base alla colonna premuta e/o di colorare determinate celle in base alle informazioni al suo interno (fortunatamente solo 1 colonna). Il problema è che più agisco sulla lista, ordinamenti, scroll ecc più l'applicazione diventa ingestibile, bloccandosi. Pensando che il problema sia dovuto alla mole di stringhe da gestire ho pensato di passare ad itemnames solamente una 50ina di righe anzichè 10000 e modificare l'itemnames solamente in base a quello che lo scroll voglia visualizzare. Qualcuno ha già avuto problemi simili??? Se si avete mai provato quello che vorrei fare? Grazie ---------------------------------------- AUTORE: 482 DATA :08/04/2016 - 11:08:46 ---------------------------------------- questo mi fa pensare che le funzioni si ordinamento e colorazione hanno qualcosa che non va che, tipo che lasciano dati in memoria accumulandosi, no? ---------------------------------------- AUTORE: 3428 DATA :08/04/2016 - 11:57:23 ---------------------------------------- mmmmm la colorazione è il classico reference della multicolumn che ad ogni iterazione va a cambiare il BG color della cella i della colonna X. Sicuramente evitare la colorazione avrà i suoi benefici (forse è meglio colorare la scritta piuttosto che la cella). In allegato le 2 vi per l'ordinamento e formattazione celle al "giustificazione" trovate in rete non mymade \":)\" Ovviamente la formattazione la faccio solo 1 volta, al caricamento. L'ordinamento solo all'evento click su un header. Quindi la tabella è statica, non c'è nulla che loopa su di essa sempre. Secondo me è proprio l'oggetto multicolumn che "pesa". ---------------------------------------- AUTORE: 482 DATA :08/04/2016 - 12:57:07 ---------------------------------------- versione 12 please ---------------------------------------- AUTORE: 3428 DATA :08/04/2016 - 13:12:10 ---------------------------------------- ripostate in Labview 2010 ---------------------------------------- AUTORE: 482 DATA :11/04/2016 - 07:30:09 ---------------------------------------- ..mmhh..interessante, io utilizzo per fare la stessa cosa, un VI che avevo trovato in rete molto tempo fa. Che pero' è molto piu' complicato come struttura. Te lo allego. Prova con questo a vedere se hai lo stesso problema. Ho preso in considerazione solo la parte di ordinamento, e non quella della colorazione celle "multicolumn listbox sort.vi" è il main, l'altro è un subvi. Ci sono degli ingressi che ho aggiunto io nel tempo, che servono per identificare le colonne numeriche o datastring in modo da poterle ordinare correttamente e non come semplici stringhe. Fammi sapere che son curioso. ---------------------------------------- AUTORE: 3428 DATA :12/04/2016 - 16:22:43 ---------------------------------------- Idem... credo che il problema sia veramente la mole di stringhe! Molti linguaggi solitamente hanno una proprietà che fa si che la listbox come oggetto sia popolata solo degli elementi visibili o poco più... Labview no... tocca farlo popolando la listbox a runtime con sole un 100aio di righe credo e mantenendo tutto in un 2D in memoria... ma poi al sol pensiero dello scroll e tutti i property che toccherebbe utilizzare mi vien paura oltre al fatto che sicuramente non sarà veloce come se avesse tutti i dati dentro... Bo! ---------------------------------------- ================================================================================ string color ================================================================================ AUTORE: 7113 DATA :03/03/2015 - 16:45:42 ---------------------------------------- Ciao a tutti, ho del testo che viene visualizzato in una stringa e vorrei che le parole tra le parentesi venissero scritte di rosso. Nel file che ho allegato riesco a fare scrivere di rosso solo la prima parola tra le parentesi, mentre le altre rimangono nere come di default. Mi sapete dire perchè ? Grazie ---------------------------------------- AUTORE: 482 DATA :04/03/2015 - 07:09:18 ---------------------------------------- Beh perchè lo fai una volta sola. Nel tuo vi cerchi la prima parentesi aperta e la prima parentesi chiusa e poi cambi il testo all'interno e poi ti fermi. Devi dire al VI di farlo finchè non trova piu' parentesi e soprattutto ad ogni ciclo devi dargli un offset che sia successivo alla chiusura parentesi precedente. ---------------------------------------- AUTORE: 301 DATA :04/03/2015 - 07:11:05 ---------------------------------------- Perchè la funzione di ricerca carattere, trova solamente il primo carattere presente nella stringa. ---------------------------------------- AUTORE: 7113 DATA :04/03/2015 - 08:24:27 ---------------------------------------- Ok ho capito, ma ho un'altra domanda se volessi cambiare il colore in base alla stringa per esempio "ok" verde e "no" rosso sarebbe possibile ? Forse dovrei fare la ricerca della stringa? Ma come? grazie ancora. ---------------------------------------- AUTORE: 43 DATA :04/03/2015 - 10:13:28 ---------------------------------------- [quote="tibe02":2smp6ars]Ok ho capito, ma ho un'altra domanda se volessi cambiare il colore in base alla stringa per esempio "ok" verde e "no" rosso sarebbe possibile ? Forse dovrei fare la ricerca della stringa? Ma come? grazie ancora.[/quote:2smp6ars] ti conviene ricercare le stringhe "(ok)" e "(no)" per evitare ambiguità. il valore da assegnare a "EndSelection" è l'uscita di "OffsetPastMatch" decrementata di 1 (per evitare di pitturare la parentesi chiusa) mentre lo "StartSelection" è uguale all'"OffsetPastMatch" meno StringLenght di "match substring" incrementato di 1 (per evitare di pitturare la parentesi aperta). se invece vuoi optare per una ricerca + sofisticata, dovresti sfruttare il fatto che la funzione "MatchPattern" ricerca appunto un "pattern", nn una stringa... Se imposti come "regular expression" ([^)]*) otterrai che verrà cercata la prima sottostringa compresa fra parentesi tonde attenzione: quella regular expression matcha anche la sottostringa () se vuoi matchare stringhe fra parentesi tonde che siano lunghe almeno 1 char devi usare il + al posto dell' * ([^)]+) bye ---------------------------------------- AUTORE: 7113 DATA :04/03/2015 - 15:31:49 ---------------------------------------- ma come posso fare per trovare tutti i vari (ok) e (no) che ci sono all'interno della stringa? riesco a cambiare il colore solo al primo che trovo ---------------------------------------- AUTORE: 482 DATA :04/03/2015 - 15:48:21 ---------------------------------------- CICLO FINCHE' NON FINISCE LA STRINGA ---------------------------------------- AUTORE: 43 DATA :04/03/2015 - 15:49:51 ---------------------------------------- [quote="tibe02":svho4p0m]ma come posso fare per trovare tutti i vari (ok) e (no) che ci sono all'interno della stringa? riesco a cambiare il colore solo al primo che trovo[/quote:svho4p0m] devi iterare l'operazione metterla in un Loop (ha + senso un while). La funzione "Match Pattern" accetta in ingresso l'indice del carattere dal quale far partire la ricerca. Basta aggiungere allo while uno shift register che dovrai aver cura di inizializzare al valore 0. Collega lo shift register (a sx) all'ingresso "Offset (0)" della MatchPattern mentre l'uscita "offset past match" della medesima funzione collegala allo shift register (a dx) del Loop) Termina il loop quando "offset past match" è minore di 0 che equivale a nn aver trovato altri match. bye ---------------------------------------- AUTORE: 7113 DATA :04/03/2015 - 16:46:20 ---------------------------------------- ho provato cose simili ma mi colora sempre tutta la stringa mi spigate perchè. grazie ---------------------------------------- AUTORE: 301 DATA :05/03/2015 - 06:46:21 ---------------------------------------- Perchè aggiungi all'array anche il -1 di stringa non trovata, quindi all'ultima iterazione del for ti viene cambiato il colore di tutto il testo. Aris ---------------------------------------- AUTORE: 43 DATA :05/03/2015 - 08:22:32 ---------------------------------------- Sarebbe bello sapere il senso di tutto ciò... bye ---------------------------------------- AUTORE: 7113 DATA :05/03/2015 - 08:58:01 ---------------------------------------- OK ecco dove era il prolema ---------------------------------------- AUTORE: 7113 DATA :05/03/2015 - 09:22:24 ---------------------------------------- Grazie dell'esempio spiega molto più di 100 parole e mette anche in risalto la mia poca esperienza, il senso è di dare più visibilità ad alcune parole rispetto ad altre all'interno della stringa. Magari c'era anche un modo migliore di quello che ho intrapreso. \":D\" ---------------------------------------- AUTORE: 1078 DATA :11/03/2015 - 16:03:37 ---------------------------------------- [quote="tibe02":e5ke7hdg]l'esempio spiega molto più di 100 parole ... [/quote:e5ke7hdg] Sante parole!!! ---------------------------------------- ================================================================================ Problema con debugging ================================================================================ AUTORE: 11020 DATA :05/03/2015 - 10:54:44 ---------------------------------------- Un saluto a tutti. Vi chiedo un aiuto urgente. Al lavoro ho iniziato da poco ad utilizzare labview e come punto di partenza mi è toccato cercare di trovare un baco all'interno di un software scritto da un altro. Non è esattamente la cosa più facile del mondo. La cosa che non capisco è la seguente. Su di un filo ho un indicatore che come risultato mi da RMC2V Plunger, se io sullo stesso filo aggiungo un indicatore creato da me mi va a leggere RMH Plunger (che è quello che vorrei anche sull'altro indicatore). Nel software non c'è nessuno che va a sovrascrivere questa variabile. Ho girato in lungo e in largo. C'è qualcuno che può darmi qualche altro suggerimento da provare?!?!?! Non riesco a saltarci fuori. ---------------------------------------- AUTORE: 43 DATA :05/03/2015 - 13:29:38 ---------------------------------------- [quote="Gio88":hnzmzy3m]Un saluto a tutti. Vi chiedo un aiuto urgente. Al lavoro ho iniziato da poco ad utilizzare labview e come punto di partenza mi è toccato cercare di trovare un baco all'interno di un software scritto da un altro. Non è esattamente la cosa più facile del mondo. La cosa che non capisco è la seguente. Su di un filo ho un indicatore che come risultato mi da RMC2V Plunger, se io sullo stesso filo aggiungo un indicatore creato da me mi va a leggere RMH Plunger (che è quello che vorrei anche sull'altro indicatore). Nel software non c'è nessuno che va a sovrascrivere questa variabile. Ho girato in lungo e in largo. C'è qualcuno che può darmi qualche altro suggerimento da provare?!?!?! Non riesco a saltarci fuori.[/quote:hnzmzy3m] Un indicatore potrebbe essere aggiornato anche in un subVI al quale viene passato (oppure leggendo una globale) il "reference" dell' indicatore. Sai cosa sono i "reference"? cerca in tutto il codice le [proprietà "value"] in tutti i VI e subVI bye ---------------------------------------- AUTORE: 1078 DATA :06/03/2015 - 15:40:20 ---------------------------------------- Ciao @Gio88, Io direi che dovresti dirci come è fatto questo filo. Potrebbe essere cambiato il filo stesso e quello che vedi nell'indicatore RMC2V è solo una parte del filo, vedi i cluster o gli oggetti. Se ci dai qualche informazione in più saremo ben lieti di aiutarti ma, così mi sembra un pochino difficile. Potresti farci un immagine da dove si vede il filo, il suo indicatore e qualche cosa intorno tanto per cominciare! ---------------------------------------- AUTORE: 11020 DATA :10/03/2015 - 13:06:48 ---------------------------------------- Ciao... Grazie per le risposte. Sono riuscito a risolvere il baco. \"8)\" Più che soddisfatto. Prossima settimana inizierò a frequantare il core2 di national, nel frattempo il mio capo mi ha suggerito di iniziare a guardare già qualcosina. Le cose semplici semplici sono già capace di farle... Nel particolare ho visto che all'interno del sw che ho debuggato sono presenti degli strani blocchetti chiamati Reference. Cosa sono?! Ho provato a cercare in internet ma non ho trovato nulla che dia aiuto su questi blocchi. Avete della documentaazione da consigliarmi?! Qualche link?! Grazie mille per la vostra generosità. ---------------------------------------- AUTORE: 482 DATA :10/03/2015 - 14:47:03 ---------------------------------------- Semplificando, i reference sono appunto dei "RIFERIMENTI" a dei controlli/indicatori. Grazie ai reference, puoi interagire su un controllo anche se questo non fa parte del VI in cui si trova il codice. Normalmente tu hai un controllo sul tuo front panel e se vuoi modificarne una proprietà, vai sul controllo e crei il property node apposito. Se pero' ad esempio vuoi fare la stessa operazione su diversi controlli, puoi, anzichè duplicare il codice per X volte, creare un subVI con il codice e riutilizzarlo passandogli in ingresso di volta in volta il reference al controllo che ti interessa. ---------------------------------------- ================================================================================ Come chiudo un file (pdf o immagine) da LabVIEW? ================================================================================ AUTORE: 822 DATA :10/03/2015 - 17:26:30 ---------------------------------------- Ciao, io tramite il System Exec, eseguo il comando DOS "cmd /x /c start " che mi permette di aprire un documento (facciamo finta un file pdf). Come faccio, sempre da LabVIEW a chiudere (dopo un timeout) questo file? ---------------------------------------- AUTORE: 43 DATA :11/03/2015 - 08:47:33 ---------------------------------------- [quote="giuseppe.l74":2pqjmtvj]Ciao, io tramite il System Exec, eseguo il comando DOS "cmd /x /c start " che mi permette di aprire un documento (facciamo finta un file pdf). Come faccio, sempre da LabVIEW a chiudere (dopo un timeout) questo file?[/quote:2pqjmtvj] mah! nn saprei... sicuramente bisogna conoscere il nome dell'eseguibile che si è mandato in esecuzione, cercarlo fra i processi attivi e distruggerlo il tutto usando le API di Windows. Partendo dall'estensione del file che si vuole aprire, penso si possa dai registri di windows, risalire al nome dell'eseguibile che viene lanciato. Riguardo le API di windows... le funzioni sono tutte nella libreria kernel32.dll Per cercare il processo: - CreateToolhelp32Snapshot - Process32First - Process32Next - GetLastError - CloseHandle Per distruggere il processo se trovato: - OpenProcess - TerminateProcess - CloseHandle Spero qualcuno ti dia una dritta migliore di questa. NN ho intenzione di postare i VI già fatti che eseguono questa roba. bye ---------------------------------------- ================================================================================ Lanciare macro excel da labview. Possibile?! ================================================================================ AUTORE: 11020 DATA :11/03/2015 - 10:49:04 ---------------------------------------- Un saluto a tutti. Vorrei sapere se è possibile da codice labview poter lanciare una macro di excel. è fattibile come cosa?! Suggerimenti?! Un saluto e grazie Giovanni ---------------------------------------- AUTORE: 1078 DATA :11/03/2015 - 14:09:05 ---------------------------------------- Ciao @Gio88, Penso di si. Io non l'ho mai fatto perchè le macro le scrivevo e le scrivo direttamente in LV. Comunque se guardi tra le proprietà del Workbook (propery node) c'è una proprietà VBAProject che dovrebbe far riferimento proprio al progetto VBA della cartella dove sono archiviate le "Macro". Io mi sono fermato a tirarne fuori i nomi, anche perchè c'è da sbatterci un po' la testa, credo però che se cerchi un po' troverai quello che cerchi! Ti allego un VI di esempio, non chiudo tutti i riferimenti agli oggetti ActiveX per brevità; tutti sanno però che è meglio chiuderli per non incorrere in errori strani! Facci sapere! ---------------------------------------- AUTORE: 11020 DATA :11/03/2015 - 15:38:48 ---------------------------------------- Ottimo. Grazie mille. Ah... eventualmente posso anche scrivere VBA direttamente all'interno di labview??!!!?!? Ultima cosa... Per far comparire una finestra di popup contenente un messaggio sono capace. Ma se io voglio far comparire una finestra di popup contenente una semplice immagine?! è possibile?!?!?! Grazie mille per la disponibilità ---------------------------------------- AUTORE: 11020 DATA :11/03/2015 - 15:51:57 ---------------------------------------- Comunque ho trovato un VI che si chiama Word Run Macro.vi che dovrebbe eseguire macro già presenti su un file excel... ---------------------------------------- AUTORE: 1078 DATA :11/03/2015 - 15:58:25 ---------------------------------------- Per rispondere alla tua ultima domanda: risolvi tutto facendo un VI con dentro un picture e lo customizzi, VI Property, dicendo che un VI dialog-box. Per customizzare un VI: click con il tasto destro del mouse sull'icona del VI nel front pannel-->VI properties-->Widows Apparence-->Dialog (nel radio button). Attento che diventa Modale e quindi quando lo fai girare per debaggarlo se non inventi una scappatoia non si chiude! ---------------------------------------- ================================================================================ Aprire file DXF o DWG in labview ================================================================================ AUTORE: 482 DATA :12/03/2015 - 15:59:21 ---------------------------------------- ...ma ciao! sapete se c'e' in giro qualche libreria per aprire e visualizzare staticamente (tipo controllo immagine) dei file dxf o dwg? graziiie! ---------------------------------------- AUTORE: 1078 DATA :16/03/2015 - 13:01:20 ---------------------------------------- Caio @geppoonline, Che io sappia non c'è una libreria già fatta per visualizzare o stampare un DWG o un DXF. Sua hai Autodesk Autocad installato puoi comunque crearti questa libreria usando l'activex che viene installato con il CAD. Tienici aggiornati però, questa libreria potrebbe essere molto utile! Buon lavoro!! ---------------------------------------- AUTORE: 4 DATA :17/03/2015 - 14:36:52 ---------------------------------------- Ciao se puoi convertire i tuoi file in stl, vrml o ase puoi usare le funzioni del 3D picture control per visualizzare i disegni Ciao ---------------------------------------- ================================================================================ Aprire codice labview su versione piu vecchia ================================================================================ AUTORE: 11020 DATA :22/03/2015 - 12:33:43 ---------------------------------------- Un saluto a tutti. Avrei un problema. Vorrei aprire sul mio labview 2012 un software precedentemente scritto su labview 2014. Pensavo fosse banale. Invece non me lo fa aprire. Come fare?! Un saluto Giovanni ---------------------------------------- AUTORE: 11020 DATA :22/03/2015 - 12:37:35 ---------------------------------------- Il programma ovviamente l'ho ereditato da altre persone. Non sono in possesso di labview 2014 per salvare il Vi come file per labview 2012. ---------------------------------------- AUTORE: 482 DATA :23/03/2015 - 07:12:13 ---------------------------------------- purtroppo per te non c'e' alternativa se non fartelo aprire da qualcuno che ha labview 2014 e poi farlo salvare per una versione precedente. Io non ce l'ho, ma magari qui sul forum trovi qualche anima pia che ti puo' aiutare. In alternatva magari anche il supporto National Instruments credo possa farti questo servizio. ---------------------------------------- AUTORE: 11020 DATA :23/03/2015 - 15:22:42 ---------------------------------------- Ciao e grazie mille per la risposta. Ho risolto il problema alla radice... Ho scaricato labview 2014 versione per studenti e ho riadattato tutto quello che mi serviva. \":D\" ---------------------------------------- ================================================================================ importare driver Ascom ================================================================================ AUTORE: 11044 DATA :26/03/2015 - 13:56:49 ---------------------------------------- Salve a tutti, non riesco a importare in Labview 2010 dal menù principale: tools/import/ .NET/Assembly le voci Ascom; (la piattaforma http://ascom-standards.org quindi lo strumento developer http://ascom-standards.org/Developer/DriverImpl.htm). Mi permettono di creare un driver a doc nel campo dell'astronomia e applicazioni ad essa attribuita, riuscendo così a far dialogare il Client con Arduino; quest'ultimo non ho avuto problemi a importare il tolkit.   In altri software di programmazione/progettazione è possibile, come Visual Studio ad esempio e nel link ci sono anche i relativi video di Tom mentre compila il codice, ci ho provato e funzionano ma non conosco quella sintassi, ho letto in rete che a Labview manca un plug-in specifico in questo caso specifico ASCOM, potete aiutarmi a capire qualcosa in merito? Mi rimangono solo 20 giorni di prova dell'Arduino Ide, di visualmicro....mannaggia. Grazie mille ---------------------------------------- AUTORE: 11044 DATA :30/03/2015 - 12:24:16 ---------------------------------------- Nessuno puo aiutarmi a sbrogliare questa matassa? Devo abbandonare Labview? A me spiacerebbe parecchio ricominciare con Visual Studio anche perchè ho passato molto tempo a rinfrescare nozioni ed impare qualcosa con questo software. Eppure sul sito della Ascom menziona Labview come linguaggio compatibile. Non conosco nessuno che fa il programmatore o che riesca a consigliarmi sul dafarsi. ---------------------------------------- AUTORE: 482 DATA :31/03/2015 - 07:07:01 ---------------------------------------- quel tool import mi lascia perplesso...non credo serva pe rquello che vuoi fare tu. Se il software ascom è installato e ha installato i costrutti .NET, per "importarli" in labview devi semplicemente creare un blocchetto .NET e poi selezionare l'apposita classe.. ---------------------------------------- AUTORE: 11044 DATA :29/06/2015 - 23:08:01 ---------------------------------------- Ho raggiunto maggior consapevolezza rispetto a quando sono partito con il mio progetto. Ho un software che gestisce delle periferiche tramite piattaforma Ascom il quale permette di scaricare un pacchetto aggiutivo di controlli ActiveX da poter gestire con un qualsiasi linguaggio di programmazione, in questo caso, Labview appunto, quindi creandomi un driver posso gestire la piattaforma Arduino con ingressi e uscite da pilotare o trattare. Il .Net di cui parlavo in passato si riferiva ad altro linguaggio che avevo adottato da subito avendo come riferimento delle guide da cui partire. Ora mi ritrovo ad avere tutto il necessario con LV, le palette dei controlli Activex e le palette di Arduino, ma non so come muovermi tra classi, metodi invoke node etc etc.... Quindi mi occorre una guida per arrivare a studiare e conoscere la gestione di cui sopra scrivevo. In rete ho trovato molte informazioni superficiali e non sapendo dove cercare per avere esempi e spiegazioni, mi rivolgo a voi esperti. Vi ringrazio per eventuali gentili risposte, ve ne sarei grato perche il progetto in questione mi stq a cuore e se pur dovrò ricominciare dall'ABC... non importa, voglio imparare. Grazie ---------------------------------------- ================================================================================ property node ================================================================================ AUTORE: 11045 DATA :27/03/2015 - 16:20:13 ---------------------------------------- Ciao a tutti ho il seguente problema, non riesco a passare i propery node tra vi. Ho un sub vi di misura che ha un indicatore di cluster ( che contiene , tra gli altri elementi , un indicatore e un picture) quindi ho inserito un property node e un control reference. Nel main ho inserito il medesimo cluster e l'ho linkato al subvi con un reference. Quindi fuziona correttamente, ma, no riesco a passare i proberty nodes della picture dal sub vi al main. Qualcuno sa come risolvere? allego esempio ---------------------------------------- AUTORE: 43 DATA :30/03/2015 - 08:32:54 ---------------------------------------- Qua c'è la soluzione. Sarebbe meglio passare un cluster con i reference di tutti gli oggetti grafici che vuoi modificare[attachment=0:4a3k88rj]_meas1.vi[/attachment:4a3k88rj] bye ---------------------------------------- AUTORE: 11045 DATA :30/03/2015 - 09:28:26 ---------------------------------------- Grazie 1000 perfetto, un'altra domanda se avessi più istanze di picture all'interno del cluster? Grazie, Roberto ---------------------------------------- AUTORE: 43 DATA :30/03/2015 - 10:28:26 ---------------------------------------- [quote="robyf1@vodafone.it":3bw42ecw]...un'altra domanda se avessi più istanze di picture all'interno del cluster?[/quote:3bw42ecw] Puoi usare come discriminante la Label che assegni al controllo. Però, mi ripeto, invece di avere molti indicatori in un unico Cluster,e passare un unico riferimento, meglio passare un cluster contenente i riferimenti agli oggetti che possono essere sparsi x il FP. inoltre gli oggetti possono essere di vario tipo cioè possono essere controlli e indicatori insieme. bye ---------------------------------------- AUTORE: 11045 DATA :30/03/2015 - 10:52:51 ---------------------------------------- Ok scusa se ti tedio ancora... ma, come si fa a passare un cluster con i reference di tutti gli oggetti? Avresti, per favore, qualche link o qualche esempio? ---------------------------------------- AUTORE: 11045 DATA :30/03/2015 - 10:54:29 ---------------------------------------- [quote="robyf1@vodafone.it":l2zx6mcr]Ok scusa se ti tedio ancora... ma, come si fa a passare un cluster con i reference di tutti gli oggetti? Avresti, per favore, qualche link o qualche esempio?[/quote:l2zx6mcr] nel mio caso reale ho un cluster con 4 pictures ---------------------------------------- AUTORE: 43 DATA :30/03/2015 - 12:38:36 ---------------------------------------- [quote="robyf1@vodafone.it":3b8te2hx][quote="robyf1@vodafone.it":3b8te2hx]Ok scusa se ti tedio ancora... ma, come si fa a passare un cluster con i reference di tutti gli oggetti? Avresti, per favore, qualche link o qualche esempio?[/quote:3b8te2hx] nel mio caso reale ho un cluster con 4 pictures[/quote:3b8te2hx] Nel modo + banale possibile... Vai su ognuna delle picture (siano esse dentro un cluster o meno...) tasto dx del mouse -->create reference Poi fai un bundle con tutti i tuoi reference e in uscita dal bundle tasto dx del mouse e -->create indicator. Prendi l'indicatore lo sposti nel subVI e lo fai diventare un parametro convertendolo prima in controllo (altrimenti sarebbe un indicatore-output) se vuoi cambia i nomi ai controlli-reference dentro al cluster in modo che abbiano un significato mnemonico... bye ---------------------------------------- ================================================================================ file VI eseguibile e esportabile ================================================================================ AUTORE: 11046 DATA :29/03/2015 - 21:31:50 ---------------------------------------- Salve sono nuovo in labview e sto utilizzando la versione student. mi chiedo come fAccio a creare un eseguibile trasportabile su un altro supporto (magari che non abbia installato LV) da un VI precedentemente compilato e funzionante....!!!! grazie \":!:\" \":!:\" ---------------------------------------- AUTORE: 1078 DATA :02/04/2015 - 11:25:47 ---------------------------------------- Ciao @cencia, Intanto devi avere il Run-Time Engine sul supporto di destinazione. Poi devi creare il tuo exe dall'application builder e quindi portrla dove vuoi. Il VI girerà dove è presente il runtime altrimenti darà un errore! ---------------------------------------- AUTORE: 11046 DATA :02/04/2015 - 23:42:33 ---------------------------------------- Grazie ---------------------------------------- ================================================================================ Importare una dll in labview ================================================================================ AUTORE: 822 DATA :30/03/2015 - 13:57:59 ---------------------------------------- Ciao, mi hanno dato una dll da importare in labview per mezzo del "Call library function node", ma quando provo ad importarla ho questa finestra di errore: "file selected is not a valid library". Utilizzo labview 2012 32 bit. La dll deve avere delle caratteristiche particolari per essere importata? Grazie fin da ora a chiunque vorrà aiutarmi ---------------------------------------- AUTORE: 822 DATA :30/03/2015 - 16:49:05 ---------------------------------------- Do qualche informazione in più. La dll è stata fatta in ambiente .net, e quindi credo che il "call library function" in questo caso non vada bene. Consigli? ---------------------------------------- AUTORE: 482 DATA :31/03/2015 - 07:08:12 ---------------------------------------- Se è una dll non ci sono problemi, puo' essere che sia stata creata per sistemi a 64bit pero', ein quel caso non è compatibile... ---------------------------------------- AUTORE: 822 DATA :31/03/2015 - 07:43:35 ---------------------------------------- Grazie gepponline, dal help di ni leggo questo: "If the DLL is a .NET assembly: In order to use a .NET assembly in LabVIEW, simply use the .NET palette (Connectivity».NET) to find all of the functions available. First use a constructor node in order to instantiate a class within the .NET assembly. Use property nodes and invoke nodes to access properties and methods of the class by simply wiring in the class reference from the constructor node to the property or invoke node." Quindi non devo utilizzare il "call library function" ma il tool connectivity. La dll è stata compilata per il .NET Framework 2.0 con VS 2010 Platform = “Any CPU” per cui non esplicitamente a 32 bit. Quando provo a fare la connessione alla dll, ottengo il popup di errore che allego "tentativo di caricare un programma con un formato non corretto" Non so come procedere, provo a caricarla su un pc con SO a 32 bit (per ora ho solo provato col mio che è a 64 bit).. ---------------------------------------- AUTORE: 11020 DATA :31/03/2015 - 08:00:49 ---------------------------------------- Anche io sto cercando di utilizzare funzioni contenute all'interno di una libreria. Però utilizzando il constructor node e gli invoke node mi saltano fuori nomi di funzioni che non ho mai visto nella documentazione della mia libreria. ---------------------------------------- AUTORE: 822 DATA :31/03/2015 - 08:11:23 ---------------------------------------- @Gio88 Ma riesci a caricare una libreria fatta in .net? ---------------------------------------- AUTORE: 11020 DATA :31/03/2015 - 08:16:06 ---------------------------------------- Se utilizzo la funzione function call node me la carica. Ma poi non so come usarla... Cmq per utilizzare una libreria che al suo interno possiede varie funzioni credo ci siano da utilizzare i constructor e gli invoke node. Ma sono totalmente inesperto. Sto cercando di imparare anche io come si utilizzano le funzioni contenute in una libreria. ---------------------------------------- AUTORE: 822 DATA :31/03/2015 - 08:38:10 ---------------------------------------- Beh, se riesci a caricarla il gioco è fatto.. nella configurazione della function call node selezioni la funzione che ti interessa e in labview vedrai che l'icona della function metterà il numero di input e output richiamati dalla funzione.. Io comunque la mia non riesco a caricarla neanche con un sistema a 32 bit.. ---------------------------------------- AUTORE: 11020 DATA :31/03/2015 - 08:42:44 ---------------------------------------- Beh la mia libreria al suo interno contiene varie funzioni. Ci sono varie funzioni al suo interno. Quindi anche definendo input e output non riesco a capire come dirgli quale funzione utilizzare. Tieni conto che sono un novellino e tieni anche conto che sto guardando il codice scritto da altri dove la funzione function call node non viene utilizzata ma vengono utilizzati, in serie, constructor node ed invoke node. Utilizzando funzioni che non compaiono nella documentazione della libreria... \":o\" ---------------------------------------- AUTORE: 822 DATA :31/03/2015 - 08:51:56 ---------------------------------------- Scusa ma allora sono io che non capisco.. quando carichi la libreria con il "call library function node" hai una finestra che si chiama "Function name" nella quale devi selezionare la funzione della libreria che ti interessa, però se mi dici che altri hanno utilizzato i constructor node ed invoke node forse è quella la strada giusta. Con cosa è stata creata la libreria? Dai un'occhiata qui: http://digital.ni.com/public.nsf/allkb/ ... 1E00797C33 ---------------------------------------- AUTORE: 11020 DATA :31/03/2015 - 08:56:44 ---------------------------------------- Si avevo letto anche io... Appunto!! Quello che hai detto tu è esattamente quello che penso io. Che differenza c'è tra usare la funzione function call node e usare i constructor?!?!?! Dato che il programma usando i constructor funziona, la cosa che mi fa pensare è che probabilmente ci siano da usare quelli anzichè la funzione function call node... Oppure sono entrambe strade corrette ma diverse. ---------------------------------------- AUTORE: 11020 DATA :31/03/2015 - 09:01:15 ---------------------------------------- Il problema è che se si usano i construcotr node, compaiono delle funzioni che non ci incastrano nulla con la libreria che si sta utilizzando. Questo è il link del post che ho fatto poco fa dove spiego quello che ho fatto. viewtopic.php?f=1&t=6084 ---------------------------------------- AUTORE: 822 DATA :31/03/2015 - 09:09:43 ---------------------------------------- Qui ti spiega bene l'utilizzo del call function library node: https://decibel.ni.com/content/docs/DOC-9069 Ma non è la strada giusta, perchè per librerie create in ambiente .net non puoi utilizzare il "call function library node" perchè sono generate in Activex dll. Il metodo giusto è quello di usare construsctor node, ecc.. come hanno fatto gli altri. Leggi questa discussione: http://forums.ni.com/t5/Forum-Italiano- ... true#M3882 Ora cerco di capire perchè a me non va.. Qualcuno ha dei consigli? ---------------------------------------- AUTORE: 822 DATA :31/03/2015 - 09:11:55 ---------------------------------------- Ho letto solo ora il tuo ultimo post, mi sembra che tu stia utilizzando la strada giusta, quindi niente "call function library node".. ---------------------------------------- AUTORE: 822 DATA :23/04/2015 - 15:09:57 ---------------------------------------- Ciao a tutti, purtroppo non ho risolto il mio problema. Vi riassumo tutti i passaggi fatti. - Labview 2012 - Windows 7 Professional 64 bit - Framework installati su PC 1.1, 2.0, 3.5, 4.5.2 - dll sviluppata con VS 2010, Platform = "Any CPU", per il .NET Framework 2.0 Per importarla vado su: "Tools" - "Import" - ".NET Controls to Palette" Col tasto "Browse" seleziono la dll in oggetto che ho preventivamente copiato in System32 (o in SysWOW64, stesso comportamento), appare la finestra di errore (errore1.jpg): "System.BadImageFormatException: Impossibile caricare il file o l'assembly 'C:\Windows\System32\RADProcessResults.dll' o una delle relative dipendenze. Il modulo doveva contenere un manifesto di assembly <append><b>System.BadImageFormatException</b>" Ho allora, seguendo un consiglio trovato sul forum, copiato nella directory di Labview.exe un file di nome "LabVIEW.exe.config" con contenuto: "<?xml version ="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0.30319"/> </startup> </configuration>" Rifatto la procedura descritta sopra e ora l'errore è il seguente (errore2.jpg): "System.BadImageFormatException: Impossibile caricare il file o l'assembly 'RADProcessResults.dll' o una delle relative dipendenze. Tentativo di caricare un programma con un formato non corretto. InnerException: System.BadImageFormatException: Impossibile caricare il file o l'assembly 'RADProcessResults.dll' o una delle relative dipendenze. Tentativo di caricare un programma con un formato non corretto. <append><b>System.BadImageFormatException</b>". Perchè non riesco ad importarla? Qual è il problema? ---------------------------------------- AUTORE: 1078 DATA :27/04/2015 - 16:03:07 ---------------------------------------- Ciao @giuseppe.l74, Dal messaggio di errore che ti si presenta (vedi img_1 e img_2) sembra che la DLL sia una DLL .NET e che ti manca un'altra DLL a cui la prima fa riferimento. Sicuro di avere tutto il necessario? ---------------------------------------- AUTORE: 822 DATA :28/04/2015 - 09:04:49 ---------------------------------------- Ciao Ricky, grazie per la risposta. La dll come già scritto è una .NET per framework 2.0, tutto quello che mi è stato dato è la dll e un file xml per le connessioni ad un database su server. Mi è stato detto che questa dll viene già importata su altri sistemi (non Labview) senza problemi. A questo punto mi chiedo se non debba essere compilata in modo particolare per essere importata su labview. Che caratteristiche deve avere una dll .NET per essere importata? Devo chiedere al mio cliente di ricompilarla in modo particolare? Per il momento gli ho chiesto di farmela avere per sistemi x86 e non AnyCPU ---------------------------------------- AUTORE: 822 DATA :19/05/2015 - 13:32:08 ---------------------------------------- Solo per completezza e nella speranza che possa essere utile in futuro, la dll ricompilata sempre in ambiente .NET ma esplicitamente per sistemi a 32 bit, riesco ad importarla in Labview. ---------------------------------------- ================================================================================ Utilizzare funzioni di una libreria ================================================================================ AUTORE: 11020 DATA :31/03/2015 - 07:28:11 ---------------------------------------- Un saluto a tutti. Ho una libreria .dll... Vorrei utilizzare le funzioni che questa libreria contiene. Utilizzando il constructor node carico la mia libreria. Ma quando vado a collergare il reference del constructor node all'invoke node mi aspetterei di poter scegliere tra le possibilità degli invoke node le funzioni della mia libreria. Invece ci sono funzioni strane che non ho mai visto. Sicuramente sto sbagliando qualcosa di banalissimo. Mi potete spiegare come faccio ad accedere alle funzioni della libreria?! Oppure, è presente in rete una documentazione?! Ve ne sarei grato se qualcuno potesse spiegarmi dove sbaglio. Ho fatto qualche screenshot che vi posto qua. RIchiamo il constructor node e dal tasto browse vado a caricare la mia libreria .dll [img:mgmz8alg]http://i57.tinypic.com/25u6rrd.png[/img:mgmz8alg] Negli oggetti della libreria compaiono funzioni che non ho mai visto nella documentazione della libreria [img:mgmz8alg]http://i58.tinypic.com/1olr21.png[/img:mgmz8alg] Quando connetto il reference del constructor node all'invoke node, anzichè saltarmi fuori delle funzioni a me note, mi saltano fuori funzioni che non ho mai visto [img:mgmz8alg]http://i57.tinypic.com/zvr78g.png[/img:mgmz8alg] Dove sbaglio?! Credo sia una cosa facile da spiegarmi... Grazie mille per un eventuale aiuto Giovanni ---------------------------------------- AUTORE: 482 DATA :01/04/2015 - 07:13:12 ---------------------------------------- sei sicuro di dover usare l'invoke node enon il property node? ---------------------------------------- AUTORE: 11020 DATA :01/04/2015 - 15:48:28 ---------------------------------------- Beh.. diciamo la verità... Il fatto è che per quanto riguarda questa libreria .net non ho la documentazione. La documentazione che stavo guardando era relativa ad una libreria scritta in C che invece, usando la function call node, presente le funzioni corrette. Non è una questione di invoke node o property node... Per quanto riguarda la libreria .net che sto caricando, chiederò a quelli della B&R che lavorano nella mia azienda per avere maggiori info. ---------------------------------------- AUTORE: 1078 DATA :02/04/2015 - 10:47:20 ---------------------------------------- Ciao @Gio88, La prima cosa è che secondo me, se effettivamente è una libreria .NET, non la stai riferenziando nel modo corretto. Se la stai referenziando nel modo corretto potrebbe essere un problema di libreria, non sta esponendo correttamente i suoi metodi e le sue proprietà. Prova quindi a guardare le proprietà e i metodi public prima di tutto. Maggiori dettagli li trovi qui: [url:ut1dsuez]https://msdn.microsoft.com/en-us/library/ms973807.aspx[/url:ut1dsuez] [url:ut1dsuez]http://support.microsoft.com/it-it/kb/828736[/url:ut1dsuez] ---------------------------------------- ================================================================================ Integrazione MySQL 5.6.21 64 Bit e Labview 2014 64B ================================================================================ AUTORE: 11047 DATA :31/03/2015 - 13:58:40 ---------------------------------------- Buongiono, Sto lavorando su un upgrade da Labview 8.6.1 a Labview 2014 64bit e ho un problema di comunicazione con il DB MySQL 5.6.21 (64b)(anche lui appena upgradato dalla versione 5.0.6(32b)). Il problema di fondo è che non mi è più possibile utilizzare la DLL a 32 bit che mi permettava la comunicazione tra questi due sistemi e, che io sappia, non ve ne è una esistente/funzionante a 64b. Anche il DB Connectivity Toolkit non è supportato a 64 Bit.. qualcuno ha qualche idea o ha già effettuato una procedura di questo genere?, ogni suggerimento e consiglio è ben accetto, (Al momento ho ripiegato su Labview 2014 (32b) che mi permette ancora l'uso della DLL, ma può essere solo una misura temporanae) Grazie. ---------------------------------------- ================================================================================ ModBus SBRIO-9636 ================================================================================ AUTORE: 10943 DATA :31/03/2015 - 17:28:59 ---------------------------------------- Ciao a tutti... stiamo cecando di collegare un multimetro ABB M2M MODBUS alla porta COM3 della scheda SBRIO-9636. Il nostro ambiente di lavoro è LabView 2013; abbiamo creato l'I/O Server (Modbus), impostato la porta correttamente, ma al momento del RUN si è verificato il seguente errore: Deploying Untitled Library 2.lvlib:Modbus1\\10.0.1.65\Untitled Library 2\Modbus1 deployment failed (error: -1967357950,OS and Network Services: (Hex 0x8ABC8002) The I\O Server is not setup in MXS. The first time the "Network Variable Engine" service launches it will do so. Please verify that the "Network Variable Engine" service is running.). Grazie fin da ora per qualsiasi aiuto.... ---------------------------------------- AUTORE: 1078 DATA :02/04/2015 - 11:15:16 ---------------------------------------- La rpima cosa che mi viene da chiedervi è: ma avete installato sul RIO il servizio delle variabili globlali "shared library"? Avete verificato che avete spazio sufficiente sul RIO? Avete verificando che sta girando correttamente? ---------------------------------------- AUTORE: 645 DATA :08/04/2015 - 11:32:53 ---------------------------------------- Guarda http://www.ni.com/white-paper/13865/en/ ---------------------------------------- ================================================================================ Comunicazione in ModBus TCP/IP tra PC e CRIO ================================================================================ AUTORE: 11049 DATA :02/04/2015 - 15:55:57 ---------------------------------------- Salve, sono nuovo del forum e vorrei chiedere se qualcuno gentilmente sa come far comunicare in modbus, su TCP/IP, un PC con un CRIO della national instruments tramite Labview. In caso affermativo sarei grato se mi postasse un link con un esempio già fatto magari \"8)\" . PS. il CRIO non è programmato quindi andrebbe fatto sia il master (PC) che lo slave (CRIO) ringrazio chiunque possa darmi un aiuto in anticipo \":D\" ---------------------------------------- AUTORE: 1078 DATA :03/04/2015 - 08:42:56 ---------------------------------------- Ciao @electros, Visto che usi il TCP/IP devi per forza implementare il protocollo MODBUS? Hai altri strumenti che te lo impongono? Se vuoi usare il TCP/IP con il MODBUS devi implementare il rpotocco di invio e ricezione su entrambi, PC e CRIO. Lo standard MODBUS lo trovi qui [url:1yqrm7f5]http://www.modbus.org/specs.php[/url:1yqrm7f5], forse trovi anche qualcosa di già pronto. Se invece vuoi usare solo il MODBUS puoi scaricare la libreria MODBUS dal sito della NI. Parla però in seriale! Se fai una libreria ben fatta se vuoi puoi condividerla con noi... penso che sarebbe utile a molti. Buon lavoro e buona Pasqua! ---------------------------------------- AUTORE: 482 DATA :03/04/2015 - 12:16:00 ---------------------------------------- Guarda qui: http://www.ni.com/example/29756/en/ ---------------------------------------- ================================================================================ Passare variabile void ad una funzione. ================================================================================ AUTORE: 11020 DATA :04/04/2015 - 06:20:45 ---------------------------------------- Un saluto a tutti. Dovrei passare una variabile void ad una funzione però non ci riesco. Nella voce parameters della function call node l'ho deifnita come void, ma poi al suo ingresso ho provato a metterci una stringa di tipo NULL... ma non va. Mi da errore 1517. Ecco come ho settato la mia funzione [img:2kz3giku]http://i62.tinypic.com/o0xa2o.png[/img:2kz3giku] Però poi non so come collegarla. Se faccio così mi da errore. [img:2kz3giku]http://i62.tinypic.com/2mobbxh.png[/img:2kz3giku] ---------------------------------------- AUTORE: 1078 DATA :07/04/2015 - 10:50:13 ---------------------------------------- Hai provato a passarle una stringa avuota?? O una array di U8 vuoto? Verifica bene, la stringa che stai passando è un puntatore ma la gestisci per valore, "handle by value", non è che devi gestirla per riferimento? ---------------------------------------- AUTORE: 43 DATA :07/04/2015 - 11:07:51 ---------------------------------------- [quote="Gio88":2jyodutw]Un saluto a tutti. Dovrei passare una variabile void ad una funzione però non ci riesco.[/quote:2jyodutw] Ciao Gio. Scusa se faccio il precisino, ma il tipo di dato "void" per il linguaggio C, è un tipo di dato fittizio, nn esiste nella realtà. Di solito si dichiara una funzione "Void" quando nn restituisce valori (tramite return() ), e spesso come immagino nel tuo caso, viene usato in corrispondenza di un puntatore di cui nn si vuole indicare il tipo (puntatore a.. qualsiasi cosa). [quote="Gio88":2jyodutw]Nella voce parameters della function call node l'ho deifnita come void, ma poi al suo ingresso ho provato a metterci una stringa di tipo NULL...[/quote:2jyodutw] SCUSAAAA!!??!?!??! ma secondo te una "NULL String" è una stringa che contiene i caratteri N-U-L-L????? Molto male!!!!!!! NULL = costante (define) C standard che definisce il valore nullo cioè 0. Dipende dal compilatore ma di solito è un valore intero a 32bit uguale a 0 null string pointer = puntatore che nn punta ad alcuna variabile in memoria vale NULL cioè 0 null string = stringa NULL terminata vuota. Cioè la stringa è allocata in memoria è un array di bytes (char) di lunghezza >= 1. Il primo byte della stringa contiene il valore 0 cioè NULL. posta la dichiarazione della funzione fatta in C e vediamo come fare... Se è contenuta in un file .h allega tutto il file per favore... bye ---------------------------------------- AUTORE: 43 DATA :07/04/2015 - 13:31:32 ---------------------------------------- Sembra che qual parametro sia un puntatore a Void. Prova a passargli un puntatore nullo, dichiarando il parametro come intero a 32bit e mettendogli una costante di valore 0 come ingresso bye ---------------------------------------- AUTORE: 11020 DATA :07/04/2015 - 13:41:34 ---------------------------------------- Grazie a tutti per la risposta. SI paracarro (scusami ma non conosco il tuo nome), tu hai perfettamente ragione... Diciamo che dopo un pò ho iniziato a passare cose a caso alla funzione. Ecco perchè gli ho passato una string con scritto dentro NULL. Questa è la dichiarazione della funzione scritta in C. [img:2u5w90a9]http://i60.tinypic.com/2ut6l9d.jpg[/img:2u5w90a9] ---------------------------------------- AUTORE: 43 DATA :07/04/2015 - 14:10:51 ---------------------------------------- [quote="Gio88":1uyn1dks]Grazie a tutti per la risposta. SI paracarro (scusami ma non conosco il tuo nome), tu hai perfettamente ragione... Diciamo che dopo un pò ho iniziato a passare cose a caso alla funzione. Ecco perchè gli ho passato una string con scritto dentro NULL. Questa è la dichiarazione della funzione scritta in C. [img:1uyn1dks]http://i60.tinypic.com/2ut6l9d.jpg[/img:1uyn1dks][/quote:1uyn1dks] LPVOID = Long Pointer Void Cioè un puntatore 32 bit I suppose... Quindi come ho scritto sopra, vai sul parametro Pres Type ---> Numeric Data type ---> Signed 32-bit Integer Pass --> Value E poi nel codice gli passi un bello "0" Vediamo se ti restituisce errore oppure no Oltre al prototype della funzione, sarebbe bello avere il significato del parametyro pRes. Non sarà per caso un puntatore alla risposta? pRes = p Response??? ---------------------------------------- AUTORE: 11020 DATA :07/04/2015 - 14:21:32 ---------------------------------------- pRes dice che è legato alle espansioni. E dice che dovrebbe essere sembre dichiarato come NULL. Non dice altro. La prova che mi avevi suggerito l'avevo già fatta. La funzione mi restituisce un errore dovuto al suo funzionamento... Ma quello so a cosa è dovuto. Il fatto è che labview continua a darmi l'errore 1517 che è associato al fatto che ci sia un mismatch tra i parametri che gli passo io e quelli che lui vuole... Non capisco come mai... ---------------------------------------- AUTORE: 43 DATA :07/04/2015 - 14:52:32 ---------------------------------------- [quote="Gio88":1ywi4a60]pRes dice che è legato alle espansioni. E dice che dovrebbe essere sembre dichiarato come NULL. Non dice altro. La prova che mi avevi suggerito l'avevo già fatta. La funzione mi restituisce un errore dovuto al suo funzionamento... Ma quello so a cosa è dovuto. Il fatto è che labview continua a darmi l'errore 1517 che è associato al fatto che ci sia un mismatch tra i parametri che gli passo io e quelli che lui vuole... Non capisco come mai...[/quote:1ywi4a60] una cosa ppossibile è che gli int siano a 16 bit prova a mettere i 2 numeri di tipo int-16bit e anche il valore di ritorno della funzione bye ---------------------------------------- AUTORE: 11020 DATA :07/04/2015 - 15:43:39 ---------------------------------------- No... purtroppo non va lo stesso... Gestire questa funzione mi sembrava una cosa abbastanza facile... Invece non è cosi scontato... ---------------------------------------- AUTORE: 43 DATA :07/04/2015 - 15:54:31 ---------------------------------------- [quote="Gio88":2s1xawne]No... purtroppo non va lo stesso... Gestire questa funzione mi sembrava una cosa abbastanza facile... Invece non è cosi scontato...[/quote:2s1xawne] OK allora prova a "NULL terminare" la stringa parametrica che passi alla funzione. Vai sulla costante stringa e tasto dx del mouse seleziona "'\' Codes Display". Clicka dentro la stringa, vaqi in fondo con il cursore testo ed aggiungi i caratteri "\00" in questo modo hai aggiungo un null in fondo alla stringa rimetti gli INT a 32bit bye ---------------------------------------- AUTORE: 11020 DATA :08/04/2015 - 07:21:44 ---------------------------------------- Ho fatto come mi è stato suggerito. [img:n2i55t4k]http://i62.tinypic.com/28nq07.png[/img:n2i55t4k] [img:n2i55t4k]http://i58.tinypic.com/2qxotu1.png[/img:n2i55t4k] Inoltre in questo caso la funzione mi restituisce anche un errore in cui mi dice che il paramtero pRes non è uno zero. \":cry:\" ---------------------------------------- AUTORE: 482 DATA :08/04/2015 - 07:37:24 ---------------------------------------- non ho seguito tutto il discorso ma credoc he nell'ultimo passaggio tu abbia fatto un pastrocchio. Paracarrao ti ha detto di aggiungere il carattere terminatore alla stringa dei parametri, non di trasformare pRes in una stringa con carattere terminatore. ---------------------------------------- AUTORE: 43 DATA :08/04/2015 - 08:27:27 ---------------------------------------- [quote="Gio88":2cdn3oy8]Ho fatto come mi è stato suggerito. ... Inoltre in questo caso la funzione mi restituisce anche un errore in cui mi dice che il paramtero pRes non è uno zero. \":cry:\"[/quote:2cdn3oy8] NN hai capito quello che ti ho scritto. Ecco come devi fare [attachment=0:2cdn3oy8]dllCall.png[/attachment:2cdn3oy8] NON AZZARDARTI AD AGGIUNGERE I CARATTERI \ 0 0 PRIMA DI AVER CAMBIATO GLI ATTRIBUTI DELLA STRINGA ripeto: tasto destro del mouse sulla costante stringa indicata e ti appare quel menu che vedi. Dovresti avere la spunta sulla visualizzazione di tipo "Normal Display" Clicka/seleziona " '\' Codes Display" la prima cosa che vedi è che tutti gli spazi vengono visualizzati come '\s'. Solo a questo punto aggiungi \00 in fondo alla stringa. bye P.S.: NON TI AZZARDARE A CONFIGURARE L'ULTIMO PARAMETRO pres COME STRINGA!!!!! LASCIA CHE SIA UN INTERO A 32BIT DI VALORE 0 ---------------------------------------- AUTORE: 11020 DATA :08/04/2015 - 10:51:12 ---------------------------------------- Scusatemi ma sono nuovissimo in labview e non è cosi semplice... Sicuramente piu leggibile del C ma bisogna farci della pratica... Anche in questo caso non va.. La funzione l'avevo configurata cosi, purtroppo salta sempre fuori il solito errore. [img:1z96r8c2]http://i59.tinypic.com/cot29.png[/img:1z96r8c2] ---------------------------------------- AUTORE: 43 DATA :08/04/2015 - 11:06:18 ---------------------------------------- [quote="Gio88":12kdi351]Scusatemi ma sono nuovissimo in labview e non è cosi semplice... Sicuramente piu leggibile del C ma bisogna farci della pratica... Anche in questo caso non va.. La funzione l'avevo configurata cosi, purtroppo salta sempre fuori il solito errore...[/quote:12kdi351] Avrei preferito vedere anche la prova che "\code display" risulti abilitato, ma pazienza! io mi arrendo. Ti consiglio, se vuoi fare ulteriori tentativi, di passare sempre da quest'ultimo Setup di parametri. Penso che i parametri siano passati correttamente e l'unico problema può risiedere nel Valore che viene passato alla funzione pviInitialize. bye ---------------------------------------- AUTORE: 11020 DATA :08/04/2015 - 11:19:41 ---------------------------------------- Si... '\' Codes Display era attivato. Provo a chiedere qua in azienda se qualcuno sa qualcosa. Su 1000 dipendente spero che qualcuno lo sappia. Grazie mille comunque ---------------------------------------- AUTORE: 43 DATA :08/04/2015 - 12:55:45 ---------------------------------------- ultima cosa: Ho scaricato il file TM711TRE.00-ENG.pdf da internet dentro c'è un esempio in VB 6 dove la stringa di configurazione è "LM=0" senza nessun indirizzo di server IP. infatti poi c'è scritto[quote="TM711TRE.00-ENG.pdf":121b4quo]This example shows local communication between the PVI application and the PVI Manager. A remote connection is transferred using the parameters PNand IPwith the argument "InitParameter". InitParameter = "LM=0 PT=0 PN=20000 IP=HostName"[/quote:121b4quo] Quindi sembra che l'inidrizzo IP si specifica solo quando la connessione è effettivamente remota e nn locale. con PVI Manager running, io proverei a lanciare pviInitialize con il solo parametro "LM=0\00" (con il null in fondo x sicurezza). Chiaramente gli altri 3 parametri I32 devono valere 0. ricordati poi di lanciare anche pviDeinitialize... bye ---------------------------------------- AUTORE: 11020 DATA :08/04/2015 - 13:06:00 ---------------------------------------- RISOLTO!! Il problema era che usavo una dichiarazione di tipo C. Invece usa la stdcall... ---------------------------------------- AUTORE: 43 DATA :08/04/2015 - 13:41:42 ---------------------------------------- [quote="Gio88":1skg83id]RISOLTO!! Il problema era che usavo una dichiarazione di tipo C. Invece usa la stdcall...[/quote:1skg83id] oooohhh! Ottimo!!! In effetti era già successo in passato. Stupido io che nn ci avevo pensato!!!! bye ---------------------------------------- ================================================================================ Esercizio per scuola labview Opzioni ================================================================================ AUTORE: 11054 DATA :16/04/2015 - 21:30:37 ---------------------------------------- Salve devo creare un programma che serve per creare una macchina di caramelle che crea caramelle di 10g +/- 2g e dopo ci sia una bilancia che le pesa e quelle comprese tra 9 e 11 le conserva mentre le altre le scarta, quelle prese devono essere conservate in un sacchetto da 1kg e appena arrivati a riempire il sacchetto su un display bisogna indicare le caramelle nel sacchetto e quelle scartate. i comandi da usare sono molto semplici ad esemio per creare l'incertezza metto il nodo numero random e sottraggo 0,5 e moltiplico per un numero che dia l'incertezza, a quel punto lo sommo a 10 e ottengo il valore con incertezza. Oppure uso il nodo dove entra una variabile buleana e se è true prenderà il valore di sopra mentre se è false quello di sotto. Grazie ---------------------------------------- AUTORE: 482 DATA :17/04/2015 - 07:09:38 ---------------------------------------- ...cioè non ho capito....nessuna domanda nel post, solo una traccia di esame. Quindi? Vuoi che te lo risolviamo noi? ---------------------------------------- AUTORE: 645 DATA :18/04/2015 - 21:45:23 ---------------------------------------- La risposta che posso darti è che sì, si può fare! ---------------------------------------- ================================================================================ Serial Communication ================================================================================ AUTORE: 11007 DATA :17/04/2015 - 10:17:14 ---------------------------------------- Ciao a tutti, sto cercando di realizzare un programma che si interfaccia con un PIC utilizzando la seriale. La lettura dei dati dal PIC a labview funziona correttamente, quello che non riesco a realizzare è la scrittura di dati da Labview al PIC. Il codice del PIC funziona in modo semplice. Per esempio se voglio cambiare il BAUDRATE del canbus ( perchè il PIC si interfaccia anche su can) devo scrivere cBAUDRATE:1$. c per indicare che parte di codice sto modificando ( c=can logicamente ), poi in maiuscolo accetta il parametro e dopo i due punti il valore che voglio settare. Infine $ per indicare che la trasmissione del parametro è finita. Su Labview vorrei avere un loop che mi continua a leggere e ricevere i parametri dal PIC e poi quando premo un bottone mi inizia a scrivere in sequenza i parametri.Purtroppo non riesco a capire come fare fare quest'ultima parte. Vi allego il mio .vi nella prima versione, dove funziona la già funziona la lettura da pic a labview. Grazie ---------------------------------------- ================================================================================ Sostituire in massa variabili globali ================================================================================ AUTORE: 482 DATA :17/04/2015 - 12:53:42 ---------------------------------------- ...ma ciao! ho un vecchio software che usa delle variabili globali per identificare il numero di canale su alcune schede. Ora ho un problemino. Dovrei sostituire una globale con un altra, sono tutte e due nello stesso vi globale. Ad occhio e croce non c'e' un modo per farlo in un unico passaggio. Spero di sbagliarmi. Sapete s ec'e' un modo per farlo? Mi spiego meglio, se devo sostituire tutte le occorrenze di un subVI con un altro, basta che faccio un TROVA su quel vi e poi SOSTITUISCI TUTTI con un altro. Se pero' faccio il trova su una globale, quella mi trova il vi globale, non la variabile selezionata in esso, quindi non posso farlo. Devo per forza sostituirle una ad una? grazie! Geppo! ---------------------------------------- AUTORE: 724 DATA :17/04/2015 - 15:34:41 ---------------------------------------- Clicchi destro su una delle chiamate della globale che vuoi sostituire e selezioni Find>Global References. ---------------------------------------- AUTORE: 482 DATA :20/04/2015 - 07:14:18 ---------------------------------------- Il mio problema non è trovarle ma sostituirle. Col find global reference ti trova si tutti i riferimenti a quella globale, pero' poi non puoi sostituirla con un altra ma solo con il generico VI delle globali... ---------------------------------------- AUTORE: 1078 DATA :18/05/2015 - 15:48:15 ---------------------------------------- Ciao Geppo, Penso che l'unico modo di sostiure tutte i riferimenti alle variabili globali chiamate dal tuo SW sia usare lo scipting facendoti un software ad-hoc. Valuta bene però se il gioco vale la candela; intendo dire se il "costo" del tempo da te impiegato nello sviluppare lo script ti consenta effettivamente un risparmio di tempo, anche se non nell'immediato nel futuro. Spero di essermi spiegato bene! Buon lavoro e fammi sapere! ---------------------------------------- ================================================================================ Graph con doppia scala sulla X ================================================================================ AUTORE: 674 DATA :20/04/2015 - 20:11:24 ---------------------------------------- Salve a tutti, vorrei sapere se a qualcuno è già capitato di dover plottare su un Graph o un XY Graph 2 array di dati uno dei quali deve essere plottato avendo sull'asse X l'istante in cui ogni campione viene inserito nell'array l'altro array deve essere plottato avendo sull' asse X la posizione che ha tale campione nell'array. Ho allegato un file dove forse si capisce meglio quello che intendo Ringrazio tutti quelli che mi risponderanno Saluti Whisky ---------------------------------------- AUTORE: 301 DATA :22/04/2015 - 09:19:10 ---------------------------------------- Puoi duplicare l'asse X del grafico (tasto dx sull'asse, duplicate....). A quel punto credo tu gia sappia. I due assi li puoi formattare come vuoi (come intero o time stamp), ma i cluster che passi al grafico devono essere dello stesso tipo. Per quanto riguarda i time stamp, li puoi convertire in DBL. Aris ---------------------------------------- AUTORE: 674 DATA :23/04/2015 - 08:10:04 ---------------------------------------- Ciao Aris, prima di tutto ti ringrazio per la "dritta" che mi hai dato. Faccio una premessa non sono un programmatore Labview purtroppo e lo utilizzo sporadicamente. La mia esigenza sarebbe quella di poter graficare su un XY Graph delle variabili come su di un Chart quindi con la prima parte del grafico che, raggiunto un numero di punti da definire,inizia poi a shiftare verso sinistra man mano che arrivano i nuovi dati. Questo è l'obbiettivo finale ma visto la mia esperienza devo fare un passo alla volta con calma.In allegato il file che mi permette di graficare sulle due X il tempo e il numero del campione ma non mi convince.Se vado a graficare 100 campioni mi sono accorto che non rimangono tutti perfettamente sincronizzati. Sul grafico dove ho la X con solo il numero dei campioni i dati dei 2 array rimangono sincroni sul grafico dove ho la doppia X no.Inoltre sul grafico dove ho la doppia X se attraverso la Graph Palette faccio uno zoom sul grafico e poi voglio rivedere il grafico originale quest'ultimo mi compare differente. Ti ringrazio in anticipo se potrai darmi qualche utile "dritta" Saluti whisky ---------------------------------------- AUTORE: 301 DATA :24/04/2015 - 10:31:59 ---------------------------------------- Vedi se con questo esempio ti torna di piu. Devi associare ogni plot alla scala che ti interessa (opportunamente formattata). Aris ---------------------------------------- AUTORE: 301 DATA :24/04/2015 - 10:46:42 ---------------------------------------- P.S. Questo è il modo "programmatico", diversamente dal menù della plot legend (cliccando sui vari plot) puoi selezionare la scala da associare.... Aris ---------------------------------------- AUTORE: 1078 DATA :27/04/2015 - 15:52:47 ---------------------------------------- Se posso aiutarti nel creare un grafico XY che funzioni tipo un chart..... Devi bufferizzare i dati, guarda tra gli esempi forniti con LV [b:32g5hyz6]Help-->Find Examples-->XY Graph[/b:32g5hyz6] ne dovresti trovare uno che fa al caso tuo. Non ricordo però come si chiama. ---------------------------------------- AUTORE: 674 DATA :28/04/2015 - 10:37:08 ---------------------------------------- In allegato il VI che ho pensato. L’obbiettivo era quello di plottare il Plot 1 e il Plot 2 con una doppia scala per le X, la prima scala dove riferirsi al momento in cui i dati di entrambe i Plot venivano acquisiti ( momento da rilevare con l’orologio del PC ), la seconda scala doveva riferirsi al numero del campione acquisito ( in pratica la sua posizione nell’ array ). Altro obbiettivo visualizzare sulla Cursor Legend : Tempo di acquisizione campione,Campione N° e ovviamente la Y di ogni Plot.Non ci sono riuscito. Se inserisco però un terzo Plot il Plot 0, e associo la seconda scala X al Plot 0 ottengo un comportamento simile a quello che volevo ma presenta alcuni problemi: 1)se zummo molto su di una terna di valori può capitare che, il Plot0 sia allineato al Campione N° dell’asse x ( ovviamente ) e non siano allineati i Plot 1e2 ( sono allineati fra di loro ma non con il Plot 0). Non capisco come mai visto che le posizioni negli array sono identiche. 2)non riesco ovviamente a visualizzare ciò che voglio nella Cursor Legend Non chiedo a Voi di farmi il VI, non mi sembra corretto, ma vi chiedo solo se è possibile ottenere l’obbiettivo che mi sono dato, e qualche dritta per ottenerlo Saluti Whisky ---------------------------------------- ================================================================================ Eseguibile lento ================================================================================ AUTORE: 10985 DATA :22/04/2015 - 18:00:35 ---------------------------------------- Ciao a tutti, ho sviluppato un programma in Labview 2013 32bit contenente dei subpanel, connessioni ad un database, grafici e connessione MODBUS TCP. Non sto a scendere nei dettagli del programma perchè è molto strutturato, ma il problema è che nell'ambiante di sviluppo tutto funziona bene ad una velocità normale, ma quando lancio l'eseguibile, tutto diventa molto lento... Le differenti prestazioni le vedo sullo stesso PC, ma snche combiando PC, l'eseguibile viene sempre rallentato. Sapete se c'è qualche impostazione che devo controllare? Perchè se fosse qualche "malfunzionamento" del programma me ne dovrei accorgere già all'interno del sistema di sviluppo, o sbaglio? ---------------------------------------- AUTORE: 43 DATA :23/04/2015 - 08:20:06 ---------------------------------------- [quote="bobojanez":20tmpksp]Ciao a tutti, ho sviluppato un programma in Labview 2013 32bit contenente dei subpanel, connessioni ad un database, grafici e connessione MODBUS TCP. Non sto a scendere nei dettagli del programma perchè è molto strutturato, ma il problema è che nell'ambiante di sviluppo tutto funziona bene ad una velocità normale, ma quando lancio l'eseguibile, tutto diventa molto lento... Le differenti prestazioni le vedo sullo stesso PC, ma snche combiando PC, l'eseguibile viene sempre rallentato. Sapete se c'è qualche impostazione che devo controllare? Perchè se fosse qualche "malfunzionamento" del programma me ne dovrei accorgere già all'interno del sistema di sviluppo, o sbaglio?[/quote:20tmpksp] Domanda generica presuppone una risposta generica. Di solito, in una applicazione complessa e articolata, ci sono parti di codice che sono sensibili al tip odi ambiente nel quale gira il codice (ambiente di sviluppo o codice eseguibile) Spesso le differenze riguardano i percorsi dei file. Per "debuggare" l'eseguibile nn puoi fare altro che aggiungere indicatori, messaggi di popup, scrivere file di log che ti aiutino a capire dov'è il problema senza utilizzare breakpoint... bye ---------------------------------------- AUTORE: 645 DATA :25/04/2015 - 15:56:16 ---------------------------------------- Come già suggerisce Paracarro dovresti cercare di capire quale parte rallenta l'esecuzione. Così, senza vedere il codice e il VI in funzione, potrei dirti per esperienza personale che la comunicazione con i database se non è ottimizzata (query precise, risultati legati solo ai dati che ti servono...) può diventare molto lenta se i dati sono tanti. Per la comunicazione Modbus immagino tu abbia inserito brevi ritardi per la gestione degli eventuali errori e dei tempi di risposta dei diversi dispositivi: anche questa parte potrebbe rallentare il VI. ---------------------------------------- AUTORE: 1078 DATA :27/04/2015 - 15:46:09 ---------------------------------------- Dirò un stupidata ma a volta è meglio dire una stupidata che stare zitto... Non è che ti sei dimenticato accesa una o più "lampadine" che nella fase di sviluppo ti aiutano, rallentandoti nella fase di relese? ---------------------------------------- ================================================================================ Controlli ActiveX Solidworks ================================================================================ AUTORE: 11055 DATA :27/04/2015 - 16:16:51 ---------------------------------------- Buongiorno a tutti, sono nuovo di questo forum e sono un neofita per quanto riguarda la programmazione in labview. Sono un progettista meccanico e lavoro con il software di modellazione tridimensionale Solidworks. Con il LV sto cercando di realizzare un piccolo software che automatizzi alcune operazioni che solitamente faccio tramite solidworks e che mi portano via molto tempo, per fare questo vorrei sfruttare i controlli ActiveX di SW, e qui casca il palco! Quando cerco di accedere ai controlli, l'unica azione possibile è quella di selezionare un invoke node con dicitura "check-box" e poi niente altro. Qualcuno ha qualche idea in merito? Ringrazio in anticipo chiunque mi dia una dritta. ---------------------------------------- AUTORE: 482 DATA :06/05/2015 - 07:11:18 ---------------------------------------- [quote="Sfab":1j65690f] Quando cerco di accedere ai controlli, l'unica azione possibile è quella di selezionare un invoke node con dicitura "check-box" e poi niente altro.[/quote:1j65690f] cosa intendi con "cerco di accedere ai controlli?" Con gli activeX tu puoi accedere a delle funzioni che il creatore di SolidWork ha deciso di rendere visibili all'esterno. non è che puoi accedere ai pulsanti e a tutte le funzioni di solidworks. Il passaggio è di solito: 1) aprire il riferimento all activeX che ti interessa (molto importante perchè a volte uno stesso software mette a disposizione diversi activex che contengono diverse funzioni) 2) usare un property node o un invoke node ed accedere alla funzione richiesta 3)chiudere il riferimento. ---------------------------------------- AUTORE: 1078 DATA :18/05/2015 - 15:40:15 ---------------------------------------- Ciao Sfab, Come neofita devo dire che non sei partito con una cosa molto semplice. Accedere alle funzionalità esposte da un controllo ActiveX non è molto semplice. Comunque ti consiglio di documentarti un po prima di procedere! Trovi un sacco di tutorial che possono aiutarti sul sito della NI. Buon lavoro! ---------------------------------------- ================================================================================ Problema con il blocco To Variant ================================================================================ AUTORE: 11020 DATA :28/04/2015 - 12:06:17 ---------------------------------------- Un saluto a tutti, vi spiego il mio problema. Da un PLC della casa B&R riesco ad avere accesso alle variabili che vengono elaborate dal PLC, riesco a prenderle e ad importarle all'interno del mio SW labview. Per creare la comunicazione tra il PLC e labview ho utilizzato una apposita libreria .NET. I dati però sono accessibili solo come variabile stringa. E questo non mi è utile perchè vorrei che una variabile di tipo booleano mi venga gestita come tale anche in labview. E così via anche per gli altri tipi di variabile. La libreria che ho utilizzato mi permette di sapere anche che tipo di dato viene preso dal PLC, quindi in labview, utilizzando una struttura case posso gestire le varie situazioni. Vi posto uno screen di parte del mio progetto... [img:2g0dtxnv]http://i57.tinypic.com/2elrpet.png[/img:2g0dtxnv] La variabile DataType la metterò in ingresso al case. Ma in ingresso al blocco evidenziato mi serve un riferimento alla mia variabile del plc. Come faccio?! Credo ci sia da utilizzare i control refnum. Ma non saprei come fare. qualcuno mi potrebbe aiutare?! Grazie mille Un saluto Giovanni ---------------------------------------- AUTORE: 1078 DATA :05/05/2015 - 13:39:37 ---------------------------------------- Ciao @Gio88, Il primo property node fa riferimento alla variabile e ne estrae per riferimento il valore ([b:c8430sdu]Variabile --> value[/b:c8430sdu]) Il secondo property node prende il riferimento del valore della variabile e ne estrae il tipo ([b:c8430sdu]Value --> DataType[/b:c8430sdu]), qui scatta la mia domanda: ma se scorri tutte le proprietà del riferimento "[b:c8430sdu]Value[/b:c8430sdu]" non ce nè una che ti restituisce il valore effettivo della variabile? (ipotizzo: [b:c8430sdu]Value --> Value[/b:c8430sdu]) Capito? Se c'è è quello che ti serve e che darai in pasto all'ingresso [i:c8430sdu]to Variant[/i:c8430sdu]! ---------------------------------------- ================================================================================ Scrittura stringa in file di configurazione ================================================================================ AUTORE: 2196 DATA :30/04/2015 - 16:08:47 ---------------------------------------- Semplice problema dovrei scrivere: [a] b=ciccio [b] ... invece labview mi scrive usando il "write key" [a] b="ciccio" [b] ... vorrei togliere le virgolette e la riga vuota ---------------------------------------- AUTORE: 43 DATA :30/04/2015 - 17:30:33 ---------------------------------------- [quote="Buddace":s4vw4fbm]Semplice problema dovrei scrivere: [a] b=ciccio [b] ... invece labview mi scrive usando il "write key" [a] b="ciccio" [b] ... vorrei togliere le virgolette e la riga vuota[/quote:s4vw4fbm] Nn capisco che fastidio ti diano, ma nella domanda è contenuta la risposta: non usare la "Write key" immagino che il file nn sia gigantesco, per cui può essere caricato in memoria in una unica stringa. A quel punto maneggi quella stringa come meglio cred, ed al termine riscrivi l'intero file bye ---------------------------------------- AUTORE: 2196 DATA :04/05/2015 - 09:32:13 ---------------------------------------- il fastidio è che il file di configurazione non è mio ma di 3 parti ed è bello corposo devo fare cosi come ho scritto. ---------------------------------------- AUTORE: 301 DATA :04/05/2015 - 12:37:24 ---------------------------------------- A questo punto, puoi crearti una copia del Write key per le stringhe che non aggiunga le virgolette.... Aris ---------------------------------------- ================================================================================ Individuare i giorni festivi in un calendario ================================================================================ AUTORE: 482 DATA :14/05/2015 - 09:21:24 ---------------------------------------- ...ma ciao! sto sviluppando un applicazione che genera un calendario. In questo calendario vado ad evidenziare i giorni festivi. Escludendo le domeniche che si riesce ad estrapolarle dal calendario di sistema in base al giorno della settimana, sapete se c'e' un modo semplice per individuare i giorni festivi prendendoli che ne so da qualche calendario online o qualcos'altro? ---------------------------------------- AUTORE: 1078 DATA :18/05/2015 - 15:35:28 ---------------------------------------- Ciao Geppo, Che io sappia i giorni festivi sono sempre quelli, stabiliti e conosciuti. Tranne la Pasqua che ti devi calcolare con la formula, che non ricordo mai, il resto è stabilito. Qundi diciamo che dovrebbe essere facile risalire ad un calendario con i giorni festivi evidenziati. ---------------------------------------- ================================================================================ Problema con SubVI ================================================================================ AUTORE: 11020 DATA :15/05/2015 - 09:59:27 ---------------------------------------- Un saluto a tutti. Ho un problema sicuramente banale ma che non riesco a risolvere. Mi ero realizzato un mio progettino che funzionava correttamente. Successivamente ho aggiunto quesot progettino all'intenro di un altro progetto. Ho trascinato la task del mio progettino all'interno del block diagram in modo che mi comparisse l'icona di un subvi. Quando lancio il mio progetto più grande, i ocntrolli che io impartisco al mio subvi non vengono minimamente eseguiti. Qualcuno può aiutarmi?! Dove sbaglio?! ---------------------------------------- AUTORE: 1078 DATA :18/05/2015 - 12:36:36 ---------------------------------------- Ciao Gio88, Per farci capire meglio riusciresti a postarci un immagine o un subvi di esempio? Semba che non gli passi correttamente dei paramentri o chiami il subvi in modo che vengua eseguito in modo autonomo e non ti funziona? ---------------------------------------- ================================================================================ simulazione adc a rampa analogica ================================================================================ AUTORE: 11060 DATA :15/05/2015 - 11:25:26 ---------------------------------------- Salve a tutti, dovrei scrivere un codice labview che simuli il comportamento di un ad a rampa analogica... sto provando e riprovando ma non riesco a venirne a capo... c'è qualcuno che può darmi una mano? Il simulatore deve: - permettere l’impostazione di tutti i parametri utili alla conversione; - simulare il funzionamento del convertitore a rampa analogica - permettere di generare segnali di test da convertire e visualizzare il risultato della conversione e l’errore di quantizzazione. - permettere di caricare da file il segnale da convertire - fornire la possibilità di salvare il segnale convertito; - permettere di impostare una caratteristica non lineare della rampa - è gradita la possibilità di valutare parametri di qualità della conversione [img:y4bhe140]https://www.facebook.com/ajax/mercury/attachments/photo.php?fbid=10203822485185220&mode=contain&width=468&height=468[/img:y4bhe140] [img:y4bhe140]https://scontent-mxp.xx.fbcdn.net/hphotos-xpa1/v/t34.0-12/11225771_10203822486545254_433587690_n.jpg?oh=5c3ac77208dc30067e23b055e83816be&oe=5558228E[/img:y4bhe140] ---------------------------------------- AUTORE: 1078 DATA :18/05/2015 - 12:31:18 ---------------------------------------- Ciao Rabeluk, Non si vedono le immagini, probabilmente le hai inserite male... Se posso poi vorrei farti una domanda: ma il simulatore del sensore dobbiamo progettartelo noi? (Non ho capito!) Quello che hai postato sembrano proprio delle specifiche! ---------------------------------------- AUTORE: 11060 DATA :20/05/2015 - 11:02:35 ---------------------------------------- le immagini sono queste [url:yyz1wo2a]http://it.tinypic.com/r/23u4v1y/8[/url:yyz1wo2a] [url:yyz1wo2a]http://it.tinypic.com/r/260qyk7/8[/url:yyz1wo2a] non capisco la tua domanda... io non ho pensato proprio alla simuazione di un sensore ---------------------------------------- ================================================================================ Blocco che taglia i decimali ================================================================================ AUTORE: 11062 DATA :20/05/2015 - 00:34:38 ---------------------------------------- Salve, sono un po' nuovo di Labview. Volevo sapere se esiste un blocco che prende solo la parte intera di un numero. Sto cercando di randomizzare una struttura case, moltiplicando il valore del blocco random (0-1) per un intero e vorrei prendere solo il valore intero del risultato. Come faccio? ---------------------------------------- AUTORE: 301 DATA :20/05/2015 - 06:39:02 ---------------------------------------- Puoi semplicemente convertirlo in un intero..... Trovi la funzione nella paletta Numeric>>Conversion>>i8 Aris ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 07:33:25 ---------------------------------------- Grazie. Adesso ho un altro problema. Praticamente il mio è un lavoro di tesi sperimentale in cui devo programmare su labview una matrice di frecce avanti, indietro, destra e sinistra insieme al segnale stop. Queste devono lampeggiare in maniera casuale. Sto usando un intero ciclo while dove poi dovrò mettere un sistema di filtraggio per un circuito esterno e 5 strutture case per i 5 casi. Non riesco a fare avvenire bene il lampeggiamento. Potreste darmi una mano? ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 08:13:11 ---------------------------------------- invio l'allegato di quello che ho fatto fino ad adesso. Non so come procedere \":cry:\" ---------------------------------------- AUTORE: 301 DATA :20/05/2015 - 08:49:16 ---------------------------------------- non ho capito bene il problema..... in ogni caso, ho le versione 2013, se vuoi ripostalo convertito. Aris ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 09:08:27 ---------------------------------------- Eccoti l'allegato. Grazie. Potresti essere la mia salvezza \":wink:\" ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 09:11:58 ---------------------------------------- comunque ti spiego meglio. Ho praticamente creato attraverso un classic boolean una commutazione tra 2 immagini (una rappresenta la freccia accesa e l'altra la freccia spenta): Dovrei fare avvenire un lampeggiamento casuale di una di esse con un certo ritardo. Ho per questo fatto le strutture case per fare avvenire il lampeggiamento separato . Adesso come procedo? ---------------------------------------- AUTORE: 301 DATA :20/05/2015 - 09:41:34 ---------------------------------------- Vedendo cosi al volo, mi verrebbe da fare una cosa di questo tipo..... Magari poi pensandoci si riesce a fare qualcosa di piu elegante.... Aris ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 13:50:46 ---------------------------------------- Grazie Aris. Dovrebbe funzionare così. Ma mi potresti spiegare cosa hai fatto? ---------------------------------------- AUTORE: 301 DATA :20/05/2015 - 14:19:09 ---------------------------------------- Ho inserito i tuoi controlli in un cluster e invece di gestire tanti case ho creato un array con i valori corrispondenti al controllo (freccia) che voglio venga acceso e li vado a prendere tramite un index array. Se guardi attentamente, nell'esempio manca il 16, ad esempio, corrispondente a freccia giu (che non si accende mai), mentre c'è uno "0" che tiene tutti i controlli spenti. Aris ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 14:20:29 ---------------------------------------- Ho Un po' capito il funzionamento. Non capisco perchè però lo stop ( ultimo elemento messo nel cluster non si illumina mai) ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 14:22:08 ---------------------------------------- Non si può fare accendere pure? ---------------------------------------- AUTORE: 301 DATA :20/05/2015 - 14:23:01 ---------------------------------------- Allora il "16" è lo stop. Aggiungi un elemento alla costante array di valore "16", o mettilo al posto dello "0" se vuoi che non siano mai tutti spenti. Aris ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 14:27:45 ---------------------------------------- Perfetto. Ho capito. Grazie mille. Volevo chiederti un ultimo dubbio? Come hai fatto ad associare i valori 1 - 2 - 4 - 8 - 16? Cioè perchè proprio questi valori? Ho soltanto quest'ultimo dubbio? ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 14:28:19 ---------------------------------------- Senza il ? \":lol:\" ---------------------------------------- AUTORE: 301 DATA :20/05/2015 - 14:53:56 ---------------------------------------- 0 = 00000000 1 = 10000000 2 = 01000000 4 = 00100000 8 = 00010000 16 = 00001000 ecc..... ---------------------------------------- AUTORE: 11062 DATA :20/05/2015 - 15:22:32 ---------------------------------------- Ho capito. Praticamente hai associato un numero ad 8 bit diverso per ogni freccia. Ho capito. Grazie mille. Scusa se ti ho assillato. Mi hai salvato. A presto \";)\" ---------------------------------------- AUTORE: 301 DATA :21/05/2015 - 06:47:41 ---------------------------------------- Esatto! Considera che l'array è un insieme ordinato di dato omogenei, mentre un cluster un insieme, anch'esso ordinato, di dati non omogenei. Nel tuo caso ho sfruttato una funzione che converte un array di booleani (vedi post precedente) in un cluster nel quale ho inserito i tuoi controlli. L'unico limite di questa funzione è che devi specificare la grandezza del cluster in cui stai andando a scrivere. Aris ---------------------------------------- AUTORE: 11062 DATA :21/05/2015 - 07:26:57 ---------------------------------------- Pensi possa essere un limite grave per quello che devo fare io? ---------------------------------------- AUTORE: 301 DATA :21/05/2015 - 07:39:32 ---------------------------------------- In che senso, scusa?!?! Era solo una minima spiegazione del vi, per cercare di farti capire... Aris ---------------------------------------- AUTORE: 11062 DATA :23/05/2015 - 15:12:44 ---------------------------------------- Salve Aris. Volevo chiedere un ulteriore aiuto riguardo il problema dell'altra volta. Ho notato che di tanto in tanto il sistema sembra prolungare la visualizzazione dei un simbolo. Questo perche' il dado puo' estrarre due volte di seguito lo stesso numero. Per questo motivo mi piacerebbe implementare su ogni "tiro di dado" la sequenza (Acceso per tot ms + spento per lo stesso tempo). In questo modo anche se esce due volte di seguito la stessa freccia si avra' un doppio impulso luminoso. Pensi possa esserci un modo? Grazie ---------------------------------------- AUTORE: 301 DATA :25/05/2015 - 07:09:48 ---------------------------------------- Mi spiace, ma non c'è "un modo", credo ce ne siano decine..... Aris ---------------------------------------- AUTORE: 11062 DATA :26/05/2015 - 15:15:09 ---------------------------------------- Così dovrebbe funzionare. Grazie \":D\" ---------------------------------------- AUTORE: 11062 DATA :27/05/2015 - 18:08:49 ---------------------------------------- Caro Aris, Per levare la condizione di tutti spenti basta levare lo 0 dagli indici di array o bisogna intervenire sul cluster? ---------------------------------------- AUTORE: 301 DATA :27/05/2015 - 18:14:33 ---------------------------------------- Basta levare lo 0. ---------------------------------------- AUTORE: 11062 DATA :27/05/2015 - 19:17:43 ---------------------------------------- Ma se nel random viene generato 0 così che succede? Non si dovrebbe associare a 0 la condizione di accensione di una freccia e modificare le assegnazioni? ---------------------------------------- AUTORE: 301 DATA :27/05/2015 - 20:08:24 ---------------------------------------- Il numero generato randomicamente è solo l'index dalla'array. Non c'entra nulla con il valore che viene preso. ---------------------------------------- AUTORE: 11062 DATA :28/05/2015 - 08:56:08 ---------------------------------------- Ho notato che pur levando lo 0 dall'array (facendo click destro sulla tabella delle dimensioni delle array - Data Operations - Delete Element) continua a mantenersi la condizione di tutto spento. Come mai? ---------------------------------------- AUTORE: 1078 DATA :03/06/2015 - 08:21:42 ---------------------------------------- Se posso intromettermi... I valori 1-16 sono il valore in numerico di un semplice array booleano. Un U8 non è nient'altro che un numero a 8 bit, Aris mette a 1 un bit alla volta ottenendo come numero un numero compreso tra 1 e 16. Se posso aggiungerei del codice per gestire l'evento click del bottone (boolenao) stop, togliendo il tasto stop! ---------------------------------------- AUTORE: 11062 DATA :04/06/2015 - 07:19:48 ---------------------------------------- Grazie Ricky hai fatto una cosa molto interessante e intelligente. Io non ho capito come si fa a differenziare i componenti del Cluster con 00000000, 00000010, ecc... cioè facendo il cluster come si fa poi a dargli questi valori nell'index array? ---------------------------------------- ================================================================================ HTTP POST per scambio file ================================================================================ AUTORE: 445 DATA :30/06/2015 - 08:35:09 ---------------------------------------- Ciao a tutti, avrei la necessità di effettuare una connessione HTTP POST verso un server che però richiede autenticazione tramite token + altri parametri di input. Chiaramente ho il token ma non sò come inserirlo nel VI di LV. questo è l'esempio della connessione HTTP POST, io dovrei "trasformarlo" in codice labivew, per caricare un file sul server. POST /path/to/upload/script HTTP/1.0 Connection: Keep-Alive User-Agent: My Client App v1.0 Host: https://bulksell.ebay.com/ws/eBayISAPI. ... angeUpload Content-type: multipart/form-data; boundary=THIS_STRING_SEPARATES Content-Length: 256 --THIS_STRING_SEPARATES Content-Disposition: form-data; name="token" 12345678987654321 --THIS_STRING_SEPARATES Content-Disposition: form-data; name="file"; filename="listings.csv" Content-Type: text/csv ... contents of listings.csv ... --THIS_STRING_SEPARATES- Ho provato ad utilizzare la funzione POST.vi dentro a DataComunication > Protocols > HTTP Client ma non riesco a capire dove inserire il token e gli altri paramentri Suggerimenti? GRAZIE ---------------------------------------- AUTORE: 482 DATA :01/07/2015 - 07:11:31 ---------------------------------------- Ho guardato cosi' il vi "Post Multipart" e mi sembra abbia tutto quello che ti serve, se guardi l'help ci sono tutte le spiegazioni. Se non sai come arrivare all'help, basta che premi CTRL+H vai col mouse sul VI e poi vai su detailed help. ---------------------------------------- AUTORE: 445 DATA :01/07/2015 - 07:42:32 ---------------------------------------- Ok grazie gepponline, però non capisco quali campi del codice HTML devo passare come HEADER e quali come DATI, il Post Multipart che intendi tu, da quello che ho capito, serve per passare dati o file, quindi solo questa parte: Content-Disposition: form-data; name="token" 12345678987654321 --THIS_STRING_SEPARATES Content-Disposition: form-data; name="file"; filename="listings.csv" Content-Type: text/csv ... contents of listings.csv ... --THIS_STRING_SEPARATES- giusto? ---------------------------------------- AUTORE: 445 DATA :01/07/2015 - 08:15:12 ---------------------------------------- Ho provato a creare il VI col Post Multipart ma nel body restituisce semre errore: An unknown problem interrupted the file transfer. Please try again. in allegato il VI .... dove sbaglio?? [img:26jghfif]http://www.luninet.com/_temp/Image2.png[/img:26jghfif] ---------------------------------------- AUTORE: 645 DATA :01/07/2015 - 08:43:28 ---------------------------------------- Ti suggerisco alcuni link che magari hai già visto: http://zone.ni.com/reference/en-XX/help ... oad_files/ http://zone.ni.com/reference/en-XX/help ... st_method/ http://zone.ni.com/reference/en-XX/help ... multipart/ Magari possono essere utili. ---------------------------------------- AUTORE: 445 DATA :01/07/2015 - 09:24:37 ---------------------------------------- Grazie, ma di link ed help ne ho già visionati a bizzeffe, mi servirebbe qualcuno che rispondesse alle mie domande.. \":)\" ---------------------------------------- AUTORE: 482 DATA :02/07/2015 - 07:01:51 ---------------------------------------- non c'e' il vi in allegato ma una mezza immagine... ---------------------------------------- ================================================================================ Semplicissimo problema con le code ================================================================================ AUTORE: 11020 DATA :01/07/2015 - 10:25:33 ---------------------------------------- Ho un semplicissimo problema. Il codice funziona bene fino a quando non ne voglio terminare l'esecuzione. Premo stop, ma il software continua a girare. Non capisco come mai. Sono sicuro che sia una mia piccolezza, ma non riesco a capire il problema. [img:3b635upf]http://i61.tinypic.com/5fitdh.png[/img:3b635upf] Grazie mille Ciao Giovanni ---------------------------------------- AUTORE: 301 DATA :02/07/2015 - 06:35:45 ---------------------------------------- Aggiungi un timeout al dequeue e chiudi la coda in uscita al ciclo scrivente. il ciclo in basso ti rimane in attesa, se non scrivi piu nulla nella coda, lui non si eseguirà piu. Aris ---------------------------------------- AUTORE: 11020 DATA :02/07/2015 - 13:46:35 ---------------------------------------- Mi ero scordato di chiudere la coda. Che sbadato. Aggiungendo la chiusura della coda, funziona bene. \";)\" ---------------------------------------- ================================================================================ Creazione array bidimensionale partendo da array singolo ================================================================================ AUTORE: 11020 DATA :03/07/2015 - 09:42:35 ---------------------------------------- Un saluto a tutti. Avrei bisogno di un vostro aiuto. Inizialmente pensavo fosse una cosa abbastanza semplice, però sto trovando delle difficolta. Partendo da un array singolo vorrei creare un array bidimensionale. Mi spiego... Al primo ciclo del mio while, prendo il mio array e lo metto come prima riga del mio array bidimensionale. Al secondo ciclo, prendo il mio array e lo attacco sotto alla prima riga. Al terzo ciclo prendo ancorail mio array e lo attacco sotto alla seconda riga. E così via... Sicuramente ci sarà da utilizzare il contatore i all'interno del ciclo while. Ma non so come e non so con quale blocco specifico. Qualcuno è in grado di aiutarmi?! Un saluto Giovanni ---------------------------------------- AUTORE: 301 DATA :03/07/2015 - 09:55:39 ---------------------------------------- vedi l'esempio...... Aris ---------------------------------------- AUTORE: 11020 DATA :03/07/2015 - 10:01:01 ---------------------------------------- Al lavoro utilizziamo labview 2012. Puoi aggiornarmelo di versione?! Grazie mille ---------------------------------------- AUTORE: 43 DATA :03/07/2015 - 10:14:25 ---------------------------------------- Devi usare solo un ciclo for. Collega il n. di righe come n. iterazioni (N) . Inserisci il tuo array nel ciclo for e disabilita l'autoindicizzazione. Fai uscire il tuo array lasciando abilitata l'indicizzazione e avrai la tua matrice. Bye ---------------------------------------- AUTORE: 11020 DATA :03/07/2015 - 10:32:34 ---------------------------------------- Geniale!! Avevo provato mille vie. Ma molte volte la più ovvia è la più corretta!! ---------------------------------------- AUTORE: 11020 DATA :03/07/2015 - 11:34:06 ---------------------------------------- Così funziona. Però il problema è che io ho un array che cambia in continuazione. Inoltre vorrei generare un array bidimensionale senza impostare in anticipo il numero delle righe della mia matrice di uscita. è una cosa fattibile?! In pratica vorrei, il primo array sulla prima riga, il secondo array sulla seconda riga... cosi via... Utilizzando il ciclo for non è possibile fare come voglio... Cavolo. ---------------------------------------- AUTORE: 11020 DATA :03/07/2015 - 15:26:51 ---------------------------------------- OK. Ci sono riuscito. \";)\" ---------------------------------------- AUTORE: 301 DATA :06/07/2015 - 07:14:45 ---------------------------------------- File convertito. Aris ---------------------------------------- ================================================================================ Sostituire un eseguibile senza uscire dal programma? ================================================================================ AUTORE: 822 DATA :03/07/2015 - 12:01:11 ---------------------------------------- Ciao! Purtroppo sempre più spesso mi trovo a lavorare su software di macchine che sono già in produzione e non possono essere fermate (neanche per la copia di un nuovo eseguibile), il che mi porta ad intervenire solo quando gli operatori sono in pausa (pranzo, cambio turno, ecc...), passando intere giornate dal cliente per lavorare poi effettivamente solo un paio di ore. Oltre al fatto di dover essere praticamente sempre disponibile a partire ogni volta che il cliente da disponibilità a lavorare. Inutile dire quanto sia snervante ed avvilente lavorare in questo modo, dove non hai neanche la possibilità di rimediare al volo ad un tuo sbaglio (hai fatto un errore? Hai capito qual è? Si, ma non puoi metterlo a posto ora perchè il cliente deve produrre, aspetta 4 ore che vanno in pausa e poi lo metti a posto..) La domanda è questa: si può in LabVIEW modificare off line i sorgenti, ricompilare e sostituire "al volo" l'eseguibile senza interruzione di continuità? ---------------------------------------- AUTORE: 482 DATA :03/07/2015 - 15:55:38 ---------------------------------------- Secondo me la risposta è no, ma non centra labview in tutto cio' quanto il sistema operativo che non ti permette di sostituire un eseguibile in esecuzione. Il mio consiglio è di sviluppare il tuo eseguibile in modo che per le funzioni principali e piu' soggette a modifiche, si appoggi a file esterni come file di impostazioni, dll e simili...eventualmente anche eseguibili esterni. ---------------------------------------- ================================================================================ file csv con labview ================================================================================ AUTORE: 11020 DATA :10/07/2015 - 09:40:59 ---------------------------------------- Salvare. Avrei necessità di prendere i valori di un array bidimensionale e scriverli su un file in formato csv. Riesco a scriverli però non mi da la giusta formattazione. Se io ho un array composto così: 1 2 3 4 5 e lo vado a scrivere su questo file excel, i numeri 1 2 3 4 e 5 non vengono scritti ciascuno in una cella separatamente, ma vengono messi tutti insieme nella stessa celletta come se fossero un numero unico, in questo caso il numero 12345. Sto utilizzando il blocco write to spreadsheet file e come valore di delimiter sto utilizzando quello di default, ovvero \t, che infatti corrisponde al tab. Il tab su un file per blocco note me lo prende correttamente, ma se provo a scrivere su un file excel mi si presenta il problema che vi ho spiegato sopra. Qualcuno sa aiutarmi?! Non credo ci sia niente di difficile ma non so dove sbaglio. Saluti Giovanni ---------------------------------------- AUTORE: 482 DATA :10/07/2015 - 13:46:15 ---------------------------------------- I file CSV di default usano il ";" come carattere separatore quindi credo che excel si aspetti quello salvo diversa indicazione. Quindi prova ad usare il punto e virgola e dovrebbe sistemarsi. ---------------------------------------- AUTORE: 301 DATA :13/07/2015 - 11:27:41 ---------------------------------------- Da excel devi usare l'importa dati da file di testo, per poter specificare il delimitatore. Aris ---------------------------------------- ================================================================================ Associare valori di un array ad un cluster ================================================================================ AUTORE: 11062 DATA :13/07/2015 - 10:51:27 ---------------------------------------- Salve, volevo chiedere un mio dubbio. Vorrei spiegato, se è possibile, come poter attribuire dei valori diversi in un index array per differenziare i componenti di un cluster. ---------------------------------------- AUTORE: 482 DATA :13/07/2015 - 14:04:00 ---------------------------------------- quesito decisamente poco chiaro... ---------------------------------------- ================================================================================ Problema con porta seriale ================================================================================ AUTORE: 10818 DATA :13/07/2015 - 14:04:17 ---------------------------------------- Ciao a tutti, ho uno strano problema con la porta seriale. Ho utilizzato il "VISA Find Resource" per creare un elenco delle com attive poi le apro una ad una e ne vado a leggere il nome con la proprietà "Interface Description". Fino ad oggi non avevo mai avuto problemi, poi ho provato a rinominare la COM della periferica, da COM3 a COM16 e sono iniziati i problemi. Il "VISA Find Resource" me la segnalava come ASRL20::INSTR mentre il nome ("Interface Description") era "ASRL2 (COM16 - USB Serial Port)". Ho quindi nominato di nuovo la porta come COM3 e a questo punto il nome è scomparso. Ho aperto MAX e il nome è correttamente indicato ma se avvio il mio programma questo non compare e dà errore: Error -1073807343 occurred at VISA Open in ControlloUSB.vi Metto le immagini del tutto. Uso labview 8.0. Grazie. un caro saluto, renzo. ---------------------------------------- AUTORE: 645 DATA :14/07/2015 - 17:32:11 ---------------------------------------- In alcuni forum si parla di una situazione simile alla tua comparsa dopo aver scollegato un dispositivo USB dal pc mentre il VI è in funzione: se non viene fatto un aggiornamento delle porte il VI non si accorge della mancanza del dispositivo e segnala errore in caso di tentativo di trasmissione dati. Prima di modificare il nome della porta COM hai controllato che il nuovo numero inserito non fosse già occupato da un altro dispositivo? Se così fosse potrebbe essere un conflitto. ---------------------------------------- AUTORE: 10818 DATA :16/07/2015 - 11:28:55 ---------------------------------------- Grazie per aver risposto. In realtà non avevo scollegato la periferica ma avevo solo rinominato la porta. Il motivo del problema non l'ho capito ma adesso pare sia superato. Nel frattempo ho fatto giare l'antivirus, CClenaer e riavviato il PC. Uno di questi deve essere stata la soluzione. un caro saluto, renzo. ---------------------------------------- ================================================================================ MATRICE DI FRECCE ================================================================================ AUTORE: 11062 DATA :14/07/2015 - 09:33:36 ---------------------------------------- Salve volevo proporvi un quesito che arrovella la mia mente da settimane. Sono uno studente di ingegneria elettronica e sto facendo una tesi sulla programmazione su labivew di una matrice di frecce che capti delle onde P300 del cervello. Le onde P300 sono dei segnali del nostro sistema nervoso che vengono generati in maniera spontanea mediante stimoli non frequenti di tipo visivo e uditivo. In un sistema di matrice di frecce che lampeggiano in maniera casuale dovrei programmare un sistema di sincronizzazione delle onde P300 con le illuminazioni casuali delle frecce (che vengono acquisite attraverso una scheda, al di fuori da labview. Ho la demo di labview della scheda che permette il filtraggio di tali segnali). Mi spiego meglio. Vi allegherò il file in labview 2013 della matrice di frecce che lampeggia in maniera casuale. Attraverso un sistema di elettrodi, fissando una freccia si genera l'onda P300 su quella determinata freccia. Ecco vorrei capire se qualcuno ha qualche idea su come poter prima di tutto memorizzare tutte le illuminazioni delle frecce, e poi capire come poter sincronizzare il segnale con la freccia che si sta visualizzando. Spero di essere stato il più chiaro possibile. Ho bisogno di aiuto perchè sono in alto mare \":?\" Vi ringrazio in anticipo. se volete più chiarimenti chiedetemi. cercherò di essere ancora più chiaro ---------------------------------------- AUTORE: 645 DATA :14/07/2015 - 17:34:43 ---------------------------------------- Ciao, non ho avuto modo di guardare il tuo VI ma al volo mi viene da pensare che potresti registrare la freccia illuminata, il tempo e il corrispondente segnale letto "nel paziente" e poi confrontare. Per farlo puoi utilizzare i timestamp o i blocchi legati al tempo e decidere, per esempio, che le frecce e i segnali siano memorizzati con sigle in un file Excel. ---------------------------------------- AUTORE: 10818 DATA :16/07/2015 - 11:35:42 ---------------------------------------- Ciao, adesso non posso aprire la tua vi tuttavia se le frecce sono dei boolenati (i due valori sono TRUE e FALSE ovvero acceso e spento) potresti usarli come maschera. Mi spiego meglio, se ogni riga della tua matrice contiene 8 frecce, uno stato qualsiasi potrebbe essere FFTFTTFT dove ogni T corrisponde alla freccia accesa e ogni F alla freccia spenta. Se metti un 1 per ogni T e uno 0 per ogni F hai 00101101 che corrisponde a 45 decimale o 2D esadecimale. Se salvi il numero hai automaticamente salvato lo stato on/off della serie di freccie. un caro saluto, renzo. ---------------------------------------- AUTORE: 11062 DATA :24/10/2015 - 08:45:04 ---------------------------------------- Salve Renzo. Ho capito cosa intendi. Ma come si fa a memorizzarli? Dovrei tipo schedulare ogni acquisizione fatta. ---------------------------------------- ================================================================================ salvataggio dati compact rio ================================================================================ AUTORE: 11068 DATA :14/07/2015 - 10:40:18 ---------------------------------------- Buongiorno a tutti, utilizzo un compact rio 9082 in modalità scan interface, ho un timed loop di acquisizione temporizzato su synchronize to scan engine. Il mio problema è il salvataggio dei dati. Utilizzando un banalissimo write to spreadsheet file viene riscontrato un errore che sembrerebbe di percorso. come se non fosse possibile andare a scrivere su una cartella generica. cosa mi sfugge? grazie dell'aiuto ---------------------------------------- ================================================================================ Labview error 66 TCP-IP client-server ================================================================================ AUTORE: 3428 DATA :15/07/2015 - 14:47:32 ---------------------------------------- Salve, sto lavorando con un'applicazione che mi mette a disposizione un buffer di dati in ram. I dati sono sempre accessibili. Io faccio una richiesta, via TCP-IP e il server mi risponde con una porta di rete dove lui andrà a mettere i dati da me richiesti. A questo punto apro una nuova connessione in localhost (il server gira sulla stessa macchina) su quella porta e mi metto in ascolto dei dati, ovviamente gestendo il relativo possibile timeout. I dati sono subito disponibili e me li appoggio su delle fgv. Una prima lettura tcp di 4 byte mi dice quanto è lungo il buffer che devo leggere, quindi passo ad una seconda lettura con i byte richiesti.Ho messo un timeout sulla prima lettura di 1 secondo che mi temporizza anche il ciclo e 5 secondi sulla seconda. Il ciclo gira comunque a 100ms. Lancio l'applicazione e questa vi di lettura si avvia immediatamente iniziando a leggere. Se la lascio fare per ore non va in errore invece se utilizzo il pc, soprattutto continuo lo sviluppo con labivew ogni tanto va in errore, diciamo 1 volta ogni 15 minuti, quando faccio save all del progetto o quando aggiorno l'interfaccia... insomma utilizzo il pc. PC pentium 7, 8 core, 8 gb di ram di cui 4 in utilizzo con l'applicazione aperta da codice. Ecco l'errore che esce direttamente dal TCP read Labview Error 66 Possible reason(s): LabVIEW: The network connection was closed by the peer. If you are using the Open VI Reference function on a remote VI Server connection, verify that the machine is allowed access by selecting Tools>>Options>>VI Server on the server side. Qualche idea? ---------------------------------------- AUTORE: 3428 DATA :15/07/2015 - 14:49:10 ---------------------------------------- 3.4Ghz labview 2014 ---------------------------------------- AUTORE: 482 DATA :15/07/2015 - 15:54:24 ---------------------------------------- Hai provato a lanciare labview come high priority? ---------------------------------------- AUTORE: 3428 DATA :15/07/2015 - 16:29:24 ---------------------------------------- No, come faccio? Parli di exe o di labview Da file batch? ---------------------------------------- AUTORE: 3428 DATA :15/07/2015 - 17:00:32 ---------------------------------------- ho trovato questa guida.. http://www.ni.com/tutorial/6871/en/ la scorciatoia non mi funziona ma ad ogni modo forzo attualmente la priorità da taskmanager. Lo dico a bassa voce ma sembra funzionare... se così fosse lascio il debug a priorità alta poi creo la scorciatoia all'exe e la setto sempre con priorità alta Vi aggiorno.. Grazie ---------------------------------------- AUTORE: 482 DATA :16/07/2015 - 07:22:55 ---------------------------------------- Io ho un problema simile con un eseguibile che gira molto veloce su un pc windows xp. Succede che la generazione di segnale va in crash quando esci dallo screensaver e cose simili. Per questo ho creato un file che lancia un comando di questo tipo: Destinazione:C:\Windows\System32\cmd.exe /c start /high goom.exe da:C:\GOOM_2.0\GOOM dove goom.exe è il mio eseguibile e il percorso "da" è quello in cui si trova l'eseguibile. ---------------------------------------- AUTORE: 3428 DATA :16/07/2015 - 08:21:48 ---------------------------------------- Grazie Gepponline, ho seguito la guida che ti allegavo e creato la scorciatoia. Lv viene lanciato con priorità alta ma come dicevo ho parlato troppo presto... Continua ad andare in errore... Non riesco a capire "The network connection was closed by the peer..." Stiamo parlando solo di windows giusto? Pensavo che in localhost queste cose non potessero succedere eppure... ---------------------------------------- AUTORE: 43 DATA :16/07/2015 - 08:22:37 ---------------------------------------- Io cercherei di "irrobustire" il software. Gestirei l'errore 66 tentando una riconnessione per uncerto n. di volte e per un certo periodo di tempo poi se la connessione si ristabilisce ripartirei dal punto in cui ho interrotto altrimenti darei forfait. Bye ---------------------------------------- AUTORE: 482 DATA :16/07/2015 - 15:38:49 ---------------------------------------- domanda stupida...non è che hai qualche firewall o antivirus o cose simili che magari dopo un po' si infastidiscono su quella porta? ---------------------------------------- ================================================================================ Problema di acquisizione segnale con cRIO usando la DMA FIFO ================================================================================ AUTORE: 11069 DATA :17/07/2015 - 13:49:03 ---------------------------------------- Buonasera, vi scrivo perchè ho un problema nell'acquisire un segnale onda quadra a 40 kHz facendo uso del DMA FIFO: l'acquisizione è corretta a 30 kHz ma quando salgo in frequenza il segnale è distorto (vedete allegato). Utilizzo un cRIO 9012 con modulo NI 9205 di acquisizione. Chiaramente vado a definire il FIFO sia lato FPGA che lato HOST, i parametri di configurazione sono: LATO FPGA: FIFO Requested Number of Elements: 4095 FPGA Rate: 160 kHz (Ticks=250) Timeout in scrittura:0 LATO HOST: FIFO Requested Depth: 100000 Timeout Lettura: 0 Number of elements: 2000 Ho provato a variare con dei control i parametri del dimensionamento del buffer e del timeout ma non riesco ad ottenere un segnale non distorto a 40 kHz e valori successivi. Ho fatto un VI su cRIO che legge i dati e gestisce anche il caso di Timeout: quando si verifica il timeout in scrittura vado ad interrompere l'acquisizione, su Host valuto in lettura i campioni rimanenti e li leggo e una volta letti riprendo l'acquisizione. Tuttavia non capisco come mai quando mi si accende la spia del timeout in scrittura su FIFO FPGA non mi si accenda anche la medesima spia che io utilizzo su interfaccia Host mediante il FPGA Read/Write Control Function (vedi immagine allegata): non ci dovrebbe essere corrispondenza tra le variabili che definisco nel FPGA VI e quelli che richiamo su HOST VI? Vi allego anche i due VI del progetto se ci fossero degli errori nell'implementazione. Vi ringrazio in anticipo per l'aiuto. Saluti Pierluca ---------------------------------------- AUTORE: 301 DATA :21/07/2015 - 07:37:13 ---------------------------------------- Ciao, non riesco a vedere i vi, su questo pc mi manca la parte RT e FPGA, ma ti posso dire che vedendo l'immagine, sembra che il segnale non sia distorto, ma acquisito troppo lentamente e la forma d'onda non riesca ad essere ricostruita correttamente. Aris ---------------------------------------- AUTORE: 11069 DATA :21/07/2015 - 11:27:11 ---------------------------------------- Si, grazie. In realtà consultando l'help di Labview ho scoperto che è consigliato di dimensionare il buffer di lettura su host 5 volte tanto il numero di elementi che si vanno a leggere dalla DMA FIFO: con questo accorgimento riesco ad acquisire il segnale correttamente. Grazie per la risposta. Saluti Pierluca ---------------------------------------- ================================================================================ Input sinusoidale simulato per FPGA ================================================================================ AUTORE: 11071 DATA :22/07/2015 - 23:17:01 ---------------------------------------- Ciao a tutti, sono uno studente di ingegneria e sto cominciando a fare esperienza con Labview per sviluppare un progetto che consiste nella programmazione di una cRIO per misurare segnali di tensione e corrente. Se le FPGA si prestano molto bene a certi tipi di algoritmi, hanno anche il grande difetto di rendere il debugging una vera rogna. Ho scoperto da poco che labview mette a disposizione una funzione di debug che consiste nel far girare la VI sul pc e permette di creare gli input ai moduli usati sulla cRIO. Il mio problema e' il seguente: Voglio simulare l'acquisizione di una terna simmetrica di tensioni. Ho provato a leggere sul sito della NI cosa consiglia di fare ma tutto quello che sono riuscito a fare e' creare degli input costanti. Credo che il problema sia il seguente>per simulare l'input Labview fa riferimento a un'altra VI che "apre" ogni volta che deve leggere il modulo(Custom VIs). Questo significa che le mie sinusoidi non riescono ad essere generate perche' partono sempre dallo stesso punto(0,0) Forse non ho capito nulla del problema e sto facendo un buco nell'acqua ma se qualcuno potesse darmi una mano a risolvere questo problema gli sarei grato. ---------------------------------------- AUTORE: 11071 DATA :23/07/2015 - 16:42:38 ---------------------------------------- Vi allego le immagini delle mie VI https://www.dropbox.com/s/nzm5hc5eam41r ... 1.jpg?dl=0 https://www.dropbox.com/s/zh62gingl9ujq ... d.jpg?dl=0 ---------------------------------------- ================================================================================ Lettura multicanale da array tramite DMA FIFO ================================================================================ AUTORE: 11069 DATA :27/07/2015 - 17:37:49 ---------------------------------------- Buonasera, vi scrivo in merito a un problema che ho riscontrato leggendo più segnali tramite la DMA FIFO: in particolare vado a leggere 6 segnali, di cui i primi tre sono di tensione e i restanti sono relativi a correnti. In fase di scrittura, nel VI a bordo di FPGA i 6 canali di acquisizione sono scritti in un array in questo ordine: V1,V2,V3,I1,I2,I3. (I segnali li collego all'array dall'alto verso il basso). Quando sono in lettura mi aspetto che, a seguito della decimazione, ritrovi sui canali (a partire dall'alto verso il basso) i medesimi segnali che ho in scrittura, ma in realtà la V1 corrisponde alla I1, la V2 alla I2 e così via: praticamente i primi tre canali in lettura corrispondo ai secondi tre in scrittura ed i secondi tre in lettura con i primi tre in scrittura. Ho pensato alle caratteristiche della FIFO (primo elemento che entra nella FIFO è il primo che esce) e alle caratteristiche della decimazione e inserimento nell'array in scrittura, tuttavia non mi torna il risultato che ottengo. Vi allego il file dei due VI. Se sapete darmi qualche consiglio ve ne sono grato. Saluti Pierluca ---------------------------------------- AUTORE: 11069 DATA :28/07/2015 - 12:03:52 ---------------------------------------- Salve, ho risolto inserendo un blocco che azzera la FIFO ad ogni abilitazione del VI di lettura: era un problema di lettura della FIFO. Saluti ---------------------------------------- ================================================================================ Lista vi cloni/reentrant in run ================================================================================ AUTORE: 3428 DATA :28/07/2015 - 17:04:51 ---------------------------------------- Salve ragazzi, ho cercato un pò in rete ma non trovo nulla... Ho la necessità di avere sotto controllo dei vi che lancio dinamicamente e che sono cloni/reentrant. Avendo la possibilità di aprire o meno il FP al lancio della vi l'unica idea che mi viene in mente e aprire un reference all'avvio e chiuderlo all'uscita dalla vi e in un ciclo a parte controllare se quel reference è attivo, quindi la vi è in run o inconsistente, quindi la vi non è in run. Tra l'altro con il ref potrei aprire e chiudere il FP a necessità e fare tante altre piccole operazioni.. Ma esiste una vi che mi trova i cloni che sono in run? ---------------------------------------- AUTORE: 301 DATA :29/07/2015 - 07:48:27 ---------------------------------------- Dal ref dei tuoi vi, puoi usare la proprietà "execution state" che ti dice se il vi è in run o meno. Aris ---------------------------------------- AUTORE: 3428 DATA :30/07/2015 - 10:26:23 ---------------------------------------- ok grazie, mi dice se sono in run ma non se sono cloni... ---------------------------------------- AUTORE: 301 DATA :30/07/2015 - 10:55:58 ---------------------------------------- c'è anche la property "is cloneVI"..... Aris ---------------------------------------- AUTORE: 3428 DATA :30/07/2015 - 13:10:45 ---------------------------------------- emmm sorry grazie mille ---------------------------------------- AUTORE: 301 DATA :30/07/2015 - 13:11:49 ---------------------------------------- \":wink:\" De nada! ---------------------------------------- ================================================================================ Compilatore labview per arduino ================================================================================ AUTORE: 482 DATA :29/07/2015 - 15:46:39 ---------------------------------------- ....forse ho trovato una motivazione per installare sul mio pc anche la versione 2014 di labview!! http://sine.ni.com/nips/cds/view/p/nid/213121 ---------------------------------------- AUTORE: 645 DATA :01/08/2015 - 23:50:24 ---------------------------------------- Io uso questo https://www.labviewmakerhub.com/doku.ph ... linx:start e mi trovo bene. ---------------------------------------- AUTORE: 301 DATA :03/08/2015 - 08:01:22 ---------------------------------------- Figata entrambi.....ma diversi! Quello postato da Gepponline, è uno strumento che, una volta scaricato uno skatch (o firmware) sulla scheda, permette la comunicazione tra LV e la scheda, mentre il primo è un vero e proprio compilatore che da permette di creare in LV un programma che gira standalone sulla scheda.... Aris ---------------------------------------- AUTORE: 645 DATA :03/08/2015 - 08:23:55 ---------------------------------------- Credo intendessi il contrario \":D\" Effettivamente il compilatore è più potente, mi pare metta a disposizione funzioni in più. ---------------------------------------- AUTORE: 301 DATA :03/08/2015 - 08:26:09 ---------------------------------------- Taci, và......è il contrario, si...... \":roll:\" Il bisogno di ferie inizia a farsi sentire.... \":lol:\" ---------------------------------------- AUTORE: 645 DATA :03/08/2015 - 09:06:12 ---------------------------------------- \":mrgreen:\" \":mrgreen:\" Mare e LabView sotto l'ombrellone \":lol:\" ---------------------------------------- AUTORE: 482 DATA :18/08/2015 - 07:24:23 ---------------------------------------- Esatto, la differenza è molta. La comunicazione con arduino permette una eventuale prototipazione economica per gestire sensoristica ecc senza dover spendere centinaia o migliaia di euro in schede per le quali si usa magari un decimo delle potenzialità, ma il poter scaricare un programma labview su arduino permette a chi come me se la cava bene con la programmazione labview ma ha un odio viscerale per la programmazione testuale, di avere uno strumento in piu' \":)\" Ovviamente ci sarà d avalutare quali sono i limiti di programmazione, quali funzioni si possono usare e quali no. ---------------------------------------- AUTORE: 3428 DATA :19/04/2016 - 17:55:29 ---------------------------------------- Ciao, vorrei comprare (è da circa un paio d'anni che me lo dico) un arduino, ethernet o USB ancora da decidere, per fare un piccolo programmino di irrigazione giardino e/o orto. Cercando nel forum ho trovato questo topic. Ora la domanda è lecita. Esiste un compilatore FREE che mi compili direttamente il codice fatto in LV direttamente dentro l'arduino in modo che lui possa interpretarlo stand-alone? ---------------------------------------- AUTORE: 482 DATA :20/04/2016 - 07:04:39 ---------------------------------------- direi proprio che la risposta è no \":)\" Io ho trovato solo questo..la versione home eventualmente costa "solo" 92 euro. "There are no functional differences between the Home/Student and Standard Editions. The difference is in the licensing terms. The Home/Student Edition is intended for use on personal, home, or educational projects. The Standard Edition is licensed for use in the professional market. Also, the Home/Student Edition will show a watermark, indicating the license is only allowed for Home or Student use." ---------------------------------------- AUTORE: 3428 DATA :20/04/2016 - 08:42:55 ---------------------------------------- Sartebbe stato troppo bello... Vorrà dire che farò delle prove con il tool free per programamrlo online, poi cercherò di rifarlo con il compilatore di arduino... \":o\" Grazie geppo ---------------------------------------- AUTORE: 482 DATA :20/04/2016 - 15:48:37 ---------------------------------------- cmq se quello che ti serve è il programmino di irrigaione, si fa senza grossi problemi con l'IDE di arduino. La sintassi basta quella di base che si impara con i primi tutorial sul sito ufficiale. Certo..che palle scrivere righe di codice quando si è abituati a tirare fili che è cosi' divertente \":)\" ---------------------------------------- AUTORE: 1308 DATA :07/01/2017 - 19:49:53 ---------------------------------------- Ciao a tutti, durante le feste di Natale mi sono dedicato a vedere come si poteva far interagire LV e Arduino. bella sorpresa quando ho trovato il sito di makerhub. lasciando perdere le cose piu semplici che non mi hanno dato problemi ho voluto provare a compilare questo con LV. \":o\" \":o\" \":o\" \":o\" Voi come tradurreste questo Scratch in LV? [code:1orwhhev]int bit_array[25]; // For storing the data bit. bit_array[0] = data bit 1 (LSB), bit_array[23] = data bit 24 (MSB). unsigned long time_now; // For storing the time when the clock signal is changed from HIGH to LOW (falling edge trigger of data output). int CLOCK_PIN = 2; int DATA_PIN = 3; void setup() { Serial.begin(9600); pinMode(CLOCK_PIN, INPUT); pinMode(DATA_PIN, INPUT); } void loop() { while (digitalRead(CLOCK_PIN) == LOW) {} // If clock is LOW wait until it turns to HIGH time_now = micros(); while (digitalRead(CLOCK_PIN) == HIGH) {} // Wait for the end of the HIGH pulse if ((micros() - time_now) > 500) { // If the HIGH pulse was longer than 500 micros we are at the start of a new bit sequence decode(); //decode the bit sequence } } void decode() { int sign = 1; int i = 0; float value = 0.0; float result = 0.0; bit_array[i] = digitalRead(DATA_PIN); // Store the 1st bit (start bit) which is always 1. while (digitalRead(CLOCK_PIN) == HIGH) {}; for (i = 1; i <= 24; i++) { while (digitalRead(CLOCK_PIN) == LOW) { } // Wait until clock returns to HIGH bit_array[i] = digitalRead(DATA_PIN); while (digitalRead(CLOCK_PIN) == HIGH) {} // Wait until clock returns to LOW } for (i = 0; i <= 24; i++) { // Show the content of the bit array. This is for verification only. Serial.print(bit_array[i]); Serial.print(" "); } Serial.println(); for (i = 1; i <= 20; i++) { // Turning the value in the bit array from binary to decimal. value = value + (pow(2, i-1) * bit_array[i]); } if (bit_array[21] == 1) sign = -1; // Bit 21 is the sign bit. 0 -> +, 1 => - if (bit_array[24] == 1) { // Bit 24 tells the measureing unit (1 -> in, 0 -> mm) result = (value*sign) / 2000.00; Serial.print(result,3); // Print result with 3 decimals Serial.println(" in"); } else { result = (value*sign) / 100.00; Serial.print(result,2); // Print result with 2 decimals Serial.println(" mm"); } delay(1000); } -----------------------[/code:1orwhhev] ---------------------------------------- ================================================================================ Quali vi in debug ================================================================================ AUTORE: 482 DATA :30/07/2015 - 10:22:16 ---------------------------------------- Esiste un modo per trovare tutti i vi che sono impostati in debug mode? ---------------------------------------- AUTORE: 301 DATA :30/07/2015 - 13:15:25 ---------------------------------------- Pare di si...... ma devi usare i Vi scripting.... ---------------------------------------- ================================================================================ Ricampionamento segnale ================================================================================ AUTORE: 3428 DATA :30/07/2015 - 17:19:40 ---------------------------------------- Salve, ho 2 tipi di segnali analogici uno a 25khz e un altro a 50hz. Vorrei salvare tutto in un tdms ma vorrei anche avere lo stesso numero di punti ovvero per 4 secondi di acq. 100k punti per entrambe gli analogici. Esiste qualche vi che fa al caso mio? ---------------------------------------- AUTORE: 301 DATA :31/07/2015 - 19:42:41 ---------------------------------------- scusa la domanda da stupida.....ma perchè?!?!? Ad ogni modo, puoi sfruttare il dt dell'onda per fare un "resample" fittizio dell'onda, in pratica, facendo il rapporto tra i dt delle onde (n/n), ti vai a creare di volta in volta un array di (n/n) valori del segnale a campionamento inferiore, fino ad arrivare allo stesso numero di campionamenti..... Aris ---------------------------------------- AUTORE: 3428 DATA :10/08/2015 - 10:09:06 ---------------------------------------- Un cliente \":evil:\" analizzando i dati su excel vuole tutti i vettori dello stesso numero di campioni.. Grazie ---------------------------------------- ================================================================================ costruzione di un protocollo di comunicazione ================================================================================ AUTORE: 4376 DATA :26/08/2015 - 08:24:03 ---------------------------------------- Ciao a tutti Dovrei cimentarmi (e credo non sia facile per niente), nella costruzione di un protocollo di comunicazione tra labview e un inverter digitale per motori.... Devo leggere valori di corrente e altri dati disponibili. Al momento non ho idea di quale tipo sia l'inverter e che tipo di comunicazione usi se 232, 485 ecc.... Qualcuno ha suggerimenti su come poter imbastire l'inizio??? Grazie a tutti e buon lavoro Davide ---------------------------------------- AUTORE: 482 DATA :26/08/2015 - 10:47:33 ---------------------------------------- Se non ho capito male, non devi costruire un protocollo ma una comunicazione. Il protocollo è già statos celto da chi ha implementato la comunicazione nell'inverter. Giusto? Se è cosi', non puoi fare niente di specifico finchè non hai la descrizione dle protocollo utilizzato dall'inverter. Nel protocollo ci sarà specificato come fare le domande, quali domande puoi fare e come ricevere le risposte. Detto questo, nel frattempo puoi imbastire una sorta di schema a blocchi. Dicendo che non sai se sia 485 o 232, sai comunque che sarà una comunicazione di tipo seriale. Quindi con i blocchi visa, puoi iniziare a creare una fase di configurazione della comunicazione, una fase di scrittura, una di lettura e una di chiusura della comunicazione. Tutto questo, senza bisogno di partire da zero, lo puoi ottenere guardando negli esempi di labview. Dovresti trovare un esempio che si chiama VISA read&Write e altri simili, copiarlo e eliminar ele parti che non ti servono aggiungendo eventuali parti nuove. ---------------------------------------- ================================================================================ XY graph esportare immagine e metterla in un array ================================================================================ AUTORE: 3428 DATA :27/08/2015 - 07:41:03 ---------------------------------------- Ciao, nel mio codice creo diversi XY graph. Ho creato un array di piccoli XY graph, simil miniature, in modo che con il doppio click venga visualizzato il grafico a schermo intero ad alta risoluzione mentre nelle miniature sono in bassa risoluzione. Ad ogni modo sono molto pesanti quindi pensavo di sostituire l'array di XY graph con un array di immagini, snapshot del grafico per poi inserirne 1 ad 1 nell'array. Credo sia più leggero... Ho trovato il get image sull'invoke node dell'XY graph ma me lo fa esportare in un file o nella clipboard. Come faccio ad avere poi un riferimento all'immagine senza salvarla direttamente su disco o come faccio a mettere quello che salvo nella clipboard nell'array? Grazie ---------------------------------------- AUTORE: 301 DATA :31/08/2015 - 09:17:47 ---------------------------------------- Tra le proprietà, trovi anche "get image", che ti ritorna direttamente l'immagine dell'indicatore.... Aris ---------------------------------------- AUTORE: 3428 DATA :31/08/2015 - 17:06:34 ---------------------------------------- Si grazie, trovato. Dal getimage ho un cluster con le informazioni dell'immagine e se la passo a DRAW FLATTENED PIXMAP il gioco è fatto. Grazie ---------------------------------------- ================================================================================ In place con 2D o 3D array ================================================================================ AUTORE: 3428 DATA :10/09/2015 - 08:45:14 ---------------------------------------- Salve, utilizzando l'inplace diverse volte quando si tratta di cluster e array monodimensionali ho provato ad utilizzarli anche con i bidimensionali. Quì il problema, l'index array dell'inplace mi restituisce sempre e solo un elemento e non l'intera riga o colonna del bidimensionale. Come dovrei utilizzare l'inplace con questo tipo di array? Qualcuno li utilizza? Grazie ---------------------------------------- AUTORE: 301 DATA :11/09/2015 - 16:59:03 ---------------------------------------- ciao renaso.... penso che l'unica sia portarti dentro l'array completo e fare le tue operazioni all'interno dell'inplace, per poi riscrivere l'intero puntatore in uscita. Aris ---------------------------------------- AUTORE: 3428 DATA :12/09/2015 - 14:36:46 ---------------------------------------- Grazie Aris, come al solito. Avevo già fatto prove ma non cambia nulla sia a livello di tempistiche, sia a livello di allocazione di memoria (tool--->profile---->show buffer allocation) Il fatto che non si possa fare un semplice index array senza allocare nuova memoria mi scoccia un pò e non riesco a trovare una soluzione diversa per farlo. Dato un array bidimensionale vorrei solamente invertire le righe come nell'esempio o comunque estrarre una riga, lavorare sui dati e rimetterla nel suo posto quindi appunto utilizzando la stessa area di memoria.. ---------------------------------------- AUTORE: 301 DATA :13/09/2015 - 15:43:03 ---------------------------------------- chiaro.... potresti provare con lo "split array" della inplace. Ad ogni modo, se leggi l'help della struttura....."Controls how the LabVIEW compiler performs certain operations and, in some cases, increases memory and VI efficiency." e sottolineo "in some cases".... \":lol:\" \":lol:\" \":lol:\" Aris ---------------------------------------- AUTORE: 43 DATA :14/09/2015 - 09:58:58 ---------------------------------------- Scusate se mi intrometto nella discussione. Nn mi sono chiari i problemi di performance, ma io metterei la inplace dentro un ciclo for .Autoindicizzerei l"array 1D con i dati nuovi emetterei la matrice da aggiornare in uno shift register. Bye ---------------------------------------- AUTORE: 3428 DATA :14/09/2015 - 15:37:39 ---------------------------------------- Grazie Paracarro, io ho un 2D array (righe = canali, colonne = punti) e come dicevo vorrei scambiare prima le posizioni delle righe (mettere quello che ho sulla riga 2 nella 3 e così via...) Se mettessi nei shifter avrei comunque la memoria duplicata... ---------------------------------------- AUTORE: 43 DATA :15/09/2015 - 08:32:05 ---------------------------------------- Beh nn mi è ancora chiarissimo il xkè di tutto ciò,ma,a "sto punto, indicizzerei la matrice evitando di scambiare le righe. Creerei un aray monodim. che abbia tanti elementi quante le righe dellla tabella. Dentro ci metterei gli indici delle righe così qundo devi shiftare i dati in tabella nn lishifti veramente ma shifti gli indici nell aray Bye ---------------------------------------- AUTORE: 3428 DATA :16/09/2015 - 17:21:28 ---------------------------------------- Paracarro, ho a che fare con un array tridimensionale dove le pagine sono 5, le righe sono altrettante 5 e le colonne sono 2 milioni e mezzo di punti. I punti sono tutti dbl quindi ho a che fare con una mole di dati non indifferente! Ogni tanto, non sempre quando faccio l'index array di tale array ho il fatidico popup "Not enough memory to complete this operation", premendo OK la vi di errore è quella che mi fa l'index dell'array, credo proprio per problemi di copie di dati Premetto che non doveva essere così, se l'avessi saputo non avrei mai fatto qualcosa di simile, ed inizialmente il num di punti era "solamente" 500k ma al momento è troppo tardi per cambiare l'intera logica... Cerco qualcosa per ottimizzare senza sventrare più di tanto il codice... ---------------------------------------- AUTORE: 43 DATA :17/09/2015 - 08:48:34 ---------------------------------------- 1- alloca la tua matrice 3d in uno shift reg. (FG). Tutti gli accessi alla matriciona falli dentro la FG in modo che esca sempre e solo una parte e mai completa. 2 - gesrisci una matrice 5x5 x rimappare gli indici di acceso alla matrice 3D ---------------------------------------- AUTORE: 43 DATA :17/09/2015 - 08:54:15 ---------------------------------------- Nn puoi permetterti dispostare i dati. Nn ha senso.ecome se tu volessi memorizzare i file su HD sempre in modo contiguo. I dati logici di un file vengono caricati corretamente anche se questo è fisicamente sparpagliato sul disco Bye ---------------------------------------- AUTORE: 3428 DATA :17/09/2015 - 09:13:17 ---------------------------------------- Allego la FGV. Non utilizzo più le 3 dimensioni in base alla stazione ma ho diviso tutto in 5 shifter reg. I dati escono sempre ritagliati, solo quando richiamo il read. ---------------------------------------- ================================================================================ XNET Write ================================================================================ AUTORE: 2435 DATA :15/09/2015 - 13:47:26 ---------------------------------------- Buongiorno a tutti, sto sviluppando un'applicazione che comunica in CAN bus. Per scrivere in CAN bus uso il XNET Write.vi con la funzione "Frame/CAN" ma qui mi permette(da quel che vedo)di pubblicare solamente 8 byte di messaggio Avrei bisogno di pubblicare un messaggio contenente un playload > 8 byte Sapete se c'è qualche soluzione? Grazie in anticipo Nicola ---------------------------------------- AUTORE: 2435 DATA :16/09/2015 - 10:20:40 ---------------------------------------- la mia domanda non ha senso in quanto per rispetto del protocollo CAN bus questo vi permette di spedire al massimo 8 bytes di messaggio se si vuole quindi spedire messaggi più lunghi si deve utilizzare i pacchetti TP_BAM,che però non trovo esempi esaustivi \":(\" grazie comunque per l'attenzione Nicola ---------------------------------------- ================================================================================ Filtraggio di un segnale ================================================================================ AUTORE: 11020 DATA :17/09/2015 - 08:14:49 ---------------------------------------- Un saluto a tutti, avrei un problema che sto cercando di risolvere. Dal mio cDAQ acquisisco un segnale che mi arriva da un laser. I valori che ricevo oscillano tra 69,14 e 69,22. Vorrei che il valore che io ricevo non oscillasse ma stesse ben stabile. è possibile?! Che tipo di filtro posso usare per ridurre questi spike?! In allegato un immagine del waveform chart che ricevo e del banale pezzo di codice sul quale mi sto focalizzando. [img:2t6l7463]http://i59.tinypic.com/sbn97c.png[/img:2t6l7463] [img:2t6l7463]http://i61.tinypic.com/358uuk4.png[/img:2t6l7463] ---------------------------------------- AUTORE: 482 DATA :18/09/2015 - 07:07:34 ---------------------------------------- il filtro lo devi applicare runtime o a posteriori? La velocità di visualizzazione puo' risentirne o darebbe problemi? ---------------------------------------- ================================================================================ Acquisizione temporizzata 6 canali da DMA FIFO-FPGA ================================================================================ AUTORE: 11069 DATA :17/09/2015 - 12:19:51 ---------------------------------------- Buongiorno, sto lavorando su cRIO 9012 per acquisire 6 canali (corrente e tensione), facendo uso della DMA FIFO (garantisce che non ci sia perdita di campioni dei segnali acquisiti) attraverso la programmazione FPGA Interface: quindi, lato FPGA faccio la lettura dei canali e la loro scrittura all'interno di un DMA FIFO e, in seguito, tramite il VI su Host eseguo la lettura dei canali dalla DMA FIFO. Facendo la scrittura dei canali in FPGA, la temporizzazione, cioè la frequenza con la quale vado a leggere/scrivere dalla DMA, dovrebbe essere la frequenza di lavoro della FPGA. Di conseguenza, sul VI lato Host, quando mi interfaccio con il VI su FPGA, mi sono ricreato una scala temporale con passo di campionamento pari alla frequenza della FPGA. Usando questa scala temporale, abbinata con i campioni acquisiti, la frequenza dei segnali acquisiti non mi risulta essere corretta, per questo motivo non so se la ricostruzione dell'asse temporale che faccio su Host sia esatta. Qualcuno può darmi una mano ? Ho visto che ci sono vari strumenti per la temporizzazione, tipo cicli temporizzati, tuttavia penso che questa sia una soluzione valida quando programmo in modalità Scan Interface e quindi senza passare dalla FPGA ma gestendo solamente la comunicazione dei moduli del cRIO. Nel caso di programmazione tramite FPGA Interface, penso si debba per forza di cose partire dalla frequenza di lavoro della FPGA. Qualcuno sa dirmi dei metodi validi per gestire la temporizzazione (ricreare la temporizzazione) in modalità FPGA Interface? Vi allego il progetto con i VI lato FPGA e lato HOST. Vi ringrazio per la disponibilità e per l'aiuto. Saluti Pierluca ---------------------------------------- AUTORE: 482 DATA :18/09/2015 - 07:05:35 ---------------------------------------- ....fai una prova. Nel vi FPGA salvati in una variabile di scambio il periodo di acquisizione (calcolandolo nel ciclo tramite i vari timer) e poi nell'host, usi quel valore per ricostruire la scala dei tempi. Perchè tu parli di frequenza di acquisizione uguale alla frequenza di lavoro dell'FPGA, ma se nel VI ci hai messo troppa roba, e nessuna temporizzazione, puo' essere che quella frequenza non venga rispettata. ---------------------------------------- ================================================================================ Temporizzare serie di LED ================================================================================ AUTORE: 11078 DATA :21/09/2015 - 13:44:06 ---------------------------------------- Ciao a tutti, sono nuovo sul forum e anche su LV. Il mio scopo è accendere in sequenza una fila di 3 LED impostando un tempo di accensione di ciascun LED (costante per tutti i LED) e un intervallo tra lo spegnimento di un LED e l'accensione di quello successivo (pure costante, ma diverso dal tempo di accensione). Il tutto eseguito un numero N di volte. Io sono riuscito a risolvere il problema utilizzando un case in modo un po "improprio", quindi il programma funziona correttamente ma è poco elegante. Vorrei chiedervi qualche consiglio brillante su come migliorare/ottimizzare il codice allegato considerando che poi la fila di LED sarà un po più lunga, e comunque di lunghezza arbitraria. Grazie mille a tutti \":D\" ---------------------------------------- AUTORE: 301 DATA :21/09/2015 - 14:36:25 ---------------------------------------- Benvenuto, non so esattamente lo scopo di cio che devi fare, ma un'idea puo essere quella che ti allego. Se non sai quanti saranno i led, ti conviene crearti un array (di led, appunto). Per quanto riguarda il valore che assumerà la tua "striscia" di led, potresti crearti un altro array con tempo di mantenimento e valore. Vedi se ti torna. Aris ---------------------------------------- AUTORE: 11078 DATA :22/09/2015 - 09:07:32 ---------------------------------------- Ok grazie mille! in effetti così è molto più elegante, non capisco bene il significato della colonna Valore.. ma funziona! Il mio scopo è pilotaer l'accensione e spegnimento di led su una scheda, come posso inserire i comandi del DAQmx? Grazie mille ancora \":)\" ---------------------------------------- AUTORE: 301 DATA :22/09/2015 - 09:25:26 ---------------------------------------- il valore è semplicemente un numero decimale che trasformo in digitale per accendere il led che voglio. con quello, puoi scrivere direttamente su una porta digitale di una scheda tramite le librerie del daqmx. Aris ---------------------------------------- ================================================================================ Gestione errori tra due cicli paralleli ================================================================================ AUTORE: 11076 DATA :27/09/2015 - 16:08:42 ---------------------------------------- Salve a tutti , sto realizzando in VI , in cui il design pattern prevede due cicli paralleli indipendenti , che condividono tra loro solo l'apertura e la chiusura del canale di comunicazione. Il mio problema è la gestione degli errori di uscita dai cicli , perchè pur usando una funzione MERGE ERROR, per unire gli errori da tirare fuori verso l'uscita , questa funzione fà si che: [b:3f2pe9q6] l'errore visualizzato in uscita sia solo il primo tra i due , io invece [b]volevo prevedere di riportare in uscita entrambi gli errori[/b:3f2pe9q6].[/b] per cui [b:3f2pe9q6]ho uniti i due errori con una funzione Bundle (Cluster)[/b:3f2pe9q6] ma come potete immaginare in uscita ottengo una cluster di tipo stringa, che permette di visualizzare contemporaneamente entrambi gli errori , ma perde la caratteristica di essere un ERRORE poichè diventa una stringa. Avete magari qualche soluzione più adatta ?? grazie ---------------------------------------- AUTORE: 301 DATA :29/09/2015 - 07:08:15 ---------------------------------------- La via piu diretta per raccogliere tutti gli errori in uscita è crearne un array. In questo modo puoi avere la lista di tutti gli errori relativi ad ogni tuo ciclo. Altrimenti devi studiarti una gestioni degli errori piu articolata. Aris ---------------------------------------- ================================================================================ lettura di più file txt tramite ciclo while ================================================================================ AUTORE: 11082 DATA :09/10/2015 - 18:37:15 ---------------------------------------- ciao chiedo aiuto a voi. tramite un ciclo while volevo leggere alcuni file txt organizzati in due colonne, aiutandomi con la funzione read delimited to spreadsheet. tuttavia se esamino separatamente i file txt riesco,se inserisco il ciclo while no.il programma mi dice che il mio path è sbagliato. sono alle prime armi,perdonate la banalità.vi allego il mio file. ---------------------------------------- AUTORE: 482 DATA :12/10/2015 - 07:08:28 ---------------------------------------- riesci a salvarlo in versione 2012? ---------------------------------------- AUTORE: 11082 DATA :12/10/2015 - 18:31:40 ---------------------------------------- adesso ho inserito il file salvato tramite la versione 12. ---------------------------------------- AUTORE: 482 DATA :13/10/2015 - 07:20:08 ---------------------------------------- Prova a postare anche due file da leggere di esempio. Debuggando cosi' sembra funzionare,l'unica cosa grossolana che vedo è che nella conversione da numero a stringa della i del ciclo while, hai messo come lunghezza del campo 0, quindi mi aspetterei che non restituisse niente, invece restituisce il numero corretto. Sembrerebbe che quel parametro aggiunga solo caratteri vuoti in caso la lunghezza richiesta sia superiore alle cifre. La width, nel caso dei numeri interi, non sono le cifre decimali, ma le cifre totali del numero. Prova a non collegare quello 0 Altra cosa che proverei, anzichè usare un path scritto in una costante stringa per poi convertire il tutto, creerei il nome del file, in una stringa e poi utilizzerei il build path Geppo! ---------------------------------------- AUTORE: 11082 DATA :13/10/2015 - 12:29:35 ---------------------------------------- Grazie mille. Ma il programma continua a non funzionare. Se ho più file txt da leggere mi dice che il path non è corretto. Se li esamino separatamente omettendo il ciclo riesce a leggerli. ---------------------------------------- AUTORE: 482 DATA :13/10/2015 - 16:09:31 ---------------------------------------- ripeto, posta dei file di esempio. Nel mentre fai un bel debug con la lampadina accesa e un probe sul percorso del file in modo da verificare quando avviene l'errore, che file sta analizzando. ---------------------------------------- AUTORE: 11082 DATA :13/10/2015 - 19:34:41 ---------------------------------------- spero che questo file riesca ad aprirsi ---------------------------------------- AUTORE: 11082 DATA :13/10/2015 - 19:36:26 ---------------------------------------- ecco alcuni file txt con cui ho fatto girare il programma ---------------------------------------- AUTORE: 482 DATA :14/10/2015 - 08:02:48 ---------------------------------------- purtroppo il vi l'hai slavato in versione 14 e io ho sempre la 12 \":)\" ---------------------------------------- AUTORE: 482 DATA :14/10/2015 - 08:11:11 ---------------------------------------- Noto 2 cose: 1) i file di esempio che mi hai mandato sono 1 e 2. Mentre nel tuo vi parti da 0, quindi a meno che tu non abbia un file 0, riceverai subito un errore. 2) Il ciclo while aspetta uno stop manuale, quindi andrà in errore appena avrà finito i file a disposizione. Ti allego uno snippet (è un immagine che se la trascini nel block diagram diventa codice labview) di come lo farei ipotizzando che nella cartella ci siano solo i file che mi interessano. ---------------------------------------- ================================================================================ Problema con subvi! ================================================================================ AUTORE: 10964 DATA :10/10/2015 - 15:34:05 ---------------------------------------- ciao a tutti, stavo provando a fare un piccolo programmino di test per cercare di capire il perchè non riesco ad avere, in real time, i dati aggiornati da un subvi! Mi spiego meglio, nel vi dal nome "testone" è presente il, passatemi il termine, main. è un semplice ciclo while con 1 led collegato ad un subvi. Questo subvi, dal nome testttt, fa lampeggiare un led ogni 500ms. Il problema è che se eseguo il main, il led non lampeggia, ma mentre il main è in esecuzione, se apro il subvi questo funziona perfettamente!!! perchè?? Sto facendo un programma abbastanza più complesso con il modulo VISA, e siccome mi serve sapere quando il canale è impegnato in una comunicazione stavo usando un pin del subvi dal nome Busy...ma riscontro questo rpoblema, nel subvi si aggiorna nel vi no! questo che ho pubblicato è per farvi capire, almeno credo, il problema che ho... attendo, con ansia, un vostro prezioso consiglio! ---------------------------------------- AUTORE: 482 DATA :12/10/2015 - 07:11:59 ---------------------------------------- Non posso aprire il VI perchè uso la versione 2012. Le prime due cose che mi vengono in mente: 1) non hai collegato il LED in uscita dal tuo subVI al led sul main 2) Il subvi ha un ciclo da cui non esce mai, quindi lui esegue correttamente ma non passa mai l'uscita al main. Geppo! ---------------------------------------- AUTORE: 301 DATA :12/10/2015 - 07:12:30 ---------------------------------------- Buongiorno! Il "problema" che riscontri è dovuto al fatto che del subvi effettui una lettura solo dopo che è stato eseguito! (come è normale che avvenga) Ora, il lampeggio del led, all'interno del subvi, avviene durante la SUA esecuzione, di conseguenza all'esterno vedi sempre il led spento. La soluzione, per quello che vuoi fare tu, puo essere o portare il codice del subvi nel main oppure far si che il subvi inverta (ad ogni esecuzione) lo stato del led, in modo da avere il lampeggio. Aris ---------------------------------------- AUTORE: 10964 DATA :12/10/2015 - 10:26:45 ---------------------------------------- risolto con l'utilizzo dei reference ---------------------------------------- ================================================================================ Salvataggio dati in un file TDMS sul proprio computer ================================================================================ AUTORE: 11069 DATA :13/10/2015 - 09:45:32 ---------------------------------------- Buongiorno, ho un problema riguardo il salvataggio di segnali in un file TDMS con directory situata sul mio PC: in particolare vorrei che la Default Data Directory fosse il Desktop del mio PC e per fare questo apro l'icona corrispondente alla Default Data Directoy scrivo corrispondente al Desktop del mio PC ma quando chiudo la finestra non mi rimane in memoria: per fare questo sono "costretto" a modificare in basso al VI lato Host mettendo il progetto non su cRIO ma su MyComputer. Il problema è che quando lancio il VI crea il file correttamente ma compare questo errore "-63192", source: niLvFpga_Open_cRIO-9101.vi che mi impedisce di proseguire. Come è possibile quindi salvare i dati sul mio pc facendo in modo che non debba cambiare il riferimento del progetto da cRIO a My computer? Vi allego il VI lato HOST. Vi ringrazio per la disponibilità Cordiali Saluti Pierluca ---------------------------------------- AUTORE: 11068 DATA :04/11/2015 - 12:55:03 ---------------------------------------- Ciao, anche io ho il tuo stesso problema. Non riesco a salvare i file sul computer se il VI è residente sul compactRIO Tu sei riuscito a risolvere? ---------------------------------------- ================================================================================ primo programma in labview ================================================================================ AUTORE: 11083 DATA :14/10/2015 - 08:54:52 ---------------------------------------- Salve a tutti mi sono appena iscritto. Sto muovendo i primi passi nel mondo di LabView e sto già incontrando i primi dubbi. Sto cercando in particolare di realizzare un contasecondi. Nel front panel ho posto un toggle switch(Start/Resume e Pause), un pulsante di stop ed un indicatore del tempo trascorso. La logica nel block diagram riesco a farla funzionare solo nel caso di assenza di Pause/Resume collegando il counter di un loop all'indicatore numerico. Ma volendo poter mettere in pausa e riprendere il conteggio dei secondi a piacimento da front panel sapreste darmi qualche consiglio su come implementare la logica? Grazie in anticipo Tyrion_ ---------------------------------------- AUTORE: 4254 DATA :14/10/2015 - 12:45:35 ---------------------------------------- Se posso darti un suggerimento da utente alle prime armi forse è meglio che alleghi il tuo file e dici quale versione stai utilizzando di Labview \"8)\" ---------------------------------------- AUTORE: 301 DATA :15/10/2015 - 06:50:21 ---------------------------------------- Le implementazioni dei timer possono essere le piu svariate. per rispondere alla tua domanda, tu fai un semplice conteggio, mentre per fare quello che vuoi devi "incrementare" il valore del tempo (ti allego un esempio). P.S. se posso darti un consiglio, se devi contare un tempo, lascia stare il numero di iterazioni..... Aris ---------------------------------------- AUTORE: 11083 DATA :15/10/2015 - 09:03:05 ---------------------------------------- Gentilissimo per la risposta! Si anche io avevo risolto in un modo simile ma la tua versione sembra molto interessante! Grazie Tyrion_ ---------------------------------------- ================================================================================ I2C su FPGA sbrio 9636 ================================================================================ AUTORE: 674 DATA :19/10/2015 - 18:29:25 ---------------------------------------- Salve a tutti, vorrei sapere se a qualcuno di voi è mai capitato di dover sviluppare un software di acquisizione dati sfruttando schede di terze parti le quali possono trasferire il dato acquisito tramite protocollo I2C. Ho una scheda sbrio 9636 e vorrei usare 2 digitali di I/O sul connettore J502 per acquisire i dati attraverso I2C sfruttando la velocità dell'FPGA. Primo problema: quali resistenze di pull up devo prevedere fra i 2 digitali ( SCL e SDA ) e la tensione di alimentazione che sarà di 3,3 volt ? Pensavo a delle resistenze da 3,3Khom ? Penso male ? Qualcuno ha lo schema elettrico dei Digital I/O della sbrio ? Perchè sul manuale National non si capisce bene come siano configurati gli stadi di I/O delle uscite/ingressi digitali. Secondo voi 3,3 khom sono sufficenti per non danneggiare la scheda ? Ringrazio in anticipo chi mi darà un aiuto Saluti Whisky ---------------------------------------- ================================================================================ matrici e sottomatrici ================================================================================ AUTORE: 11085 DATA :20/10/2015 - 14:05:16 ---------------------------------------- Buongiorno, da pochissimo ho iniziato ad usare labview e ho un problema io ho una array 2d 8*1 che viene acquisito ad ogni scansione di un sensore di temperatura, per cui nel front panel di volta in volta mi mette gli otto valori ora io faccio 25 scansioni totali, che rappresentano tutti i miei valori per cui otterrei una 25*8; da questa maxi matrice 25*8 devo prenderne delle sottomatrici 5*8 per cui 5 in tutto e devo graficarle spero di essere stata chiara ---------------------------------------- AUTORE: 10 DATA :20/10/2015 - 16:53:44 ---------------------------------------- Adesso sì che ci siamo. Di nuovo benvenuta nel forum. Ci sono 1000 modi per fare quello che dici tu. Il primo che mi viene in mente te lo allego qui sotto. è già commentato e non dovresti aver problemi. CIAO! ---------------------------------------- ================================================================================ TrayTip con LV ================================================================================ AUTORE: 11084 DATA :26/10/2015 - 15:40:06 ---------------------------------------- Ciao a tutti, avete idea di come fare per realizzare in LV una TrayTip come questa?? http://yashied.ru/ProjectFiles/Miscellaneous/AITray.png Sarebbe molto utile \":)\") GRAZIE ---------------------------------------- AUTORE: 645 DATA :28/10/2015 - 21:00:47 ---------------------------------------- Forse partendo da https://decibel.ni.com/content/docs/DOC-10683 o http://forums.ni.com/t5/LabVIEW/Minimiz ... -p/1886613 ---------------------------------------- ================================================================================ Eseguibile con parametri ================================================================================ AUTORE: 482 DATA :28/10/2015 - 08:21:10 ---------------------------------------- ...ma ciao! ...mi domandavo... E' possibile lanciare da prompt dei comandi un eseguibile labview passandogli dei parametri? Se si, come faccio poi a prendere questi aprametri all'interno del programma? Geppo! ---------------------------------------- AUTORE: 301 DATA :28/10/2015 - 10:36:41 ---------------------------------------- hai provato a dare un'occhiata a questo?!?! [url:3kv5uj5p]http://digital.ni.com/public.nsf/allkb/17C3AD70493CE0208625666A00763364[/url:3kv5uj5p] Aris ---------------------------------------- AUTORE: 482 DATA :30/10/2015 - 07:22:51 ---------------------------------------- Arguments cazzo!! non parameters! \":)\" ecco perchè non trovavo niente \":)\" Grazie mille! ---------------------------------------- ================================================================================ matrice dinamica e subarray ================================================================================ AUTORE: 11085 DATA :28/10/2015 - 13:58:50 ---------------------------------------- eseguo delle scansioni con un sensore; una scansione completa sono 25 righe( numero di scansioni per un giro completo) * 8 colonne (valori di temperatura di ogni singola scansione) alla successiva scansione completa mi appende sotto le altre 25 righe e così via per cui la formazione di questa matrice è dimanica la matrice si allunga via via con le scansioni successive; io vorrei prendere le 25 righe e dividerle in matrici 5*8( quindi ho 5 subarray)quindi ad ogni scansione plottarmi sul front panel le 5 matrici, poi vorrei che la seconda scansione completa divisa in 5 matrici 5*8 anch'essa si riposizionasse sugli stessi subarray per cui il 6 (che corrisponde al primo della seconda scansione venisse trascritto sul primo della prima scansione e così via ) vi chiedo se esiste un modo che mi permette di fare questo comando grazie ---------------------------------------- ================================================================================ Variabili globali ================================================================================ AUTORE: 11082 DATA :29/10/2015 - 21:08:51 ---------------------------------------- Ho definito nella mia VI una variabile globale legata ad un grafico. Non riesco a leggere tale variabile in un'altra VI che usa come subVI quella in cui precedentemente ho definito la variabile globale. Potete aiutarmi? ---------------------------------------- AUTORE: 482 DATA :30/10/2015 - 07:01:41 ---------------------------------------- moooooooolto...trooooppo generico. Prova a postare un esempio isolando il tuo problema. ---------------------------------------- AUTORE: 482 DATA :30/10/2015 - 07:24:09 ---------------------------------------- Ti torna che vede sempre come primo argomento il nome dell'eseguibile? ---------------------------------------- AUTORE: 43 DATA :02/11/2015 - 09:12:34 ---------------------------------------- [quote="aldo ceci":uy3tw6id]Ho definito nella mia VI una variabile globale legata ad un grafico. Non riesco a leggere tale variabile in un'altra VI che usa come subVI quella in cui precedentemente ho definito la variabile globale. Potete aiutarmi?[/quote:uy3tw6id] Beh !Se 2 VI usano la stessa variabile Globale (stesso file .vi AND stesso nome univoco della variabile AND entrambi aperti e running in ambiente di sviluppo (sorgente , no .exe), se queste condizioni sono vere, i 2VI DEVONO VEDERE LA STESSA GLOBALE Se dei 2 VI ALMENO 1 è stato "build-ato" in un EXE., beh! è ovvio... ogni VI vede una globale diversa... Se vuoi scambiare dati fra 2 applicazioni (EXE) non usare le globali... bye ---------------------------------------- ================================================================================ operazioni su grafici ================================================================================ AUTORE: 11085 DATA :30/10/2015 - 15:52:39 ---------------------------------------- Ciao a tutti , ho un array che viene riempito continuamente di nuove righe io vorrei prenderne 25 righe alla volta e vorrei che le singole righe che formano la matrice si mettessero nell'intensity chart (penso che sia opportuno usare tale graph) che vorrei quindi fosse una griglia 25*8; il mio problema p che vine invece plottato aggiungendo gli 8*1 in successione come su una linea del tempo e non una sotto l'altro c'è qualcuno che potrebbe aiutarmi? grazie ---------------------------------------- AUTORE: 43 DATA :02/11/2015 - 09:00:24 ---------------------------------------- Usa Graph al posto di Chart. Nei chart i dati vengono accumulati fino a riempire l'history buffer. Poi, al successivo inserimento, vengono persi i dati + vecchi. Nei Graph si inseriscono tutti i dati che si vogliono visualizzare in una volta sola. Con i Graph si possono usare anche i cursori... Nell'Help di LabVIEW queste cose sono ben descritte Richiama l'Help di LabVIEW clickando nella menu bar [Help] --> [LabVIEW Help...] oppure premendo la combinazione di tasti Ctrl+? [attachment=0:2qbwgp1i]HelpGraphChart.png[/attachment:2qbwgp1i] bye ---------------------------------------- ================================================================================ operazioni con array ================================================================================ AUTORE: 11085 DATA :02/11/2015 - 16:57:49 ---------------------------------------- Salve a tutti vi pongo un quesito sperando che qualcuno mi possa dare una mano (e vi ringrazio in anticipo) io ho un array 8*1 valori che dinamicamente mi viene aggiornato, vorrei che di volta in volta ognuno di questi 8 valori mi venisse confrontato con il valore medio di tali otto valori; se all'interno dell'array 8*1 c'è un valore minore di 2 unità rispetto al valore medio quel valore venisse sostituito con il valor medio grazie! ---------------------------------------- AUTORE: 482 DATA :03/11/2015 - 07:02:34 ---------------------------------------- ...ma ciao...beh direi che è semplice semplice Senza utilizzare blocchetti particolari: 1) mandi l'array al blocchetto "add array elements" che trovi nella paletta Numbers 2) mandi l'array la blocchetto "array size" che trovi nella palette array. Dividi 1)/2) cosi' hai la tua media. dopodichè mandi l'array in un for cosi' che l'autoindexing ti restituisca di volta in volta il singolo valore dell'array. Lo confronti col valore medio ottenuto e in base a quello, colleghi il vecchio valore o la media all'uscita del for che con l'autoindexing ti ricostruirà l'array. Allego uno snippet (un immagine che se la trascini nel front panel ti crea il codice) ---------------------------------------- ================================================================================ Visualizzazione Logic Analyzer like. by an absolute beginner ================================================================================ AUTORE: 11087 DATA :06/11/2015 - 13:19:45 ---------------------------------------- [attachment=0:2a9k9ds4]immagine2.gif[/attachment:2a9k9ds4]Buongiorno, premessa necessaria: principiante assoluto! Avrei bisogno di visualizzare delle forme d'onda come se fossero su un analizzatore di stati logici. Avrei bisogno di un Vi il più semplice ed efficace (in termini di memoria) possibile Con riferimento alla figura allegata: stream logic analyzer vanno visualizzate degli impulsi digitali di cui si conosce: il pulse repetition time t_prt la durata del livello alto del prt l'inizio e la durata del livello alto degli altri segnali (almeno tre) il prt è comune a tutti e perciò la ripetizione degli impulsi è uguale per tutti il livello dei segnali è solo 0 o 1 L'asse x può essere espresso in tempo oppure in "passi" "campioni" ecc... i Valori d'ingresso noti possono assumere solo valori interi, 1,2 ...N Non vorrei che il grafico sia la risultante di un array di vettori (se ciò è possibile) perchè, supponendo che N fosse 1.000.000 è inutile memorizzare tutti i punti, basta sapere solo in quale momento il segnale va alto rispetto al PRT e quando torna basso sempre rispetto al PRT. Ad esempio, se appunto N fosse 1.000.000 basterebbe sapere che t1_S1 vale p.es. 100 , t2_S1 vale 200 e che il prt=N e "unire" graficamente questi punti; perciò basterebbe memorizzare solo N, t1_S1, t2_S1 nel caso di S1. Spero di essermi spiegato! Sarebbe "bello" anche che i segnali potessero essere colorati in modo diverso come in figura. Grazie a chi volesse aiutarmi! ---------------------------------------- AUTORE: 43 DATA :06/11/2015 - 15:10:43 ---------------------------------------- [quote="protect":3a8ff5s0]... [b:3a8ff5s0]Avrei bisogno [/b:3a8ff5s0]di visualizzare delle forme d'onda come se fossero su un analizzatore di stati logici. [b:3a8ff5s0]Avrei bisogno[/b:3a8ff5s0] di un Vi il più semplice ed efficace (in termini di memoria) possibile... ...Spero di essermi spiegato! Sarebbe "bello" anche che i segnali potessero essere colorati in modo diverso come in figura. Grazie a chi volesse aiutarmi![/quote:3a8ff5s0] Avrei bisogno di uno stipendio + alto. Grazie a chi volesse aiutarmi. Sfacciataggine a parte, sarebbe "bello" sapere se questo VI è una esercitazione scolastica,(universitaria o meno) oppure se si tratta di un lavoro all'interno di una attivita di ricerca (specificare il contesto) o se è un'attività legata ad un hobby, ecc. bye ---------------------------------------- AUTORE: 11087 DATA :06/11/2015 - 18:13:09 ---------------------------------------- [quote="paracarro":3j33ybvp][quote="protect":3j33ybvp]... [b:3j33ybvp]Avrei bisogno [/b:3j33ybvp] ...Spero di essermi spiegato! ... Sfacciataggine a parte, sarebbe "bello" sapere se questo VI è una esercitazione scolastica,(universitaria o meno) oppure se si tratta di un lavoro all'interno di una attivita di ricerca (specificare il contesto) o se è un'attività legata ad un hobby, ecc. bye[/quote:3j33ybvp][/quote:3j33ybvp] Buonasera Paracarro, a quanto pare "non mi sono spiegato" o per meglio dire, mi sono espresso male. Ho scritto tutto veramente di fretta, io volevo solo intendere dire che spero di aver spiegato bene cosa potesse servirmi. Spiegare tutto il contesto credo avrebbe solamente "appesantito" il discorso e reso ancora più noiosa e prolissa la mia nota. Brevemente: L'attività è relativa ad una mio personale hobby, e la sequenza degli impulsi servirà a dare dei comandi in output, per esempio ad una serie di LED (quella in figura è solamente un esempio e non necessariamente sarà la sequenza finale). Per quanto riguarda l'hardware non ho problemi, posso realizzare l'output fisico tramite una FPGA o un circuito con discreti e l'interfaccia di comunicazione potrebbe essere via ethernet, seriale, pci ecc... Invece col SW ho qualche difficoltà, probabilmente riuscirei a farlo seguendo e modificando esempi già esistenti, ma probabilmente userei un codice mostruoso per fare un qualcosa altrimenti fattibile in modo più semplice. Pro. P.S.: Mi spiace molto per te, ma per il tuo stipendio non posso fare nulla, per ora! ... però, mai dire mai! ---------------------------------------- AUTORE: 11087 DATA :07/11/2015 - 00:46:54 ---------------------------------------- Ecco il mostro che ho partorito in allegato. Quasi il risultato che volevo, a parte il grafico così così \":-(\" ---------------------------------------- ================================================================================ Driver Wizard ================================================================================ AUTORE: 7113 DATA :09/11/2015 - 11:33:07 ---------------------------------------- Ciao a tutti non molta esperienza dell'argomento spero che qualcuno mi possa chiarire le idee. Ho fatto con "Driver Wizard" un driver per comunicare attraverso l'USB con un PIC 18F4550, il tutto sembra funzionare però quando cerco di istallare il file .inf il sistemo operativo mi dice che non è un driver firmato e che lo devo istallare come amministratore. Come si deve fare per fare un driver firmato? grazie ---------------------------------------- ================================================================================ error ================================================================================ AUTORE: 7113 DATA :12/11/2015 - 15:20:39 ---------------------------------------- Qualcuno mi sa spiegare questo errore ? Error -1 occurred at CDK_Utility_GenerateErrorCluster.vi -> IB_Source_Container.lvclass:Report_Preview_Error.vi This error code is undefined. Undefined errors might occur for a number of reasons. For example, no one has provided a description for the code, or you might have wired a number that is not an error code to the error code input. Additionally, undefined error codes might occur because the error relates to a third-party object, such as the operating system or ActiveX. For these third-party errors, you might be able to obtain a description of the error by searching the Web for the error code (-1) or for its hexadecimal representation (0xFFFFFFFF). Grazie ---------------------------------------- AUTORE: 301 DATA :13/11/2015 - 09:56:16 ---------------------------------------- Certamente! la spegazione è che This error code is undefined. Undefined errors might occur for a number of reasons. For example, no one has provided a description for the code, or you might have wired a number that is not an error code to the error code input. Additionally, undefined error codes might occur because the error relates to a third-party object, such as the operating system or ActiveX. For these third-party errors, you might be able to obtain a description of the error by searching the Web for the error code (-1) or for its hexadecimal representation (0xFFFFFFFF). essendo un errore "non definito", senza un codice da vedere.....cosa ti aspetti?!?! Mi sembra di capire che tu stia cercando di creare un report, ma senza un esempio del codice che ti restituisce l'errore, non aspettarti troppe risposte. Aris ---------------------------------------- AUTORE: 645 DATA :22/11/2015 - 11:59:19 ---------------------------------------- Posta una schermata del codice così possiamo capirne di più! ---------------------------------------- ================================================================================ Acquisizione di un segnale ad un determinato input ================================================================================ AUTORE: 11062 DATA :03/12/2015 - 11:03:38 ---------------------------------------- Salve sono uno studente di Ingegneria Elettronica e sto effettuando un lavoro di tesi sulla BCI. Volevo chiedervi un aiuto su un problema che mi affligge. Ho costruito una matrice di frecce tramite cluster in modo che lampeggino in maniera casuale. Adesso devo far partire l'acquisizione di un segnale esterno ad ogni illuminazione della freccia. E' possibile riuscirci con la disposizione da me creata? Allego in fondo il file compatibile con labview 2013 ---------------------------------------- ================================================================================ chiamare dinamicamente subVi reentrant da un eseguibile ================================================================================ AUTORE: 3941 DATA :03/12/2015 - 12:54:38 ---------------------------------------- Salve Vorrei chiamare dinamicamente una subVi reentrant da un eseguibile che la incorpora. Mi spiego meglio; ho un programma che chiama dinamicamente una subVi reentrant. Costruisco l'eseguibile incorporando anche tale subVi. Il mio problema è che lanciando l'eseguibile essa non la chiama. Potete darmi una soluzione? Grazie ---------------------------------------- AUTORE: 301 DATA :03/12/2015 - 15:26:47 ---------------------------------------- Molto probabilmente il problema sta nella path di chiamata del vi. Prova a fare delle verifiche, visualizzando sul fp del vi il proprio path. Provalo sia in sviluppo che buildato. Aris ---------------------------------------- AUTORE: 3941 DATA :04/12/2015 - 10:16:12 ---------------------------------------- Ti ringrazio per aver risposto. Il problema era dovuto non alla chiamata della vi ma al fatto che avevo labview aperto e mi teneva bloccate le seriali e per questo l'eseguibile non poteva inizializzare. Wuindi l'errore propagandosi non faceva funzionare nulla. ---------------------------------------- ================================================================================ Invisibili ================================================================================ AUTORE: 11093 DATA :06/12/2015 - 13:45:23 ---------------------------------------- Sono nuovo di labview, io vorrei mettere un numero x di indicatori e renderli invisibile, per poi renderli visibili man mano che serve? ---------------------------------------- AUTORE: 3428 DATA :07/12/2015 - 14:38:22 ---------------------------------------- ciao e benvenuto. il metodo più veloce è il property node dell'oggetto. -click sx sull'indicatore dal block diagram -create -propery node -visible click sx sull'oggetto creato "change all to write" e setti una costante True o False quando ti serve.. ciao ---------------------------------------- ================================================================================ Minimize exe da labvew ================================================================================ AUTORE: 3428 DATA :07/12/2015 - 14:22:08 ---------------------------------------- Ciao, ho la necessita di avviare un EXE esterno a labview e di metterlo subito ad icona. Aimè non trovo il comando adatto da linea di comando in labview. Attualmente lancio l'exe dando al prompt: cmd /x /c start "%s" "%s" dove ovviamente al posto di %s metto il path assoluto dell'exe, con tanto di estensione .exe Funziona. Il mio problema è che devo lanciare questo exe all'avvio del mio programma e quindi mi ritrovo che questo exe sovrasta il mio. Strano è che non mi funziona neanche il IS FRONTMOST messo a TRUE del mio vi MAIN che era la mia prima soluzione veloce per ovviare al problema... Avete qualche idea per minimizzare il processo exe esterno all'avvio (intendo sulla taskbar di windows e non in background) oppure far funzionare il mio vi frontmost? Grazie ---------------------------------------- AUTORE: 301 DATA :09/12/2015 - 07:49:42 ---------------------------------------- giorno! Hai provato ad aggiungere /min? cmd /x /c start/min "%s" "%s" Aris ---------------------------------------- AUTORE: 3428 DATA :09/12/2015 - 10:30:38 ---------------------------------------- Ciao Aris, si dai comandi che avevo trovato in rete è quello giusto. Addirittura avevo provato come mi consigli tu e anche con /MIN ma non funzionano entrambe... Non vorrei che in win7 64bit qualche comando sia diverso ma non ho trovato nulla a rigurardo, anzi conferme solo di /MIN. Cercavo in caso qualcosa che mi facesse andare ad icona una volta in run invece di mandarlo in run direttamente minimizzato ma nada... ---------------------------------------- AUTORE: 301 DATA :09/12/2015 - 10:37:37 ---------------------------------------- mah......a me, (win7 64 bit) funziona..... Ho fatto una prova con il notepad... cmd /x /c start/min notepad.exe ---------------------------------------- AUTORE: 3428 DATA :09/12/2015 - 11:09:36 ---------------------------------------- La tua stessa stringa mi funziona.. Aimè l'exe ha una finestra iniziale di caricamento (classico screen che fa vedere che si inizializza) poi terminata questa viene in front most quella che vorrei mettere a icona... Quindi non so se il comando non funziona per questo motivo... ---------------------------------------- AUTORE: 482 DATA :09/12/2015 - 11:31:29 ---------------------------------------- Ma quindi il tuo eseguibile esterno ha la possibilità di essere minimizzato? In alternativa hai preso in considerazione di far partire il tuo vi di labview successivamente? Tipo che il tuo programma potrebbe essere composto d aun doppio exe. Uno che è la tua applicazione ma uno principale che lancia prima l'eseguibile esterno e poi temmporizzando la cosa, lancia la tua applicazione... ---------------------------------------- AUTORE: 3428 DATA :09/12/2015 - 11:45:44 ---------------------------------------- Ciao Gepponline, si come dicevo sul primo post visto che non mi funzionava il minimize ho provato a dare la propietà IS frontmost al mio main a True, solo alla prima chiamata (e sono certo che lo chiamo quando l'exe esterno è ormai chiudibile a icona, quindi ha finito il suo init, avevo messo un'attesa mentre debuggavo) ma non funziona nemmeno lui... Bah! Sicuramente mi perdo in un bicchier d'acqua! ---------------------------------------- AUTORE: 482 DATA :11/12/2015 - 07:00:21 ---------------------------------------- is frontmost è l'equivalente della proprietà modal del frontpanel? se no, hai già provato ad impostare anche quella? ---------------------------------------- AUTORE: 301 DATA :11/12/2015 - 13:42:03 ---------------------------------------- Impostare il modale di una finestra, significa avere la finestra modale all'interno dello stesso programma.... Per il problema specifico, credo ci sia da lavorare a livello di finestre di sistema (ricordo una libreria system?!?!) Aris ---------------------------------------- AUTORE: 3428 DATA :11/12/2015 - 15:16:31 ---------------------------------------- Si infatti come dice aris il modal non è quello che mi serve... Vabbè dai se troverò una soluzione la posterò ovviamente Grazie ancora ragazzi ---------------------------------------- AUTORE: 301 DATA :11/12/2015 - 15:24:12 ---------------------------------------- prova a vedere se questa ti puo aiutare (è la libreria che intendevo prima) http://www.ni.com/example/29935/en/ Aris ---------------------------------------- AUTORE: 3428 DATA :21/12/2015 - 13:21:36 ---------------------------------------- Ciao aris, è la libreria che avevo ho anche io.. secondo me il problema è che l'exe ha un loader iniziale (che non è possibile minimizzare). Per il momento ho lasciato così, è anche vero che il mio exe lancia l'altro e solo alla prima volta rimane in frontmost. Dopo averlo messo ad icona all'uscita dal mio exe non viene chiuso e al riavvio del mio exe controllo che se è già in run tra i processi di win allora non lo rilancio, quindi il "problema" è solo al primo lancio... Era solo una sciccheria diciamo. Grazie ugualmente a tutti ---------------------------------------- ================================================================================ seriale e autoscroll ================================================================================ AUTORE: 11093 DATA :11/12/2015 - 01:01:43 ---------------------------------------- sto sviluppando un programma che legge da seriale dei dati. Al Visa Read Function collego il read buffer dove mi fa vedere leggere i dati. xkè a volte mi lampeggia i dati visualizzati? Alla fine sono stringhe di dati visualizzati sul read buffer. al read buffer posso mettergli autoscroll in modo che abbia una lista? ---------------------------------------- AUTORE: 301 DATA :11/12/2015 - 06:55:49 ---------------------------------------- ciao, se vedi la lettura "lampeggiare", probabilmente è perchè vai a leggere un buffer vuoto (leggi troppo velocemente). Per quanto riguarda la "lista", non puoi "impostarla", ma la devi creare tu. Aris ---------------------------------------- AUTORE: 11093 DATA :27/12/2015 - 21:49:51 ---------------------------------------- Ok... nel read buffer per inserire lo scroll, creo un case struttura? ---------------------------------------- AUTORE: 301 DATA :28/12/2015 - 10:56:14 ---------------------------------------- non lo so.....dipende sempre da come è fatto il tuo codice. ti allego un esempio di una scroll list, ovviamente se vuoi accodare i messaggi solamente se sono completi o corretti, devi passare per una case. Aris ---------------------------------------- AUTORE: 11093 DATA :29/12/2015 - 23:43:54 ---------------------------------------- l'esempio è stato molto illuminante la Ringrazio molto, è quello che cercavo. ---------------------------------------- AUTORE: 301 DATA :30/12/2015 - 19:42:20 ---------------------------------------- Ma figurati, il forum è qui per questo. Buon anno Aris ---------------------------------------- ================================================================================ Problemi uscita Analogica AOx ================================================================================ AUTORE: 11046 DATA :12/12/2015 - 18:01:58 ---------------------------------------- Salve, nell'allegato trovate un piccolo VI che mi sta facendo conoscere il NI MyDaq appena acquistato. In breve: da un ingresso analogico prelievo una tensione variabile da un potenziometro; questo segnale lo invio ad un'onda quadra e ne modulo il Duty; il segnale cosi costruito lo visualizzo in una Chart sul pannello frontale (e fin qui nessun problema, almeno per quanto voglio fare) e lo indirizzo sull'uscita analogico AO0. ( ed è qua che nascono i miei problemi). Sulla Chart il segnale viene visualizzato cosi come l'ho pensa. Se prendo l'oscilloscopio, però, e vado a vedere la forma d'onda di uscita, la trovo a pacchetti e non contiuna (vedi foto). Chi avrebbe la pazienza di spiegarmi cosa succede, dove sbaglio e che parametri modificare? Grazie ancora \":?:\" ---------------------------------------- AUTORE: 482 DATA :14/12/2015 - 07:07:06 ---------------------------------------- Credo che il problema stia nel fatto che tu generi una prozione d'onda e continui a mandargliela all'uscita ma senza una cadenza regolare, solo cadenzata dalla velocità di esecuzione del ciclo while. Quindi il primo consiglio è cercare di accantonare il prima possibile i blocchetti daq assistant e costruire un VI basandoti sugli esempi di Labview che generi un onda continua. A seconda della scheda che monti, puoi farlo in due modi: 1) mandi la tua porzione d'onda alla scheda e dici alla scheda di mandarla all'uscita ripetutamente (non tutte le schede supportano questa funzione) 2) generi un onda lunga abbastanza da superare la durata del tuo ciclo while (che è sempre meglio temporizzare, anche un minimo ma almeno hai una cadenza fissa) e continui a darla direttamente all'uscita. ---------------------------------------- AUTORE: 11046 DATA :20/12/2015 - 21:00:47 ---------------------------------------- Allora: 1) se mando sull'uscita A0 il segnale sinusoidale simulato, il tutto funziona; 2) se metto un controllo sul duty del Simulate di un'onda quadra viene visualizzata correttamente; 3) se all'ingresso Ai0 del My Daq gli attacco un potenziometro per variare il duty mi da questo errore sul Daq Assistant di uscita Error -200290 occurred at DAQmx Write Che tipo di Buffer mando in confusione mettendo un altro Daq assistant? come si fa ad incrementare questo buffer? Grazie ---------------------------------------- AUTORE: 482 DATA :21/12/2015 - 07:12:07 ---------------------------------------- come dicevo, sembra un problema di temporizzazione. Probabilmente l'elaborazioen che fai tra l'acquisizione dell'AI e il cambio del duty, genera dei ritardi o la rigenerazione troppo veloce. Ad esempio l'acquisizione avviene leggendo 100 campioni alla frequenza di 1k. mentre la generazione è fatta da 1000 campioni a 10k. Partirei innanzitutto dal fatto che la lettura del potenziometro puo' essere fatta con un 1 sample cosi' ottieni un solo campione di moltiplica e non inserisci delle incompatibilità di tempistiche. ---------------------------------------- ================================================================================ Blocco per calcolare la media di segnali ================================================================================ AUTORE: 11062 DATA :17/12/2015 - 09:23:05 ---------------------------------------- Salve volevo sapere se esiste un blocco che preleva le acquisizioni di segnale salvate in un file e ne calcola la media. In teoria siccome questi segnali che acquisisco sono molto rumorosi ho bisogno di fare tante acquisizioni e farne la media per estrapolarne il valore più preciso possibile. in attesa di una vostra risposta vi ringrazio in anticipo. ---------------------------------------- AUTORE: 301 DATA :17/12/2015 - 12:34:09 ---------------------------------------- beh......no, ma non mi sembra la fine del mondo. leggi il tuo file, fai la sommatoria delle letture e la dividi per il numero di campioni...... Aris ---------------------------------------- ================================================================================ VI modali ================================================================================ AUTORE: 482 DATA :22/12/2015 - 07:43:45 ---------------------------------------- ...ma ciao! ho un dubbio.... Ho un Main VI con un tot di subVI. Volevo capire una cosa..se setto tutti i VI come modali, come frontmost avro' sempre l'ultimo aperto o se per esempio richiamo il "mostra desktop" la situazione mi si incasina? Perchè avevo settato tutti come modal, poi pero' avevo avuto dei problemiche non mi ricordo e li avevo settati come default, ma non mi va bene perchè se l'utente clikka fuori dalla finestra dell'ultimo vi, questo mi passa in secondo piano impedendomi di procedere. ..ecco..forse mi ricordo..avevo tolto il modal dai VI perchè rompeva le palle in fase di debug quando avevo piu' vi aperti. Quindi, riassumendo, mi confermate che settando tutti a modal, il frontmost è l'ultimo chiamato? E se si, c'e' il modo di impostare tutti i vi come modal SOLO in fase di compilazione dell'eseguibile? graaasie! ---------------------------------------- AUTORE: 43 DATA :23/12/2015 - 08:53:49 ---------------------------------------- [quote="gepponline":11xsorhg]... Quindi, riassumendo, mi confermate che settando tutti a modal, il frontmost è l'ultimo chiamato? E se si, c'e' il modo di impostare tutti i vi come modal SOLO in fase di compilazione dell'eseguibile? graaasie![/quote:11xsorhg] 1) Si 2) l'attributo "Modal" del VI può essere assegnato programmaticamente [class VI Server -> VI -> VI] Front Panel Window -> Behaviour in funzione della modalità di esecuzione [class VI Server -> Application]Application -> Kind Buon Natale bye ---------------------------------------- AUTORE: 482 DATA :23/12/2015 - 13:37:48 ---------------------------------------- grande come sempre... domanda....la differenza tra isFrontMost e Modal E' solo che Modal è una sorta di Frontmost permanente o c'e' dell'altro? tipo che ne so..frontmost è rispetto a qualsiasi finestra di windows e modal invece rispetto solo ai VI o viceversa... ---------------------------------------- ================================================================================ salvare XY graph come immagine ================================================================================ AUTORE: 11082 DATA :22/12/2015 - 16:24:50 ---------------------------------------- salve. chiedo aiuto. vorrei salvare un grafico XY graph sotto forma di immagine. come posso fare? sono graditi esempi. ---------------------------------------- AUTORE: 3428 DATA :22/12/2015 - 17:03:56 ---------------------------------------- Ciao, hai provato a fare una ricerca su google? http://forums.ni.com/t5/LabVIEW/XY-grap ... d-p/690466 ---------------------------------------- ================================================================================ aiuto sul modulo Control Design & Simulation ================================================================================ AUTORE: 11098 DATA :28/12/2015 - 19:48:41 ---------------------------------------- Salve, ho installato LabVIEW 2011 compreso il modulo Control Design & Simulation, ma quando provo ad utilizzare alcune functions di questo modulo, ovvero clicco sull'icona e la trascino nell'area di lavoro Diagram, mi appare il simbolino nero di divieto. Questo succede per esempio con Gain, Summation, Multiplication (che stanno sotto Control Design & Simulation -> Simulation -> Signal Arithmetic). Invece altre functions sempre di questo modulo funzionano. Non capisco perchè \":(\" queste funzioni mi servirebbero proprio. Grazie! saluti ---------------------------------------- ================================================================================ inserimento di loghi nel pannello di controllo ================================================================================ AUTORE: 4376 DATA :30/12/2015 - 09:47:16 ---------------------------------------- Ciao a tutti Devo inserire nel front panel della mia VI un logo che può essere in formato jpg o altro volevo sapere come si fà.... grazie dell' aiuto e buon anno a tutti Davide ---------------------------------------- AUTORE: 43 DATA :04/01/2016 - 08:53:52 ---------------------------------------- Apri l'Help di LabVIEW Per aprire l'help Ctrl+? oppure da menu [Help] -> [LabVIEW Help...] digita Importing Graphics on Windows In pratica si tratta di mettere l'immagine nella Clipboard e copiarla nel FrontPanel o Diagram di LabVIEW con Ctr+V o da menu [Paste] buon anno ---------------------------------------- AUTORE: 4376 DATA :07/01/2016 - 15:33:29 ---------------------------------------- Ciao Paracarro Grazie funziona a meraviglia Davide ----------------------------------------