================================================================================ da array di cluster ad array monodimensionali ================================================================================ AUTORE: 3428 DATA :04/01/2017 - 14:23:14 ---------------------------------------- Salve, il mio non è un vero e proprio dilemma ma vorrei sapere se esiste qualcosa in labview che fa al caso mio ma non ho mai utilizzato. Ho un cluster di 5 elementi tutti DBL (x1,x2,x3,x4,x5). Messo in un ciclo for mi genera un array monodimensionale di questo cluster, esempio 100 elementi. Ora mi ritrovo con l'esigenza di avere array monodimensionali dei singoli 100 valori ovvero, tutti e 100 gli x1, 100 x2 ecc. Viene facile mettere in un ciclo for l'array dei cluster e creare i singoli vettori con l'unboundle... Ma è la strada giusta o labview ha una funziona per farla tipo "index & bundle cluster array"? grazie ---------------------------------------- AUTORE: 43 DATA :09/01/2017 - 08:55:12 ---------------------------------------- [quote="renaso":te6q8ngl]Salve, il mio non è un vero e proprio dilemma ma vorrei sapere se esiste qualcosa in labview che fa al caso mio ma non ho mai utilizzato. Ho un cluster di 5 elementi tutti DBL (x1,x2,x3,x4,x5). Messo in un ciclo for mi genera un array monodimensionale di questo cluster, esempio 100 elementi. Ora mi ritrovo con l'esigenza di avere array monodimensionali dei singoli 100 valori ovvero, tutti e 100 gli x1, 100 x2 ecc. Viene facile mettere in un ciclo for l'array dei cluster e creare i singoli vettori con l'unboundle... Ma è la strada giusta o labview ha una funziona per farla tipo "index & bundle cluster array"? grazie[/quote:te6q8ngl] Ciao Renaso. I dati sono "omogenei" cioè dello stesso tipo. Non capisco x quale motivo non usi una matrice bidimensionale. Solitamente si acquisiscono/scrivono righe o blocchi di righe e si visualizzano/leggono colonne di dati. Se ti serve visualizzare una riga di dati sottoforma di cluster con le opportune formattazioni, ci sono le funzioni "Array to Cluster" e "Cluster to Array" Buon anno ---------------------------------------- ================================================================================ C# & Labview Run Time Engine ================================================================================ AUTORE: 11130 DATA :16/01/2017 - 11:11:06 ---------------------------------------- Buongiorno a tutti, ho un problema di questo tipo..... ho fatto un programma in C# che "comanda" un VI sempre fatto da me..........cioè dal programma C# ho caricato la libreria Interop.Labview.dll e metto in "RUN" e "STOP" il mio VI potendo anche decidere se visualizzare o no il FRONT PANEL............finqui tutto bene.......funziona tutto!!........perè quando trasferisco il tutto su un altro PC dove non ho installato LabView2015 FULL ma solo la RUN TIME ENGINE non mi funziona piu niente!! Tra l'altro per fare un ulteriore prova ho passato il progetto a un mio collega che ha installato Visual Studio e la RTE e non funziona perche non trova i riferimenti alla DLL di LabView....... Ecco la mia domanda è questa: ma è possibile comandare direttamente uno o piu VIs tramite C# e LVRTE???? Grazie a tutti Nicola ---------------------------------------- AUTORE: 301 DATA :16/01/2017 - 12:35:10 ---------------------------------------- Ciao Nicola, vedendo quanto hai scritto, mi viene il sospetto che tu non abbia buildato il vi, ma solo spostato sul target... Il link sotto spero ti possa essere di aiuto. http://zone.ni.com/reference/en-XX/help ... _assembly/ Aris ---------------------------------------- AUTORE: 11130 DATA :16/01/2017 - 13:02:53 ---------------------------------------- Ciao e grazie intanto per la risposta... No non voglio fare una build in .NET Interop ma voglio "comandare" io da C# direttamete i VI con i comandi RUN , ABORT e SHOW FRONT PANEL.......ma come ti dicevo tutto fuziona correttamente.......se pero provo a far girare il tutto dove ho solo la RunTime Engine non va......mentre se ho LabView Full mi funziona tutto..... ---------------------------------------- AUTORE: 301 DATA :17/01/2017 - 06:41:15 ---------------------------------------- beh, direi che avresti lo stesso risultato anche "via" Labview..... Non puoi eseguire un "semplice" vi su una macchina senza il sistema di sviluppo, prima devi buildarlo in un qualche modo (dll, exe, ecc.)! Aris ---------------------------------------- AUTORE: 11130 DATA :17/01/2017 - 07:54:10 ---------------------------------------- Eh no....se avessi potuto fare tutto in labview era tutto piu facile.........ma io devo integrare in un progetto gia esistente in C# la mia parte di acquisizione in labview....pero devo avere la possibilita di controllare in modo totale i miei VI......come dicevo RUN ABORT e SHOW FRONT PANEL Quindi non posso fare una DLL perche non avrei il FRONT PANEL non posso fare un EXE perche non riuscirei a controllare il RUN/STOP dei miei VI ---------------------------------------- AUTORE: 43 DATA :17/01/2017 - 11:32:10 ---------------------------------------- [quote="nicola.grossi":3a064fyq]Buongiorno a tutti, ho un problema di questo tipo..... ho fatto un programma in C# che "comanda" un VI sempre fatto da me.......... Ecco la mia domanda è questa: ma è possibile comandare direttamente uno o piu VIs tramite C# e LVRTE???? [/quote:3a064fyq] Un programma che lancia e controlla altri programmi (qualsiasi programma: consideriamo dei file eseguibili). Certo che si può!!! e lo si può fare nel modo che si preferisce dato che i sorgenti dei programmi sono nelle mani dello stesso sviluppatore. Quindi si sceglie un canale di comunicazione (x es. socket, ma si può comunicare anche tramite files dipende da quello che si vuole fare) e si implementa il codice in entrambi i SW. Si deve poter debuggare il codice anche se uno dei soggetti è compilato. bye ---------------------------------------- AUTORE: 11130 DATA :17/01/2017 - 13:08:21 ---------------------------------------- No beh certo......chiarissimo il discorso di controllare degli eseguibili e/o comunicazioni varie tra 2 o piu programmi.....ma io devo controllare direttamente 2 VI.....cosa che poi sono riuscito a fare ma non riesco a far funzionare il tutto se ho solo la RuinTime Engine installata e non LV Full ---------------------------------------- AUTORE: 301 DATA :17/01/2017 - 15:56:53 ---------------------------------------- ripeto.....per "distribuire" dei vi su targets che non hanno il sistema di sviluppo, va fatto un build!!!! ---------------------------------------- AUTORE: 11130 DATA :18/01/2017 - 07:43:47 ---------------------------------------- [quote="aris":83ymihj5]ripeto.....per "distribuire" dei vi su targets che non hanno il sistema di sviluppo, va fatto un build!!!![/quote:83ymihj5] Allora pero non capisco perche sul sito NI ci sono una marea di esempi per fare questo sia in VB che C# e addirittura C++ se poi non posso usare la mia applicazione............a che cosa serve se posso usare queste funzionalita solo sul PC di sviluppo??!??? ---------------------------------------- AUTORE: 301 DATA :18/01/2017 - 10:11:48 ---------------------------------------- mah, non è detto che tu non la possa usare, ho solo detto che PENSO tu debba buildare i tuoi vi in un qualche modo (magari in una lvlib) prima di distribuirli. Labview funziona in maniera leggermente diversa dagli altri linguaggi, i vi su cui lavori sono gia compilati! In molti laboratori ho visto utilizzare direttamente il sistema di sviluppo, ad esempio vedi che per le licenze del LV "inferiori" il builder può essere acquistato separatamente..... Aris ---------------------------------------- AUTORE: 482 DATA :18/01/2017 - 16:01:40 ---------------------------------------- Credo di poter confermare che il runtime engine serve per far girare GLI ESEGUIBILI buildati in labview. Il runtimeengine con i singoli vi non ci fa niente. Quindi dal tuo VI crei l'eseguibile, lo metti sul pc che vuoi dove devi aver installato il corretto runtime engine e allora col tuo VB o C# o quello che vuoi, puoi interagire con quel VI come vuoi. Tieni presente una cosa MOOOLTO importante. Una volta che tu avrai compilato l'eseguibile, s enel tuo programma facevi riferimento a dei path relativi al vi, questi potrebbero essere differenti nell'eseguibile perchè viene ricreato l'albero dei subvi all'interno del percorso dell'eseguibile. Altra piccola nota, l'eseguibile non per forza dev'essere un programma che lanci e parte. puo' anche solo aprire la finestra del vi e non fare niente finchè non lo mandi fisicamente in run. ---------------------------------------- ================================================================================ Classe Singleton ================================================================================ AUTORE: 301 DATA :23/01/2017 - 12:31:26 ---------------------------------------- Ciao ragazzi! domandona, magari qualcuno di voi ha gia affrontato e risolto l'argomento..... Qual'è il miglior modo di creare una classe singleton in Labview, rendendola "wireless" (tipo una FGV)mantenedo la comodità della programmazione ad oggetti e senza tutta una struttura complicata che gira dietro?!?!? Aris ---------------------------------------- AUTORE: 11106 DATA :26/01/2017 - 10:26:21 ---------------------------------------- Ciao Aris, io le classi singleton le implemento usando code di lunghezza 1. Puoi creare la tua classe e metterla in un singleton (coda, FG o DVR) oppure fare in modo che la tua classe sia un singleton. In questo caso, io solitamente procedo così: - nelle proprietà c'è il reference alla coda del singleton - le vere proprietà della classe sono invece contenuti nel singleton - la classe avrà un metodo INIT e DESTROY che rispettivamente inizializza e distrugge il singleton - i getter non sono dei getter puri (con solo l'unbundle) ma avrano l'estrazione dei dati della classe del singleton e poi l'unbundle che ritorna il valore della proprietà richiesta. Stesso discorso vale per i setter. ---------------------------------------- ================================================================================ Problema timeout UDP ================================================================================ AUTORE: 11020 DATA :25/01/2017 - 10:48:13 ---------------------------------------- Un saluto a tutti. Ho un problema con la comunicazione UDP. Scambio dei pacchetti con un dispositivo attraverso il protocollo udp. Se mi metto in modalità debug, non ho alcunissimo problema e tutto funziona correttamente. Quando invece mi metto in modalità normale, mi appare l'errore 56. Ho alzato il timeout da 10000 a 25000ma non ho ottenuto alcun miglioramento. Qualcuno ha qualche suggerimento?! Un saluto e grazie Giovanni ---------------------------------------- AUTORE: 11020 DATA :25/01/2017 - 11:12:43 ---------------------------------------- [quote="Gio88":2xkwawmv]Un saluto a tutti. Ho un problema con la comunicazione UDP. Scambio dei pacchetti con un dispositivo attraverso il protocollo udp. Se mi metto in modalità debug, non ho alcunissimo problema e tutto funziona correttamente. Quando invece mi metto in modalità normale, mi appare l'errore 56. Ho alzato il timeout da 10000 a 25000ma non ho ottenuto alcun miglioramento. Qualcuno ha qualche suggerimento?! Un saluto e grazie Giovanni[/quote:2xkwawmv] Anzi, in realtà l'errore 56 me lo da anche se mi metto in modalità di debug. ---------------------------------------- AUTORE: 11106 DATA :26/01/2017 - 10:34:30 ---------------------------------------- Ciao Gio, l'errore 56 è un errore di timeout. Controlla che la porta che stai usando non sia bloccata dal firewall. ---------------------------------------- AUTORE: 11020 DATA :26/01/2017 - 13:49:56 ---------------------------------------- Ehm... Scusami l'ignoranza immonda. Coma faccio a controllare se il firewall è abilitato oppure no?! Comunque, a volte funziona a volte no. \":?\" La porta che sto usando per l'UDP è la 50000. ---------------------------------------- AUTORE: 11106 DATA :26/01/2017 - 14:09:20 ---------------------------------------- Se ogni tanto va e altre no, direi che non è un problema di firewall. Sei sicuro che il dispositivo con cui comunichi funzione correttamente? ---------------------------------------- AUTORE: 11020 DATA :26/01/2017 - 14:10:43 ---------------------------------------- Eh... Il dispositivo da qualche problemino. Domani chiederò al mio collega... ---------------------------------------- ================================================================================ Custom device ================================================================================ AUTORE: 10888 DATA :26/01/2017 - 09:10:22 ---------------------------------------- Ciao, spero che sia la sezione giusta questa..in realta' e' piu' un problema di Veristand ma anche no !!! \":D\" Ho un VI e voglio che la funzionalità' che implementa sia portata dentro un progetto Veristand. Dovrei creare un custom device, credo.... quello che non mi e' chiaro e' se devo anche modificare il VI oppure devo fare un wrapper per farlo poi digerire al progetto veristand ---------------------------------------- ================================================================================ Frequenza di campionamento ================================================================================ AUTORE: 11102 DATA :07/02/2017 - 21:36:36 ---------------------------------------- Ciao a tutti! Ho fatto una acquisizione di un segnale analogico (accelerometri) campionando il segnale a 40kHz utilizzando l'apposito blocchetto di acquisizione. I dati vengono salvati in un file binario. Adesso vorrei rileggere gli stessi dati solo che mi servirebbe diminuire la frequenza di campionamento. Esiste con labview un modo per visualizzare la waveform impostando la frequenza di campionamento inferiore? In allegato c'è ho aggiunto la foto del VI che ho realizzato per la lettura del file binario. Funziona correttamente e mi riproduce la waveform campionata a 40 kHz. Ora però avrei la necessità di visualizzarla ma con una frequenza di campionamento più bassa, è possibile in qualche modo? Grazie Ciaoo! [attachment=0:34xhnd73]visualizzazione.zip[/attachment:34xhnd73] ---------------------------------------- AUTORE: 301 DATA :08/02/2017 - 14:51:59 ---------------------------------------- Puoi usare un "decimate (continuous)" o vedere cosa fa maggiormente al caso tuo (Vedi paletta Signal Processing). Aris ---------------------------------------- ================================================================================ programma sensore pressione, piccole oscillazioni del segnal ================================================================================ AUTORE: 11154 DATA :08/02/2017 - 16:51:23 ---------------------------------------- salve, sono nuovo e sto muovendo i miei primi passi in labview. sto cercando di graficare pressione e temperatura in labview sto utilizzando compactrio con scheda 9203. un sensore di pressione della JUMO MIDAS S05 4-20ma. pressiore relativa 4 bar ho collegato il sensore di pressione a 2 fili ad uno degli 8 ingressi della scheda (devo collegare anche la massa??) ho ricavato in labview il segnale analogico e sono riuscito a graficarlo senza utilizzare nessun daq assistant ma sapendo che il sensore va 4 a 20ma e conoscendo il range di pressione ho ricavato la formula per la pressione assoluta e quella relativa con la pressione atmosferica. Pass=Prel+Patm (I-Imin)/(Imax-Imin)=(Prel-0)/(Pmax-0) ho ricavato la Prel voglio misurare la pressione all`interno di un contenitore a tenuta stagna. ho immesso del gas per aumentare la pressione e vi rimando alla foto per i risultati. ora il problema è che sembra oscillare un po, come se ci fosse del rumore.(oscilla intorno ad un valore ben definito della misura di pressione,come posso eliminarlo? poi per fare le prove in un altro luogo senza avere il segnale dal compact rio come posso simularlo. ho provato con simulate signal in dc ma è un segnale dinamico e mi da errore. quindi problemi: 1)eliminare piccole oscillazioni per stabilizzare il grafico. 2)simulare il segnale potendo modificare da 4 a 20ma ed inserire il rumore per verificare se lo elimina secondo voi per migliorare la misura di pressione devo inserire anche errore del sensore se si come.(vedere le caratteristiche del sensore ed inserire errore fondo scala) poi nei prossimi giorni utilizzerò una termocoppia e vorrei graficare su un piano pressione temperatura. devo vedere ancora come mettere questi 2 segnali su un unico grafico PT. grazie attendo una vostra risposta perchè sto provando da molto ma non ci riesco. ---------------------------------------- AUTORE: 11154 DATA :08/02/2017 - 17:01:00 ---------------------------------------- ecco lo creen del segnale [url:r0datfcm]https://www.dropbox.com/s/5gttfd7vncibp2o/lab%20press2.jpg?dl=0[/url:r0datfcm] [url:r0datfcm]https://www.dropbox.com/s/v2v6qf99z2s7y9m/lab%20press1.jpg?dl=0[/url:r0datfcm] ---------------------------------------- AUTORE: 11106 DATA :09/02/2017 - 14:08:24 ---------------------------------------- Ciao Francesco [quote:sx1bi9ue]eliminare piccole oscillazioni per stabilizzare il grafico[/quote:sx1bi9ue] Per pulire il segnale puoi usare un filtro passa basso (blocchetto Butterworth filter) o più semplicemente una media mobile (blocchetto Mean ptbypt) [quote:sx1bi9ue]simulare il segnale potendo modificare da 4 a 20ma ed inserire il rumore per verificare se lo elimina[/quote:sx1bi9ue] Certo. Ti metti un controllo numeric. al valore del controllo ci sommi il valore ritornato dal blocchetto Random.vi [quote:sx1bi9ue]poi nei prossimi giorni utilizzerò una termocoppia e vorrei graficare su un piano pressione temperatura. devo vedere ancora come mettere questi 2 segnali su un unico grafico PT. [/quote:sx1bi9ue] Per il grafico Pressione-Temperature, puoi usare un XY Graph Se invece vuoi fare un grafico 3D (Tempo, temperatura, pressione), puoi usare i 3D Graph. A tal proposito, trovi alcuni esempi da Help->Find Example ---------------------------------------- AUTORE: 11154 DATA :14/02/2017 - 15:26:01 ---------------------------------------- grazie mille, penso di esserci riuscito, ho aggiunto la funzione mean lasciando di default 100 sample. spero di aver fatto la cosa giusta perchè sto campionando il segnale ogni 500ms. non riesco a mettere un blocchetto Butterworth filter mi da errore dicendo che sono dati di formattazione diversa, sorgente double e il filtro vorrebbe 1d of array double. il segnale oscilla ancora però lo fa perchè il grafico va in autoscala e mi visualizza le più piccole oscillazioni che sono nell'ordine dei microAmpere. sperp che per un sensore 4-20ma questo tipo di piccole oscillazioni siano normali e trascurabili. avete qualche consiglio per pulire il grafico e farlo sembrare più costante? per simulare il rumore ho seguito il suo consiglio però ho utilizzato la funzione uniform white noise dove ho inserito un controllo per impostare ampiezza. se riesco a risolvere questo problema posso passare alla calibrazione della termocoppia così da graficare la tensione di vapore di vali liquidi. ho cercato ovunque un esempio labview per la tensione di vapore,è un esperimento comune ma non ho trovato nessun esempio già fatto. la ringrazio per la risposta ed il tempo che mi ha dedicato. ---------------------------------------- AUTORE: 11106 DATA :15/02/2017 - 08:10:18 ---------------------------------------- Ciao Francesco, per disattivare l'autoscala, vai sul front panel, tasto destro sul grafico > Y scale > autoscale ---------------------------------------- AUTORE: 11154 DATA :29/06/2017 - 10:09:46 ---------------------------------------- il mio programma sembra piano piano funzionare.. ho un altro problema ho sul grafico una pressione o temperatura che cresce costante nel tempo e poi si stabilizza(sempre con un po di rumore). come posso individuare dal grafico il momento in cui si stabilizza e rimane costante in modo da far partire acquisizione automatica evitando falsi rilevamenti. tutto ciò con la presenza di piccole oscillazioni. [img:2hgouw8a]http://ni.i.lithium.com/t5/image/serverpage/image-id/89040iB7ACE304FF79F5BA/image-size/original?v=mpbl-1&px=-1[/img:2hgouw8a] ---------------------------------------- AUTORE: 482 DATA :30/06/2017 - 09:03:11 ---------------------------------------- Potresti confrontare il valore attuale letto, con il precedente e se dopo TOT tempo, la differenza tra i 2 resta all'interno di un certo range (in modo da escludere i rumori), allora dai l'ok. Senno' dovresti andare a fare le derivate dei segnali ma ti si complica un po'... ---------------------------------------- ================================================================================ Decorazioni front panel ================================================================================ AUTORE: 238 DATA :11/02/2017 - 10:21:15 ---------------------------------------- Funzione: visualizzare lo stato di linee di alimentazione in media tensione Con una logica definita in file di testo vengono cambiati i colori delle singole decorazioni (linee) da rosso a verde (linea MT disalimentata o alimentata); il tutto funziona però i problemi sorgono quando vengono aggiunte altre decorazioni, le singole linee vengono spostate nell´array Non ho capito con quale logica vengono aggiunte le nuove decorazioni nell` array “Decors[]” \":oops:\" Esiste un modo per trovare le coordinate iniziali e finali delle singole decorazioni (linea) ---------------------------------------- AUTORE: 11106 DATA :13/02/2017 - 10:22:49 ---------------------------------------- Ciao Michele, per trovare le coordinate iniziali di una decorazione, puoi usare il property node Position. Per trovare le coordinate finali puoi usare il property node Bounds (Height e Width da sommare rispettivamente a Position.Top e Position.Width) [attachment=0:2yj81jel]decorPOsition.png[/attachment:2yj81jel] ---------------------------------------- AUTORE: 238 DATA :15/02/2017 - 19:49:03 ---------------------------------------- Perfetto! Grazie \":!:\" Per quel che riguarda l´ordine delle decorazioni; sembra che le nuove vengano aggiunte all´inizio dell´array e non accodate \":o\" ---------------------------------------- AUTORE: 43 DATA :16/02/2017 - 10:16:39 ---------------------------------------- Scusate l'intromissione in questa discussione che pare sia chiusa. Mi sento di sconsigliare l'uso delle Decoration così come indicato in questa discussione. Se non potete editare le immagini con un apposito editor grafico (Paint, Gimp, ecc.)ed importare immagini con le opportune trasparenze, se non è possibile utilizzare dei booleani o dei testi per simulare dei "percorsi" in un sinottico, allora usate pure le decorations, ma fatelo dentro un oggetto Picture Ring. [attachment=0:1si6bxvu]DecorationRing.vi[/attachment:1si6bxvu] [quote="Michele":1si6bxvu]....Per quel che riguarda l´ordine delle decorazioni; sembra che le nuove vengano aggiunte all´inizio dell´array e non accodate..[/quote:1si6bxvu] Non mi semra documentato ufficialmente questo criterio di funzionamento, quindi non lo darei x scontato. bye ---------------------------------------- AUTORE: 238 DATA :18/02/2017 - 19:43:45 ---------------------------------------- Non sapevo che LabView supporta immagini png! Grazie \":D\" ---------------------------------------- ================================================================================ Web based page ================================================================================ AUTORE: 11156 DATA :19/02/2017 - 16:41:35 ---------------------------------------- Ciao a tutti. Vorrei dare la possibilità ad alcuni utenti di collegarsi via internet ad una pagina dove vorrei mostrare alcuni dati rilevati dal mio sistema con Labview + DSC. Mi piacerebbe capire da dove iniziare, senza utilizzare il classico Remote Front Panel oppure il costoso WEBpager. Grazie ---------------------------------------- AUTORE: 482 DATA :20/02/2017 - 09:59:16 ---------------------------------------- si tratta solo di mostrare o devi permettere interazioni da parte dell'utente? (Tipo l'utente puo' scegliere quali dati visualizzare ecc..) ---------------------------------------- AUTORE: 11156 DATA :21/02/2017 - 22:20:02 ---------------------------------------- Inizierei con il mostrare solamente alcune varibili lette. Creerei una pagina con dei dati senza la possibilità da parte dell'utente di interagire, usando però degli indicatori che non sono quelli classici di Labview, ma usando componenti che si impiegano per costruire pagine html. ---------------------------------------- AUTORE: 482 DATA :23/02/2017 - 18:02:52 ---------------------------------------- Quindi si tratta di costruire una pagina html a tutti gli effetti... A questo punto ti consiglio di creare la tua pagina web facendogli prendere i dati da mostrare da un file esterno che salveresti con labview. In alternativa puoi lavorare con la palette delle stringhe e manipolare direttamente da labview la pagina che vuoi mostrare che comunque essendo dinamica, dovrà comunque appoggiarsi a qualche javasript o php o qualsiasi altra cosa. Ad esempio con questo http://www.tutorialspark.com/html5/HTML ... Charts.php potresti editare il codice php con labview inserendo i valori che vuoi visualizzare ecc ecc... ---------------------------------------- AUTORE: 11156 DATA :28/02/2017 - 13:49:42 ---------------------------------------- Grazie mille Geppo ---------------------------------------- ================================================================================ calcolo livello sonoro ================================================================================ AUTORE: 11158 DATA :22/02/2017 - 14:14:54 ---------------------------------------- salve a tutti. sono alle prime armi con labview. devo acquisire mediante la scheda audio del pc un suono e attraverso un codice scritto in labview calcolare il livello sonoro equivalente. il codice è abbastanza elementare tuttavia mi viene un valore in decibel molto basso. è normale visto che uso il microfono del pc oppure sbaglio altro? grazie a chiunque avrà un suggerimento per me! ---------------------------------------- AUTORE: 11106 DATA :22/02/2017 - 14:34:04 ---------------------------------------- Ciao Angela, senza vedere il codice è difficile aiutarti. Puoi postare almeno uno screenshot? I livelli del microfono del PC sono solitamente molto bassi, quindi è possibile che tu abbia dei valori in dB bassi. Puoi provare ad alzare il livello di amplificazione del microfono direttamente dal pannello di controllo di Windows. ---------------------------------------- AUTORE: 11158 DATA :22/02/2017 - 15:00:51 ---------------------------------------- ti ringrazio..avevo già ho provato a mettere al massimo l'amplificazione ma purtroppo non funziona. appena ho modo posto una foto del codice. volevo chiederti una informazione. utilizzando l'ACQUIRE SOUND che grandezza in uscita ho? ---------------------------------------- AUTORE: 11106 DATA :22/02/2017 - 16:39:37 ---------------------------------------- io penso sia in Volt ---------------------------------------- AUTORE: 11158 DATA :27/02/2017 - 09:08:03 ---------------------------------------- grazie mille!!!! ---------------------------------------- ================================================================================ Eliminare File via FTP ================================================================================ AUTORE: 11020 DATA :24/02/2017 - 05:53:48 ---------------------------------------- Un saluto a tutti, sulla rete ho trovato un sacco di discussioni in merito ma nessuna mi ha aiutato. Dovrei eliminare dei file presenti su una chiavetta via ftp. Avevo trovato un VI contenente un blocco chiamato FTP dele, ma quando uso questo blocco mi dice che il percorso che ho inserito contiene dei caratteri non permessi. \":o\" Ho visto che esiste un blocco chiamato ftp command.vi in cui, inserendo il comando dele, viene effettuata la cancellazione del percorso inserito. Ma io questo blocco su labview 2014 non ce l'ho. Qualcuno può aiutarmi?! Grazie mille Un saluto Giovanni ---------------------------------------- ================================================================================ Dubbio con WaveformGraph ================================================================================ AUTORE: 11020 DATA :03/03/2017 - 08:06:28 ---------------------------------------- Un saluto a tutti. Ho un problema nell'utilizzo del Waveform Graph. Ho due array. Un array è di tipo TimeStamp, l'altro è un array di tipo double. Vorrei fare un grafico in cui sull'asse X ho il time stamp e sull asse y ho i dati presenti nel mio array di double. Utilizzando la funzione bundle creo il mio cluster. Ma quando lo spedisco al mio waveform graph mi da errore nella compilazione. Qualcuno ha qualche suggerimento?! Un saluto e grazie ---------------------------------------- AUTORE: 11020 DATA :03/03/2017 - 08:28:18 ---------------------------------------- [quote="Gio88":1jcnomt0]Un saluto a tutti. Ho un problema nell'utilizzo del Waveform Graph. Ho due array. Un array è di tipo TimeStamp, l'altro è un array di tipo double. Vorrei fare un grafico in cui sull'asse X ho il time stamp e sull asse y ho i dati presenti nel mio array di double. Utilizzando la funzione bundle creo il mio cluster. Ma quando lo spedisco al mio waveform graph mi da errore nella compilazione. Qualcuno ha qualche suggerimento?! Un saluto e grazie[/quote:1jcnomt0] Usando XY Graph ho risolto il problema. La notte porta consigli alle volte. \":D\" ---------------------------------------- ================================================================================ installazione libreria modbus ================================================================================ AUTORE: 11159 DATA :05/03/2017 - 10:58:45 ---------------------------------------- salve a tutti,dovrei realizzare un collegamento modbus ip,spulciando su internet ho capito che la libreria modbus dovrebbe fare al caso mio. Avendo letto che è supportata sino alla versione 8.6 ho recuperato un labview 8.5 e messo su un s.o. windows seven,seguito le istruzioni ma non riesco a vedere i blocchi sulla function palette.Avete suggerimenti?? ---------------------------------------- AUTORE: 11159 DATA :05/03/2017 - 18:39:56 ---------------------------------------- problema risolto. ma questa libreria è compatibile con versioni successive ad esempio la 2013? ---------------------------------------- AUTORE: 301 DATA :06/03/2017 - 07:10:43 ---------------------------------------- direi di si, basta che la installi e la salvi con la versione piu aggiornata. Fino alla 2014 l'ho utilizzata anche io. Aris ---------------------------------------- AUTORE: 11159 DATA :09/03/2017 - 14:36:35 ---------------------------------------- ok grazie,scrivo qui per non aprire un altro topic. Dovrei leggere alcuni registri di uno strumento con indirizzo modbus da remoto tramite protocollo tcp ip .MB master example è quello che fa al caso mio se non ho capito male?c'è qualche guida per settare i parametri?ad esempio non capisco dove mettere gli indirizzi dei registri. ---------------------------------------- AUTORE: 301 DATA :09/03/2017 - 15:46:49 ---------------------------------------- beh, il vi Read register PRETENDE l'indirizzo da leggere. Aris ---------------------------------------- ================================================================================ vi che non si chiude ================================================================================ AUTORE: 3428 DATA :06/03/2017 - 10:59:50 ---------------------------------------- Ciao, cosa stranissima. Apro il mio progetto e a volte dopo che lavoro con delle vi clone messe reentrant da me, non riesco più a chiuderle. -Intendo premo X rossa e non succede nulla -ctrl+w nulla -alt+f4 nulla Per chiudere la vi devo chiudere per forza tutto il progetto... Avete mai avuto un comportamento simimle? ---------------------------------------- AUTORE: 482 DATA :06/03/2017 - 18:36:04 ---------------------------------------- hai provato dal progetto ad aprire il vi ORIGINALE tenendo premuto CTRL? Dovresti cosi' aprire il block diagram del vi originale e da li chiuderlo. ---------------------------------------- AUTORE: 3428 DATA :07/03/2017 - 09:51:32 ---------------------------------------- proverò, grazie! Oggi ancora non è mai successo ---------------------------------------- AUTORE: 482 DATA :07/03/2017 - 14:21:12 ---------------------------------------- pardon, non dal progetto ma dal block diagram chiamante. ---------------------------------------- AUTORE: 3428 DATA :07/03/2017 - 15:19:56 ---------------------------------------- Palo! La vi clone è chiamata dinamicamente... ---------------------------------------- ================================================================================ Importare moduli VI ================================================================================ AUTORE: 10888 DATA :07/03/2017 - 09:25:04 ---------------------------------------- Ciao, domanda da "beginner" \":o\" . Se ho un modulo VI che implementa una logica che mi serve in un VI piu' esteso, come la importo? Per ora ho visto come creare dei subVI, ma si tratta di "ridurre" del codice dal VI principale selezionando il codice che mi interessata ed usando : [b:181rq0rr]edit->createSubVI.[/b:181rq0rr] Esite un altro modo? Esiste una "best practice" per disegnare dei VI cosi da renderli esportabili/importabili facilmente? Grazie p.s. la versione di LabView che uso e' la 2016 ---------------------------------------- AUTORE: 301 DATA :07/03/2017 - 09:42:41 ---------------------------------------- ciao e benvenuto! Per "importare" un subvi.....beh, basta trascinarlo le BD, oppure, dalla palette, selezionare "Select a Vi..." Aris ---------------------------------------- ================================================================================ convertire un vi ================================================================================ AUTORE: 482 DATA :09/03/2017 - 08:36:59 ---------------------------------------- ...ma ciao! sto testando un nuovo sistema di IO distribuiti che fornisce dei vi per comunicare con i vari moduli. Solo che è in versione 2014 e io ho installata la 2012. Qualcuno puo' salvarmelo in 2012? grazie! ---------------------------------------- AUTORE: 11161 DATA :09/03/2017 - 08:44:11 ---------------------------------------- Ciao , se apri labview e nel menu file clicchi su "save for preavius version" ,potrai scegliere per quale versione salvare il tuo VI. ciao David ---------------------------------------- AUTORE: 301 DATA :09/03/2017 - 08:49:20 ---------------------------------------- Eccolo, Geppo. ---------------------------------------- AUTORE: 482 DATA :09/03/2017 - 09:03:34 ---------------------------------------- Grazie David ghghg:) Il problema è che devi avere la versione adatta per aprire il VI se hai una versione inferiore non puoi aprirlo e quindi salvarlo in versioni inferiori \";)\" ---------------------------------------- ================================================================================ lavoro di più persone su un progetto ================================================================================ AUTORE: 11161 DATA :09/03/2017 - 11:15:10 ---------------------------------------- Salve, abbiamo il problema di dover lavorare su uno progetto in diverse persone, e tenere traccia delle modifiche che ogni persona fa sul progetto e fare in modo che gli altri, attraverso un cloud possano sincronizzare il progetto presente sulproprio computer con quello salvato nel cloud. Abbiamo il cloud per fare la sincronizzazione , ma non sappiamo cosa salvare nel cloud. Mi spiego meglio, il progetto presenta dependecies e driver che dovrebbero essere presnti nel cloud. Quindi come salvare automaticamente tutto quello che seve sul cloud? grazie David ---------------------------------------- AUTORE: 129 DATA :26/03/2017 - 19:18:00 ---------------------------------------- La cosa migliore è di lavorare su singole parti ciascuno. Io come software di versionamento uso BitBUcket di Atlassian in git e mi trovo molto bene, ha anche molti tool di supporto come issue tracker. ---------------------------------------- ================================================================================ PXI ... se ho capito bene ================================================================================ AUTORE: 10888 DATA :28/03/2017 - 16:13:46 ---------------------------------------- Salve, nel caso di cRIO, FPGA il mapping dei canali verso i VI avviene in maniera quasi automatica (vedi Scan interface) mentre per un HW PXI\PXIe, se ho capito bene, devo usare le DAQmx pallete. ORa, sto provando a leggere da una scheda PXIe-2727, usando il DAQ Assistant. Doppi click sull'icona DAQ Assistant sul Block Diagram e si apre la finestra di configurazione (create new...)....poi : [b:37heqr2t] acquire signals -> Analog Input -> Temperature -> RTD[/b:37heqr2t] e si apre la finestra che mi mostra l'hardware disponibile.Ecco, non vedo le PXIe-2727, ma altre schede.Eppure se apro il MAX le PXIe-2727 sono regolarmente viste negli slot corretti. Dove sbaglio? Grazie ---------------------------------------- AUTORE: 482 DATA :30/03/2017 - 07:22:43 ---------------------------------------- Come sei collegato alle schede PXI? Credo, e dico credo perchè mi son sempre tenuto alla larga dai blocchetti daq assistant. che daq assistant cerchi solo tra le schede locali e i task. Quindi se il PXI lo vedi come un remote system, non si veda e devi creare sotto data neighborhood un task o un virtual channel. Comunque il mio consiglio è di evitare i daq assistant ed usare i blocchetti diretti legati all'hardware in modo da avere piu' sotto controllo la comunicazione. ---------------------------------------- AUTORE: 10888 DATA :05/04/2017 - 16:07:59 ---------------------------------------- [quote="gepponline":1vr6ua0u]Come sei collegato alle schede PXI? Credo, e dico credo perchè mi son sempre tenuto alla larga dai blocchetti daq assistant. che daq assistant cerchi solo tra le schede locali e i task. Quindi se il PXI lo vedi come un remote system, non si veda e devi creare sotto data neighborhood un task o un virtual channel. Comunque il mio consiglio è di evitare i daq assistant ed usare i blocchetti diretti legati all'hardware in modo da avere piu' sotto controllo la comunicazione.[/quote:1vr6ua0u] ...mmmm...grazie per la risposta, ma cosa intendi per "Come sei collegato alle schede PXI" ? La configurazione del rack e', in linea di massima, la seguente: shelf (ovviamente), CPU, 12 Board PXI. Non raggiungo le schede dal PC, ma ho tutto sulla CPU se e' questo che intendi. Grazie ancora ---------------------------------------- AUTORE: 482 DATA :07/04/2017 - 15:59:46 ---------------------------------------- Pardon..ho provato una sola volta ad usare le PXI e le usvo come schede esterne ma governate da un pc. Non avevo la CPU a bordo del PXI. QUindi non sapendo cosa rispnderti, ti confermo intento di non usar eil dq assistant ma usare il nome del device e usare i normali SUBVI di acquisizione. Puoi prelevarli dagli esempi \";)\" ---------------------------------------- ================================================================================ Catturare un Array scrollbar move event ================================================================================ AUTORE: 482 DATA :30/03/2017 - 13:21:09 ---------------------------------------- ...ma ciao! sto avendo un problemino che vorrei capire se si puo' risolvere in maniera elegante. Ho un array bidimensionale di picture ring, a questo associo un array di stringhe che mi fa da row header. Quando faccio uno scroll verso il basso con la scrollbar, uso l'evento "Mouse Move" per aggiornare la proprietà Index Values della row headers uguale a quella dell'array principale. Il problema è che se mentre faccio lo scroll, esco col mouse dall'array, lo scroll continua, ma l'evento Mouse Move si interrompe lasciandomi con i row headers che non coincidono con la posizione dell'array. uqalche idea? Io avevo pensato ad una cosa tipo che setto un flag a true con il quale genero continuamente uno user event, finchè non rilevo un Mouse Up nel pane, in quel caso setto il flag a false ma sta cosa si porta dietro un sacco di controlli da fare. Possibile ch enon esista un modo per intercettare ilmovimento della scrollbar? ---------------------------------------- AUTORE: 301 DATA :31/03/2017 - 07:19:52 ---------------------------------------- Ciao Geppo! Ammetto che non mi è chiarissima la questione, ma una cosa che mi viene in mente è che potresti farti un cluster con l'array "row header", quello di pictures e una scrollbar, gestendo poi solo l'evento scrollbar value change per aggiornare l'index di entrambi gli array. Aris ---------------------------------------- AUTORE: 482 DATA :31/03/2017 - 07:48:00 ---------------------------------------- ...mmhh... potrebbe essere un idea interessante... Ho provato a buttarla giu' al volo e tralasciando l'uso che ho fatto finora dei vari array per capire quante modifiche dovrei fare trasformando tutto in cluster, il problema piu' "grosso" che vedo è come dimensionare la scrollbar. Nel senso che il valore massimo della mia scrollbar dovrà essere: 0 se tutti gli elementi dell'array sono visibili N se N elementi dell'array non sono visibili. e dovrei fare un calcolo penso sui bounds..ma sui bounds e basta non funziona quindi dovro' togliere qualcosa...ppff.. \":)\" ---------------------------------------- AUTORE: 301 DATA :31/03/2017 - 07:53:19 ---------------------------------------- sui bounds?!?!?why? La scrollbar è un numerico ed il suo valore dipende da quanti elementi hai negli array. Per il ridimensionamento dell'interfaccia, invece....beh, li ci devi impazzire un po come solito. Aris ---------------------------------------- AUTORE: 482 DATA :31/03/2017 - 08:05:07 ---------------------------------------- Eh no è proprio li che casca l'asino. La scrollbar non equivale al numero di elementi dell'array. Se tu hai un array di 10 elementi e li stai visualizzando tutti e 10 la scrollbar avrà valore 0 quindi l'array non sarà scrollabile. Non devi poter scrollare visualizzando elementi vuoti dell'array. Cosi'come succede con le scrollbar dirette dei controlli (quelle a volte permettono di scrollare 1 elemento in piu' oltre alla dimensione a meno che non clikki sulla freccetta sotto alla scrollbar). ---------------------------------------- AUTORE: 482 DATA :31/03/2017 - 08:19:55 ---------------------------------------- Ok, allego lo snippet. Questa è la soluzione definitiva grazie Aris per il suggerimento. Vedo pero' se è fattibile da utilizzare nel mio programma esistente perchè portarmi i controlli sotto ad un cluster mi complica un po' la vita. sarebbe bello pero' avere un evento legato alle scrollbar dei controlli \":(\" ---------------------------------------- AUTORE: 301 DATA :31/03/2017 - 08:22:49 ---------------------------------------- Quello lo dvresti gestire con la propietà "Doc Max" (se non ricordo male). ---------------------------------------- AUTORE: 482 DATA :31/03/2017 - 09:31:40 ---------------------------------------- Ora pero' mi si presenta un altro problema maledetto. L'array di picture ring è un indicatore. Se lo metto nel cluster con la scrollbar, per poter muovere la scrollbar, deve essere un controllo. Se diventa un controllo, quando clikki su un picture ring, mi compaiono le scelte del picture ring, invece io non voglio che compaiano. Se metto il controllo come disable, non sono piu' in grado di intercettare il corretto row e columns dove è stato fatto il click \":(\" allego un esempio. Con array abilitato, clikkando sulle caselle, esce il popup che io non voglio. Se clikko nelle righette tra una casella e l'altra, ottengo la posizione corretta. Se disabilito il controllo, la posizione che ottengo è sbagliata. Il tutto funziona se trasformo il controllo in un indicatore, ma poi non mi funzionerebbe piu' la scrollbar all'interno del cluster. ---------------------------------------- AUTORE: 301 DATA :31/03/2017 - 10:17:29 ---------------------------------------- ehm......è giusto l'esempio che hai postato?!? Non trova un controllo.....m anon riesco a capire dove guardare (sorry) ---------------------------------------- AUTORE: 301 DATA :31/03/2017 - 10:25:43 ---------------------------------------- Scusa......ora penso di aver capito. Riesco ad avere la casella clickata settandolo come indicatore ma intercettando l'evento mouse down..... ---------------------------------------- AUTORE: 482 DATA :31/03/2017 - 11:28:17 ---------------------------------------- Puoi metterci un picture ring qualsiasi, ma ti allego il mio personalizzato Come indicatore non ho problemi. Uso l'evento mouse Up e trovo correttamente la casella clikkata. E' come controllo che io voglio che mi prenda l'indice clikkato ma che non apra la casella di scelta della picture ---------------------------------------- AUTORE: 301 DATA :31/03/2017 - 11:41:44 ---------------------------------------- ok.....allora penso che non ti rimanga altro se non convertire gli elementi in immagini proprio.... ---------------------------------------- AUTORE: 482 DATA :31/03/2017 - 12:24:52 ---------------------------------------- non ho capito... ---------------------------------------- AUTORE: 301 DATA :31/03/2017 - 12:31:38 ---------------------------------------- tu hai usato dei picture ring, che se settati come controlli, permettono all'utente di selezionare un valore (picture, nel caso specifico). Ora, per permetterti di selezionare un elemento dell'array senza che il ring faccia il suo lavoro, mi viene solo in mente di creare un array di picture all'interno delle quali mettere i valori (picture) dei tuoi ring. ---------------------------------------- AUTORE: 482 DATA :31/03/2017 - 12:50:57 ---------------------------------------- risolto! devo disabilitare il singolo elemento e non l'array \";)\" ---------------------------------------- AUTORE: 482 DATA :31/03/2017 - 12:55:34 ---------------------------------------- Riassumendo, ho fatto un cluster con array di stringhe che fa da row header,array di picture ring che fa da array principale e scrollbar che mi fa scrollare i due. Per poter scrollare il tutto deve essere un controllo, ma gli elementi dell'array row header e dell'array di picture ring devono essere disabilitati. ---------------------------------------- ================================================================================ Le basi di Programmazione in Labview ================================================================================ AUTORE: 11165 DATA :03/04/2017 - 17:17:12 ---------------------------------------- salve sono nuovo del forum, mi ha fatto molto piacere trovare un forum dedicato a Labview nella mia madrelingua \":D\" ho già utilizzato altre volte labview, in modo molto limitato, per sommi capi ne conosco il funzionamento, essendo però passato un pò di tempo dal suo ultimo utilizzo, e non avendo più la cartella nella quale avevo raccolto i vari esecizi, volevo riprendere dalle basi perchè ho intezione più avanti di realizzare un progetto più complesso. Potete assegnarmi qualche esercizio da svolgere? in modo da affrontare gli elementi chiave, per creare una buona base iniziale per la programmazione in Labview. n.b. premetto che le materie con cui ho avuto il piacere di avvicinarmi a labview sono Sistemi Automatici di Misura ed Elaborazione numerica dei segnali e multimedia. \":)\" \":)\" \":)\" ---------------------------------------- AUTORE: 11106 DATA :05/04/2017 - 09:42:57 ---------------------------------------- Ciao, potresti cominciare da qui: [url:2thur571]http://www.ni.com/academic/students/learn-labview/[/url:2thur571] ---------------------------------------- ================================================================================ Sweep in frequenza da generare tramite schede national ================================================================================ AUTORE: 11172 DATA :15/04/2017 - 14:52:00 ---------------------------------------- Buongiorno. Premetto che sono nuovo di labview. Il mio problema è questo: ho creato un vi dove riesco a generare la forma d'onda di uno sweep in frequenza dando la frequenza di inizio, fine, la frequenza di campionamento e la durata dello sweep. Quando avvio il vi mi genera perfettamente la funzione che voglio. La mia domanda è però come faccio a lanciare questa forma d'onda in un daq assistant in quanto penso dovrò usare un while per fare questo e darla per step. Ho fatto un altro vi dove invece di creare la forma d'onda vado a variare la frequenza all'interno di un while su un simulate signal solo che quello che genero sembra non essere la forma d'onda voluta nonostante matematicamente la variazione di frequenza sia giusta. ---------------------------------------- AUTORE: 11106 DATA :18/04/2017 - 12:58:39 ---------------------------------------- Ciao prova a guardare qui: [url:2n0s0bb7]http://www.ni.com/example/25016/en/[/url:2n0s0bb7] [url:2n0s0bb7]http://www.ni.com/example/28327/en/[/url:2n0s0bb7] ---------------------------------------- ================================================================================ Leggere dati da un file e generare un vettore ================================================================================ AUTORE: 11181 DATA :25/05/2017 - 11:46:46 ---------------------------------------- Buongiorno a tutti. Scusatemi l'ignoranza, ma è la prima volta che uso Labview e devo ancora capire i meccanismi. Io ho un file txt semplicissimo dove ci sono N numeri su una sola colonna. Vorrei semplicemente leggere questo file e generare un array che abbia come elementi questi numeri. Qualcuno sa spiegarmi in modo pratico come realizzare questo? In seguito, una volta ottenuto l'array, dovrei cercare al suo interno un certo numero, o meglio, il numero che più si avvicina a un certo valore e ottenere la riga a cui si trova questo numero. Vi ringrazio anticipatamente! ---------------------------------------- AUTORE: 482 DATA :25/05/2017 - 15:38:42 ---------------------------------------- ...ma ciao! cominciamo aprendo il file. Il sistema piu' veloce è usare il blocchetto "read from spreadsheet file" che trovi nella palette della manipolazione dei file (icona col dischetto) Quel blocchetto si limita a prendere in ingresso il percorso di un file e restituire in uscita l'array bidimensionale dei valori in esso contenuti. Se hai una sola colonna, dall'array in uscita, prenderai solo la prima colonna tramite il blocchetto index array. Dopodichè userai il search 1D array per trovare l'elemento che ti interessa. Un consiglio, visto che sei alle prime armi, quando hai un blocchetto che non sai come funziona, premi CTRL+H e passandoci sopra col mouse, nella finestrella di help, vedrai un help rapido su cui poi puoi clikkare per approfondire l'help se non ti è chiaro. ---------------------------------------- AUTORE: 11181 DATA :25/05/2017 - 17:43:15 ---------------------------------------- Ottimo, sono riuscito a fare ciò che volevo, grazie mille! ---------------------------------------- ================================================================================ Leggere i dati di un file con più colonne ================================================================================ AUTORE: 11181 DATA :26/05/2017 - 12:59:31 ---------------------------------------- Ciao a tutti, ho una domanda sicuramente banale, ma che non riesco a risolvere, essendo all'inizio con Labview. Vorrei leggere i dati da un file in cui c'è un certo numero di colonne. Ad esempio: 1 2 3 2 3 3 2 2 2 2 2 2 3 4 4 2 0 3 1 2 5 ...una matrice in pratica. Vorrei poter leggere il file e poter salvare come array ciascuna colonna. Vi ringrazio anticipatamente! ---------------------------------------- AUTORE: 11181 DATA :26/05/2017 - 13:38:19 ---------------------------------------- Ho risolto da solo! ---------------------------------------- ================================================================================ Caricare menu da file ================================================================================ AUTORE: 482 DATA :21/06/2017 - 15:38:37 ---------------------------------------- ...ma ciao! sono alle rese conla traduzione di un software che ho sviluppato. Per la prima volta mi trovo a dover tradurre dinamicamente un menu. Pensavo ci fossero delle funzioni per caricare il menu da file invece sembra di no. Confermate? Quindi sembrerebbe che se voglio tradurre il mio menu devo crearmi un file con una tabella di item tags e item names e poi nel software modificare una per una le voci del menu. E' cosi'? \":?:\" ---------------------------------------- AUTORE: 482 DATA :21/06/2017 - 16:05:10 ---------------------------------------- Ok, si puo' caricare da file utilizzando la proprietà RUNTIME Menu Path del VI come da snippet allegato. Per la traduzione ho salvato il menu con un altro nome e ho tradotto voce per voce. ---------------------------------------- ================================================================================ Come velocizzare dei VI ================================================================================ AUTORE: 11020 DATA :28/06/2017 - 17:05:12 ---------------------------------------- Ciao a tutti, ho ereditato i fantastici lavori di altre persone. Ora devo rimetterli a posto. Vi spiego il mio problema. Ho un sw main principale che richiama vari VI. Ho una condizione in cui se richiamo prima un VI, poi l'altro, il secondo VI richiamato si rallenta drasticamente. Esiste la possibilità di dare alta priorità ad entrambi i VI ed evitare che si rallentino?! Sono entrambi molto importanti. Posso far girare un VI su un core e l'altro VI su un altro core?! ---------------------------------------- AUTORE: 482 DATA :29/06/2017 - 07:09:36 ---------------------------------------- ...non auguro a nessunop di prender ein mani i miei VI in futuro \":)\" Detto questo, tramite i cicli "timed loop" e simili , c'e' la possibilità di associare alcuni cicli a determinati core. Comunque nelle proprietà execution di ogni VI, puoi settare le priorità di ogni VI. Personalmente punterei piu' a individuare cosa rallenta chi. Magari c'e' qualche loop non temporizzato nel secondo VI oppure c'e' un accesso concorrente alla stessa risorsa. Oppure ancora puoi provare ad utilizzare "L'ITERATION PARALLELISM" per gli eventuali for loop. ---------------------------------------- AUTORE: 43 DATA :30/06/2017 - 13:05:51 ---------------------------------------- [quote="Gio88":prp0pfkx]Ciao a tutti, ho ereditato i fantastici lavori di altre persone. Ora devo rimetterli a posto. Vi spiego il mio problema. Ho un sw main principale che richiama vari VI. Ho una condizione in cui se richiamo prima un VI, poi l'altro, il secondo VI richiamato si rallenta drasticamente. Esiste la possibilità di dare alta priorità ad entrambi i VI ed evitare che si rallentino?! Sono entrambi molto importanti. Posso far girare un VI su un core e l'altro VI su un altro core?![/quote:prp0pfkx] Prima di pensare alle priorità, prova a "rallentare" adeguatamente il primo VI. E' altamente probabile che nel 1mo VI ci siano loop non temporizzati. Altra causa di rallentamento, può essere generata da un SubVI richiamato in loop dai 2 VI che girano in parallelo. Se tale SubVI NON fosse rientrante, potrebbe appesantire l'esecuzione di entrambi i VI. In questo caso devi rivedere l'architettura di tutto il SW bye ---------------------------------------- ================================================================================ Labview NXG - che ne pensate? ================================================================================ AUTORE: 482 DATA :04/07/2017 - 09:59:09 ---------------------------------------- ...ma ciao! come alcuni di voi sapranno, con la nuova versione di labview è stato introdotto Labview NXG (che sta per next generation). E' praticamente un nuovo ambiente di sviluppo che andrà a sostituire labview (si parla di qualche anno). Stamattian ho seguito un breve webinar di presentazione. Sembra interessante anche s eho paura che mi sconvolgerà la vita. Per il momento si interfaccia solo con hardware DAQ e Instruments control. Praticamente tutti l'IDE sarà in una finestra singola, e non è male come cosa, ci sarà l apossibilità di creare oggetti nel frotn panel enon nel diagram e viceversa e poi no nso che altro. Non ho chiesto se si interfaccia già con i DB, chiedero' questo pomeriggi oche dovrebbe esserci un altro webinar a riguardo. Voi avete avuto modo di provarlo? Che ne pensate? Pronti alla migrazione? ---------------------------------------- AUTORE: 645 DATA :05/07/2017 - 22:47:48 ---------------------------------------- Ma andrà a sostituire LabView? Io credevo fosse una sorta di applicativo semplificato... Allora devo provarlo! ---------------------------------------- AUTORE: 482 DATA :06/07/2017 - 07:02:28 ---------------------------------------- Anche io la pensavo come te, ma l'altro giorno ho chiesto esplicitamente e mi hanno confermato che fra qualche anno (perchè adesso non supporta tutto l'hadware e le funzionalità) andrà a sostituire labview. Non so, non mi smebra male, forse piu' orientato al web ma....boh... ---------------------------------------- AUTORE: 129 DATA :06/07/2017 - 14:11:06 ---------------------------------------- Io ho installato la versione 1 ma non sono rimasto molto entusiasta, mancano ancora tante cose, mi sono iscritto alla demo evaluation che dovrebbe farti scaricare la 2 che già promette avere tante cosettine. Io aspetto con ansia le funzionalità di generazione di codice html direttamente dal vi. Dovrebbero esserci già nella 2 se riuscissi a scaricarla. Qualcuno è iscritto al programma demo? ed è riuscito a scaricare NXG 2.0? Ciao e bentrovati ---------------------------------------- AUTORE: 645 DATA :07/07/2017 - 09:42:40 ---------------------------------------- Anche io mi sono iscritto al programma, vediamo un po'. Sto giocando un po' con la versione 1 e non mi dispiace, all'apparenza si tratta di abituarsi ad un'interfaccia diversa ma mi sembra che si possano fare un sacco di cose. Forse le differenze aumentano confrontando le prestazioni con comandi particolari. Pensavo permettesse di svolgere solo compiti piccoli o semplici. \":D\" ---------------------------------------- AUTORE: 43 DATA :28/08/2017 - 10:02:44 ---------------------------------------- L'ho provato su un PC non mio per 1/2 ora circa. L'impressione è buona. E' un inizio promettente. Finalmente un IDE moderno e simile a quelli degli altri linguaggi di programmazione. bye ---------------------------------------- AUTORE: 645 DATA :01/09/2017 - 14:25:33 ---------------------------------------- Ciao, sto guardando https://youtu.be/N4XCNfGapc4 e mi pare proprio di capire che l'obiettivo sia spostare l'attenzione su browser, cloud e internet... Tutto con semplicità. Cosa ne dite? ---------------------------------------- AUTORE: 482 DATA :19/09/2017 - 12:42:43 ---------------------------------------- ...mmhh..ci stavo guardando un attimino.... Ma se creo un controllo/indicatore, poi come faccio a creare nel diagramme dei property nodes o degli invoke nodes? ---------------------------------------- AUTORE: 645 DATA :20/09/2017 - 11:48:36 ---------------------------------------- Ciao, vi giro una comunicazione di IRS, azienda distributrice di National Instruments, che organizza incontri per le scuole dedicati a LabView NXG. Magari interessa: IRS, distributore esclusivo dei prodotti National Instruments sul territorio nazionale, organizza “Learn & Teach”, tour italiano specificatamente ideato per fornire unità didattiche di immediato impiego nel laboratorio delle scuole medie superiori. Programma della giornata formativa: Ore 9:00 - 12:00 - NI LabVIEW NXG - Introduzione alla piattaforma Ore 14:00 - 17:00 - NI LabVIEW NXG - Realizzazione di un applicativo Date degli eventi: Settembre: 26 Padova, 27 Savona, 28 Torino Ottobre: 3 Viareggio, 4 Viterbo, 6 Salerno, 13 Rimini Novembre: 15 Milano, 16 Bergamo, 17 Parma, 22 Crotone, 23 Martina Franca, 28 Augusta, 29 Marsala Io cerco di organizzarmi per andare, magari alla data di Milano. ---------------------------------------- AUTORE: 645 DATA :23/09/2017 - 16:46:22 ---------------------------------------- Sto giocando un po' con i WebVI ma non ho capito come aprire il Web Component, in pratica il VI che sta girando nella pagina Web creata, da un altro dispositivo: non riesco a collegarmi... Pensavo venisse avviato una sorta di server ma non succede. Forse però mi sto dimenticando qualche passaggio. Voi siete riusciti? ---------------------------------------- AUTORE: 645 DATA :23/09/2017 - 17:05:26 ---------------------------------------- Allego un'immagine per i Property Node. Io ho fatto così... È più macchinoso che in LabView ma forse c'è una strada più veloce. ---------------------------------------- AUTORE: 129 DATA :03/10/2017 - 16:00:51 ---------------------------------------- Io ho provato a fare un web vi (NXG 2), ma ho sempre la freccia rotta con l'errore "il dispositivo non supporta ..." Qualcuno ha avuto lo stesso problema ed è riuscito a fare qualcosa? ---------------------------------------- ================================================================================ invio notifiche su telegram ================================================================================ AUTORE: 2228 DATA :05/07/2017 - 08:26:47 ---------------------------------------- Salve, Ho creato un applicazione in cui vorrei inviare dei dati su un gruppo telegram. Il mio problema è come comunicare con telegram. Qualcuno ha esperienza in merito? ---------------------------------------- ================================================================================ cRIO FTP per accesso file ================================================================================ AUTORE: 3428 DATA :08/08/2017 - 09:53:06 ---------------------------------------- Ciao a tutti sto lavorando con un cRIO 9066 e per l'accesso ai file di log o ad altri file di configurazione ho creato la mia network map drive su windows 7 mettendo la spunta di collegarsi all'avvio al cRIO \\192.168.1.1\files All'avvio la network map di windows identificata con T: da me non viene collegata in automatico. Se dal mio sw (LV2015) provo a puntare a T: mi esce l'errore che il path non esiste. Se prima di farlo faccio doppio click nella network map di risorse del computer (con la X rossa ovvero non riconosciuta) nel giro di un paio di secondi mi apre la cartella, senza richiesta di credenziali o altro. Da quel momento anche il mio sw riesce a puntare la cartella "T:\home\lvuser" ed interagire con i file all'interno. Ho provato di tutto, net use, policy di windows ecc, nulla da fare, questo risulta l'unico modo ma ovviamente non ho la possibilità di aprire prima la cartella e poi avviare l'exe. Ho anche provato a fare il listfolder dando come path \\192.168.1.1\files ma nulla da fare, errore 7. Qualche idea o esiste qualcosa in labview già pronto per comunicare facilmente con l'ftp del crio? Grazie ---------------------------------------- ================================================================================ dinosauro... Nidaq 6009 e lettura in contemporanea segnali ================================================================================ AUTORE: 1427 DATA :03/10/2017 - 20:37:03 ---------------------------------------- ciao a tutti per via di un controllo su una linea, ho rispolverato una vecchia nidaq USB 6009 ed le mie già allora scadenti conoscenze di labview \":-)\" Parliamo di Labview 8.6 se ben ricordo, su un pc con winXP Vorrei acquisire essenzialmente un segnale analogico 0-10V ed IN PARALLELO con un counter misurare la frequenza di un segnale impulsivo che poi converto in una portata. Separatamente, sarebbe facile... infatti acquisisco 500 punti a 500hz analogici (quindi 1s) e medio ed ho il segnale continuo, però la frequenza e' nell'intervallo 5-15 Hz quindi per avere una finestra temporale corretta dovrei campionare almeno 5 secondi.... ma non posso fare questa operazione in serie. Esiste(va) un modo per far lavorare in parallelo le due acquisizioni di segnale cosi' da misurare gli impulsi su una scala temperale definita piu lunga e nel contempo leggere e visualizzare l'altro segnale? grazie per chiunque abbia la bontà d'animo di capire quello che vorrei fare \":-)\" ---------------------------------------- AUTORE: 43 DATA :04/10/2017 - 08:05:56 ---------------------------------------- [quote="gatto_mannaro":1381wjv1]ciao a tutti per via di un controllo su una linea, ho rispolverato una vecchia nidaq USB 6009 ed le mie già allora scadenti conoscenze di labview \":-)\" Parliamo di Labview 8.6 se ben ricordo, su un pc con winXP Vorrei acquisire essenzialmente un segnale analogico 0-10V ed IN PARALLELO con un counter misurare la frequenza di un segnale impulsivo che poi converto in una portata. Separatamente, sarebbe facile... infatti acquisisco 500 punti a 500hz analogici (quindi 1s) e medio ed ho il segnale continuo, però la frequenza e' nell'intervallo 5-15 Hz quindi per avere una finestra temporale corretta dovrei campionare almeno 5 secondi.... ma non posso fare questa operazione in serie. Esiste(va) un modo per far lavorare in parallelo le due acquisizioni di segnale cosi' da misurare gli impulsi su una scala temperale definita piu lunga e nel contempo leggere e visualizzare l'altro segnale? grazie per chiunque abbia la bontà d'animo di capire quello che vorrei fare \":-)\"[/quote:1381wjv1] Sì. Basta acquisire in loop diversi, indipendenti, opportunamente temporizzati. bye ---------------------------------------- ================================================================================ Oggetti a scomparsa ================================================================================ AUTORE: 11159 DATA :06/10/2017 - 11:58:00 ---------------------------------------- Salve a tutti, ho un VI con numerosi indicatori. Per esigenze di leggibilità vorrei che non tutti fossero sempre leggibili ma che alcuni siano a scomparsa, tipo popup che si aprono cliccandoci sopra. avete suggerimenti? ---------------------------------------- AUTORE: 43 DATA :06/10/2017 - 15:17:36 ---------------------------------------- [quote="RoccoSan":3ib32lro]Salve a tutti, ho un VI con numerosi indicatori. Per esigenze di leggibilità vorrei che non tutti fossero sempre leggibili ma che alcuni siano a scomparsa, tipo popup che si aprono cliccandoci sopra. avete suggerimenti?[/quote:3ib32lro] Sì. Usa Tab Controls con bordi e Tabs invisibili. Oppure metti in evidenza l'area rettangolare che può contenere indicatori e controlli diversi, con un bel colore di sfondo. bye ---------------------------------------- AUTORE: 11159 DATA :07/10/2017 - 08:08:39 ---------------------------------------- innanzitutto grazie per la risposta.. ho visto il tab control ma se metto i tab invisibili non capisco poi come scorrere le pagine e come mettere i bordi invisibili. La seconda soluzione non mi è chiara. ---------------------------------------- AUTORE: 482 DATA :09/10/2017 - 07:19:39 ---------------------------------------- Una soluzione che ho usato diverse volte, oltre ai tab, è quella di mettere un pulsante trasparente sopra i controlli che voglio disabilitare. Per abilitarli vado a modificare la proprietà visibile/invisibile del pulsante. In questo modo i miei controlli restano sempre visibili ma disabilitati quando il pulsante appare sopra evitando di usare un property node per ogni controllo. Se vuoi lasciarli grigetti, basta che imposti il pulsante come Disabled&grayout. In alternativa se hai uno sfondo di colore uniforme, puoi anzichè renderlo trasparente, colorare il pulsante del colore dello sfondo. ---------------------------------------- AUTORE: 11159 DATA :09/10/2017 - 16:32:33 ---------------------------------------- io ho una serie di indicatori che vorrei vedere selettivamente sullo stesso VI. mi servirebbe una soluzione del tipo clicco un tasto e compaiono/spariscono a gruppi. ho provato il property node ma sebbene per un pannello semplice come soluzione funzioni dentro il mio vi dove sono presenti cicli e letture/scritture di file non funziona bene,all'inizio funziona ma durante l'esecuzione non risponde più. ---------------------------------------- AUTORE: 482 DATA :10/10/2017 - 07:09:42 ---------------------------------------- Allego un esempio di quello che ti dicevo ---------------------------------------- AUTORE: 11159 DATA :11/10/2017 - 08:48:57 ---------------------------------------- perfetto,grazie.funziona ed è quello che mi serviva..anche se dovrei aprire un property node per ogni oggetto e sono un bel pò. Ps il temporizzatore dentro il while perchè? ---------------------------------------- AUTORE: 482 DATA :12/10/2017 - 07:09:09 ---------------------------------------- perchè per ogni controllo? La soluzione ch eti ho suggerito serve per nascondere gruppi di controlli insieme, se devi farlo per ogni controllo usi direttamente la proprietà del controllo, non usi un bottone che lo nasconda. Il temporizzatore dentro al while ci va SEMPRE (o quasi). Se non metti il temporizzatore, il ciclo while cercherà di utilizzare tutta la velocità del processore causando potenzialmente dei sovraccarichi, quindi impallando il pc e in base a quante altre applicazioni stanno girando sul pc girerà a velocità differenti. Temporizzando, anche solo di 5ms permetti al processore di gestire i tempi di tutto e di garantirti i tempi di esecuzione Geppo! ---------------------------------------- AUTORE: 11159 DATA :12/10/2017 - 15:12:52 ---------------------------------------- per ogni oggetto da far scomparire no viene aperto un property node?? ---------------------------------------- AUTORE: 129 DATA :13/10/2017 - 05:41:37 ---------------------------------------- Ciao, ovviamente ogni pulsante che devi controllare deve essere controllato da una property riferita. MI sembra che devi controllare la propietà visible dei controlli che è una proprietà che appartene alla classe control (tutti i controlli indipendentemente dal tipo). Quindi puoi prenderti una property che prenda tutte le ref dei controlli del vi, quindi con un for vai a cercare la label del controllo che vuoi cambiare, se lo trova allora lo imposti. Un altro modo è crearti un cluster o un array(se tutti dello stesso tipo) delle refs che vui controllare, quindi hai un gruppo pronto di ref. Se poi all'avvio le metti in una FGV ce le hai ovunque nel tuo VI. ---------------------------------------- AUTORE: 482 DATA :13/10/2017 - 07:34:02 ---------------------------------------- [quote="RoccoSan":3ss19lgm]per ogni oggetto da far scomparire no viene aperto un property node??[/quote:3ss19lgm] No, nell'esempio che ho mandato io no, ho usato un pulsante che nasconde GRUPPI di controlli in una volta sola, quindi con un solo property node, nascondi N controlli. ---------------------------------------- ================================================================================ Collegamento modbus ================================================================================ AUTORE: 11159 DATA :11/10/2017 - 06:46:06 ---------------------------------------- Salve a tutti.Dovrei leggere dei dati da degli strumenti collegati tramite modbus e vpn e applicare ad essi dopo averli inseriti in un array un algoritmo. Premesso che l'algoritmo è già testato e funzionante il collegamento degli strumenti è realizzato tramite opc server e i valori al netto di cadute del collegamento (problema presente già a monte)vengono visualizzati sul front panel. Il problema nasce nel momento in cui collego l'array dei valori letti all'algoritmo che si blocca dopo aver eseguito qualche calcolo. Potrebbe essere un problema di sincronizzazione? ---------------------------------------- AUTORE: 482 DATA :11/10/2017 - 07:03:29 ---------------------------------------- Direi che mancano un po' troppi indizi per trovare il tuo problema. Prova a estrapolare dal tuo software la parte che crea problemi e postala qui in modo che possiamo simularne il comportamento. ---------------------------------------- AUTORE: 11159 DATA :11/10/2017 - 08:56:16 ---------------------------------------- più tardi vedo di postare il codice che ora non ho sotto mano.. essenzialmente il problema è che se all'algoritmo aggancio un array di numeri funziona perfettamente. se vorrei farlo funzionare on line dove al posto dei numeri inserisco le letture del modbus che inserisco in un array si blocca e non segue le variazioni degli ingressi. il mio dubbio sta nell fatto che l'array con le misure vada in qualche modo trattato prima di essere inviato all'algoritmo dove finisce dentro un ciclo for ---------------------------------------- ================================================================================ Affiancare due immagini ================================================================================ AUTORE: 482 DATA :19/10/2017 - 12:38:59 ---------------------------------------- ...ma ciao! sto lavorando con vision e non riesco a trovare la soluzione ad un problema che sembrerebbe banale. Acquisisco un immagine a colori, la binarizzo e l'analizzo. In base all'esito delle analisi, vorrei salvare l'immagine originale con a fianco quella binarizzata ma non riesco a capire come fare. Ho provato con i get e set image size ma mi da problemi..mi salva immagini nere.. Suggerimenti? ---------------------------------------- AUTORE: 43 DATA :19/10/2017 - 13:07:14 ---------------------------------------- [quote="gepponline":1guigus0]...ma ciao! sto lavorando con vision e non riesco a trovare la soluzione ad un problema che sembrerebbe banale. Acquisisco un immagine a colori, la binarizzo e l'analizzo. In base all'esito delle analisi, vorrei salvare l'immagine originale con a fianco quella binarizzata ma non riesco a capire come fare. Ho provato con i get e set image size ma mi da problemi..mi salva immagini nere.. Suggerimenti?[/quote:1guigus0] metti programmaticamente le due immagine in una picturebox e poi estrai l'intero contenuto della p. box. bye ---------------------------------------- AUTORE: 482 DATA :19/10/2017 - 15:31:42 ---------------------------------------- mmhh..interessante...lo valuto, anche se mi sembra strano non ci sia qualcosa per farlo con le funzioni vision. ---------------------------------------- AUTORE: 482 DATA :24/10/2017 - 07:57:46 ---------------------------------------- Ho trovato la soluzione coi vi Vision e la allego. Ho provato anche la soluzione della picturebox,allego anch equella, solo che inizialmente sembrava funzionare perchè la eseguivo con immagini Grayscale U8. Utilizzando immagini RGB(u32) non riesco a farlo funzionare... ---------------------------------------- ================================================================================ Labview e Raspbian ================================================================================ AUTORE: 2196 DATA :28/10/2017 - 20:44:13 ---------------------------------------- HO un mio vi sviluppato in labview 2013 che vorrei compilare per raspbian. Qualcuno sa si si può fare e sopratutto se lo ha fatto ? ---------------------------------------- AUTORE: 482 DATA :30/10/2017 - 07:22:15 ---------------------------------------- Si puo' fare perchè i VI sono cross platform, il problem è che per farlo devi avere labview per Linux. Il problema è che ufficialmente Labview supporta solo RedHat, quindi pacchetti RPM. Io per farlo funzionare sotto ubuntu, tempo fa avevo ocnvertito tutti i file di installazione da RPM a DEB e in qualche modo ci ero riuscito. ---------------------------------------- AUTORE: 2196 DATA :16/12/2017 - 22:23:36 ---------------------------------------- Chiesto alla NI in occasione delle NIDays di Milano, non si può compilare per raspbian purtroppo. ---------------------------------------- AUTORE: 482 DATA :18/12/2017 - 08:24:19 ---------------------------------------- Come dicevo, ufficialmente no, ma con alien, si riesce \";)\" ---------------------------------------- AUTORE: 2196 DATA :18/12/2017 - 10:25:02 ---------------------------------------- Perdonami ma devono essere compilati per arm e non per x86....è il compilatore quindi che manca. ---------------------------------------- AUTORE: 482 DATA :18/12/2017 - 10:56:11 ---------------------------------------- giusto...consideravo solo la questione debian e non il processore, sorry \";)\" Perchè se chiedi a National ti dicono che per Ubuntu non puoi fare niente ad esempio ---------------------------------------- AUTORE: 129 DATA :11/03/2018 - 06:34:04 ---------------------------------------- Hai provato ad usare LINX? Per ARm direttamente non penso proprio sia possibile https://forums.ni.com/t5/LabVIEW/Labvie ... -p/3686642 ---------------------------------------- ================================================================================ Buffer circolare ================================================================================ AUTORE: 3428 DATA :03/11/2017 - 06:46:21 ---------------------------------------- Ciao a tutti, mi servirebbe creare una FGV per un buffer circolare. Mi servirebbero gli ultimi 5 secondi max di un'acquisizione che va a 10kh, possibile in qualsiasi momento. La FGV deve essere valida per almeno 6 acquisizioni identiche in parallelo, ognuna con 5 segnali a 10khz, quindi ho un 3D array e le acquisizioni le gestisco tramite la page. In allegato quello che ho fatto. Il buffer sarà sempre in SET per tutto il tempo (l'acquisizione non si ferma mai) e non posso permettermi di fare degli start e stop della misura. Nelle parti di codice dove mi servirà farò il GET e taglierò in base a quanto sengale mi servirà. Sembra funzionare. [b:306mxk3z]Siccome sarà sempre in background vorrei sapere se secondo voi c'è un metodo più elegante per fare il SET, perchè credo che ci sia memory allocation e vorrei proprio evitarla. Il replace subset del 2D array non si può fare credo quindi non vedo altra soluzione del build o insert???[/b:306mxk3z] Grazie ---------------------------------------- AUTORE: 301 DATA :09/11/2017 - 08:40:13 ---------------------------------------- Mi è capitato di dover fare buffer circolari ed ho ovviato con una semplice coda..... Lunghezza della coda definita dal numero di punti che vuoi in memoria, accodamento tramite "Lossy Enqueue"(in automatico si gestisce l'IN/OUT dei dati piu recenti/vecchi) e preview della coda per leggere cio che hai in memoria. Aris ---------------------------------------- AUTORE: 3428 DATA :09/11/2017 - 10:36:05 ---------------------------------------- Ciao Aris, non la vedo come una bella soluzione. Quando mi serviranno i dati dovrò per forza fare il build di tutti i pacchetti 2D DBL accodati per il numero di pacchetti che mi serviranno e ricostruire la forma d'onda... ---------------------------------------- AUTORE: 301 DATA :09/11/2017 - 11:09:06 ---------------------------------------- Vero, che è cio che fai oggi nel "SET", quindi dipende da dove vuoi essere piu "veloce". Comunuqe, per cercare di ottimizzare la memoria, usare le code mi sembra la via piu sicura e rapida....ma magari mi perdo qualche dettaglio io. ---------------------------------------- AUTORE: 43 DATA :09/11/2017 - 14:15:30 ---------------------------------------- [quote="renaso":2oc364y3]Ciao a tutti, mi servirebbe creare una FGV per un buffer circolare. Mi servirebbero gli ultimi 5 secondi max di un'acquisizione che va a 10kh, possibile in qualsiasi momento. La FGV deve essere valida per almeno 6 acquisizioni identiche in parallelo, ognuna con 5 segnali a 10khz, quindi ho un 3D array e le acquisizioni le gestisco tramite la page. In allegato quello che ho fatto. Il buffer sarà sempre in SET per tutto il tempo (l'acquisizione non si ferma mai) e non posso permettermi di fare degli start e stop della misura. Nelle parti di codice dove mi servirà farò il GET e taglierò in base a quanto sengale mi servirà. Sembra funzionare. [b:2oc364y3]Siccome sarà sempre in background vorrei sapere se secondo voi c'è un metodo più elegante per fare il SET, perchè credo che ci sia memory allocation e vorrei proprio evitarla. Il replace subset del 2D array non si può fare credo quindi non vedo altra soluzione del build o insert???[/b:2oc364y3] Grazie[/quote:2oc364y3] ah beh! Se si tratta di eleganza, allora possiamo dare libero sfogo alla fantasia. L'array 3D non si può vedere: meglio avere un VI "gestore di buffer circolare" rientrante e istanziarne tanti quante sono le stazioni a disposizione. In questo modo potresti gestire un buffer bidimensionale per ogni stazione. Inoltre i VI instanziati girerebbero in parallelo. evitando che l'accesso il lettura/scrittura di un buffer sia vietato per una stazione mentre si sta accedendo al buffer di un'altra. Il codice eseguibile e sorgente del VI sarebbe comunque unico, evitando duplicazioni che inficerebbero la manutenibilità Vietatissimo l'uso di "Build Array" e pure di "Transpose 2D Array". bye ---------------------------------------- AUTORE: 129 DATA :13/11/2017 - 12:53:38 ---------------------------------------- Io non ho capito usi un array 3d per salvare una tabella 2d e due scalari (STation e dimension)? Perchè non usare un cluster per ogni station con un 2d per le misure e 1 int per la dimension. Perchè poi le code no, se usi il loss enqueue e il get status con una coda a dimensione fissa ... Ti allego un esempio ---------------------------------------- AUTORE: 3428 DATA :17/11/2017 - 14:32:51 ---------------------------------------- Ciao, intanto grazie a tutti per i feedback. il discorso è migliorare le performance della vi. Anzichè la 3a dimensione potrei anche gestire 6 shifter register e gestire la cosa con un case a 6 stati. Ripeto quello che vorrei evitare con le code è quello di ricostruirmi ogni volta l'array in uscita nella chiamata GET per intenderci ma credo sia inevitabile. Diciamo che il buffer sia di 1000 elementi ed ad ogni lettura metto 100 elementi. Creo una coda di 10 elementi Il primo set metto dentro 100 elementi, il secondo set 100, 3° 100, ... sempre 100.h Di fatto avrò una coda composta da 10 elementi di 100 pti l'uno in 2D array double. Il preview mi farebbe vedere solo l'ultimo ma il get status tutti. Ora avrò 10 pacchetti 2D da ribuildare per far si di avere 1 unico 2D con tutta la storia, sbaglio? è inevitabile Le code in termini di efficienza sarebbero il top ed è quello che mi serve, perdere 2 ms per ricostruire fuori non dovrebbe essere un problema o vedete soluzioni migliori? Non ho capito il cluster come ottimizzerebbe la gestione? Il 3D mi gestisce la stazione. Il 2D lo storico acquisizione del buffer. Grazie ---------------------------------------- AUTORE: 3428 DATA :20/11/2017 - 08:55:48 ---------------------------------------- Ciao, ho rifatto la vi con le code Che ne pensate? ---------------------------------------- AUTORE: 129 DATA :11/03/2018 - 06:40:07 ---------------------------------------- Esatto ---------------------------------------- ================================================================================ Error -21503 occurred at niHWS Open File.vi ================================================================================ AUTORE: 11134 DATA :01/12/2017 - 08:55:00 ---------------------------------------- Buongiorno a tutti, sto creando un tool che mi generi dei file HWS. Un tempo funzionava correttamente e ora anche le versioni più vecchie hanno smesso di funzionare dandomi l'errore: [size=150:1pwq9w3a][b:1pwq9w3a]Error -21503 occurred at niHWS Open File.vi[/b:1pwq9w3a] NIHWS: An error occurred while attempting to open the file. This error is returned if you specified an invalid path, if there is a low memory situation, or if the file is already in use by another application.[/size:1pwq9w3a] Lo stesso tool su un PC con Windows 10 funziona ed anche su un altro pc con Windows 7/ Service Pack1. Premetto che anche io ho Windows7 Service Pack1. A cosa potrebbe essere dovuto? Grazie 1000 ---------------------------------------- AUTORE: 129 DATA :12/03/2018 - 18:28:30 ---------------------------------------- Sembrerebbe che non si chiuda correttamente e quindi rimane inaccessibile dandoti quell'errore. Probabilmente se funziona su altri pc, forse hai un errore da un altra parte che non te lo fa chiudere. ---------------------------------------- ================================================================================ Leggere un CVS con Delimited spreadsheet ================================================================================ AUTORE: 10888 DATA :15/12/2017 - 15:14:31 ---------------------------------------- Ciao, scusate il quesito da beginner ma.... .. sto provando a leggere un file CVS (fatto di 2 colonne e 196 righe) con LV 2016. Quello che faccio e' : 1) Usando il [b:33uikmvw]Read Delimited SpreadSheet[/b:33uikmvw] giro l'uscita [b:33uikmvw]all rows[/b:33uikmvw] ad un ciclo [b:33uikmvw]for[/b:33uikmvw]. Gli input di [b:33uikmvw]Read Delimited SpreadSheet[/b:33uikmvw] sono quelli di default e l'errore e' nullo. 2) all'interno del [b:33uikmvw]for[/b:33uikmvw] con un [b:33uikmvw]index array[/b:33uikmvw], scompatto le all rows negli elementi che voglio visualizzre. 3) vedo solo gli elemententi della prima colonna. 4) usando [b:33uikmvw]HighLight Execution[/b:33uikmvw] vedo che il secondo elemento (associato alla seconda colonna del file) e' sempre nullo, mentre il primo (associato alla prima)evolve correttamente . Ho provato a buttare l'uscita [b:33uikmvw]all rows[/b:33uikmvw] dentro un array bidimensionale, senza usare cicli, ed il risultato e' lo stesso. Suggerimenti? Grazie ---------------------------------------- AUTORE: 482 DATA :18/12/2017 - 07:16:57 ---------------------------------------- Di sicuro nel tuo vi fai qualcosa di sbagliato o c'e' qualcosa di sbagliato nella formattazione del file, ma se non alleghi la parte incriminata del tuo VI è difficile darti una mano. Una cosa che mi viene in mente è che potresti non aver specificato il corretto carattere di tabulazione. I file standard CSV hanno il ; come carattere delimitatore. Quindi nel blocchetto di lettura da spreadsheet file dovrai dirgli che il carattere delimitatore è il ; altrimenti di default considera il TAB come nei file xls. ---------------------------------------- AUTORE: 10888 DATA :18/12/2017 - 16:10:35 ---------------------------------------- Ciao a tutti, in allegato il VI incriminato ---------------------------------------- AUTORE: 482 DATA :19/12/2017 - 07:15:43 ---------------------------------------- ..ma ciao! Hai messo i due punti anzichè il punto e virgola come carattere delimitatore. Altra cosa...è un file con solo valori numerici? ---------------------------------------- AUTORE: 10888 DATA :19/12/2017 - 13:53:53 ---------------------------------------- scusate...mi sto dando del BIIIIIIPPPPP, visto e rivisto 200 volte. ---------------------------------------- ================================================================================ Lentezza listbox ================================================================================ AUTORE: 2196 DATA :16/12/2017 - 22:26:01 ---------------------------------------- Uso il codice allegato nell'immagine per popolare una listbox...ma ho problemi di lentezza. E' un problema della mia implementazione ? [img:2ns2u7fo]http://i64.tinypic.com/30kqfjc.png[/img:2ns2u7fo] ---------------------------------------- AUTORE: 301 DATA :20/12/2017 - 15:11:18 ---------------------------------------- Come prima cosa, eliminerei il for in cui hai messo la conversione in stringa. Secondo passo potrebbe essere disabilitare l'aggiornamento del front panel mentre aggiorni la lista. Aris ---------------------------------------- AUTORE: 2196 DATA :20/12/2017 - 18:58:43 ---------------------------------------- [quote="aris":1fno21ze] Secondo passo potrebbe essere disabilitare l'aggiornamento del front panel mentre aggiorni la lista. [/quote:1fno21ze] Grazie ma come si fa ? ---------------------------------------- AUTORE: 2196 DATA :20/12/2017 - 19:14:19 ---------------------------------------- Trovato:https://forums.ni.com/t5/Example-Programs/How-to-Disable-Enable-Front-Panel-Updates/ta-p/3530344 ---------------------------------------- AUTORE: 301 DATA :21/12/2017 - 10:29:17 ---------------------------------------- Esatto, scusa, davo per scontato che lo sapessi. Ad ogni modo, credo che nessuna delle due soluzioni ti porti grandi benefici, se cosi fosse (non so quanti dati hai in coda), potresti pensare di accodare i valori gia come stringa oppure crearti una seconda coda in cui metterli ed utilizzare direttamente quella per visualizzare i dati nella listbox. Aris ---------------------------------------- AUTORE: 2196 DATA :05/01/2018 - 23:04:58 ---------------------------------------- [quote="aris":2a214wzd]Esatto, scusa, davo per scontato che lo sapessi. Ad ogni modo, credo che nessuna delle due soluzioni ti porti grandi benefici, se cosi fosse (non so quanti dati hai in coda), potresti pensare di accodare i valori gia come stringa oppure crearti una seconda coda in cui metterli ed utilizzare direttamente quella per visualizzare i dati nella listbox. Aris[/quote:2a214wzd] Niente da fare. Con l'inserimento dei dati nella listbox la coda si riempie ad una velocità incredibile, se invece disabilito la parte relativa alla listbox lasciando ad esempio il ciclo prima la coda rimane vuota. Ne deduco che è la listobox ad essere lenta mi chiedo se ci sia un altro modo per inserire elementi oppure se ci sia un altro oggetto di labview più performante. ---------------------------------------- AUTORE: 301 DATA :08/01/2018 - 09:26:56 ---------------------------------------- non credo sia tanto l'inserimento in listbox, quanto la conversione numero/stringa a rallentarti l'esecuzione. ---------------------------------------- AUTORE: 129 DATA :11/03/2018 - 05:59:28 ---------------------------------------- Ci sono due possibilità oltre quella di eliminare il for per la conversione. Una soluzione molto usata con i tree e in genere dove ci sono controlli molto lunghi da aggiornare è quella di mettere in pausa l'aggiornamento del panel fintanto che non hai eseguito l'aggiornamento del controllo, utilizzando la propietà DeferPanelUodates. La seconda è piu che altro un dubbio, non è che la pausa è dovuta al fatto che non arrivano dati in coda e quindi il dequeue rimane in attesa perchè non avendo messo nulla sul timeout(-1) rimane in attesa? In questo caso ti conviene se il codice dovesse fare qualcos'altro anche se non riceve i dati, mettere un timeout collegato ad un case, se riceve dati esegue aggiornamento listbox, altrimenti nel caso timeout non fa nulla ma procede con il codice successivo. ---------------------------------------- ================================================================================ esportare dati da diagramma xy con pulsante ================================================================================ AUTORE: 1308 DATA :26/01/2018 - 10:33:34 ---------------------------------------- Ciao a tutti, sono giorni che sto navigando per trovare qualche discussione o qualche esempio che potesse permettermi di fare da solo ma non ci sono riuscito. il VI serve per verificare, mediante un grafico XY se la curva acquisita sta all' interno di 2 bande. a destra nell immagine si vede il case structure con dentro il di Grafico XY. il mio obbiettivo è quello di arrivare ad esportare mediante un comando labview il salvataggio dei valori che mi costruiscono il grafico. il metodo del tasto destro EXPORT DATA TO EXCEL sarebbe il massimo ma non posso farlo perche ogni volta apre in automatico il foglio con i dati che poi sarebbe da nominare e salvare, però il modo in cui sono formattati i dati con quel comando sarebbe per me gia un ottimo punto di arrivo. ci sono un sacco di esempi in rete ma non sono riuscito a sfruttarli per il mio obbiettivo. potete darmi qualche dritta o linkarmi qualcosa ? grazie ---------------------------------------- AUTORE: 482 DATA :29/01/2018 - 07:35:47 ---------------------------------------- ...ma ciao! partiamo daL FATTO CHE IL GRAFICO xx è composto d aun array di cluster. Ogni cluster è coposto da due array, uno per le X e uno per le Y. Potresti procedere cosi': Prendi gli array cosi' come sono e li metti insieme prima di passare dal cluster che li mette a grafico. Dovrai ottenere alla fine un array bidimensionale di questo tipo: Prima colonna= X del primo grafico Seconda colonna= Y del primo grafico Terza colonna= X del secondo grafico Quarta colonna= Y del secondo grafico Ottenuto questo array, lo puoi dare in pasto al blocchetto che salva in excel. Vedi tu poi se vuoi aggiungergli l'intestazione ai campi o meno e lo potrai fare con i blocchetti di manipolazione degli array. ---------------------------------------- AUTORE: 1308 DATA :30/01/2018 - 08:03:42 ---------------------------------------- intanto grazie per l'interesse. siccome gli array mi sono un po ostici non ho capito con certezza quello che mi hai detto ma cci provo a lavorare un po su. sbagliando si impara. grazie ancora. ---------------------------------------- AUTORE: 1308 DATA :01/02/2018 - 07:18:30 ---------------------------------------- Ciao, Ho provato e funziona. ora mi accorgo che il problema non era cosi insormontabile \":D\" \":D\" \":D\" era li davanti ma mi ostinavo... ho una domanda: se uso come report generator uso i task specifici di excel è inevitabile che al salvataggio dei dati mi si apre excel ? ---------------------------------------- AUTORE: 482 DATA :05/02/2018 - 07:28:34 ---------------------------------------- Sai che non lo so ma ho paura di si usando il report generation toolkit (anche se mi sembra strano). Detto questo, stai attento al report generation toolkit con office se devi distribuire l'applicazione, perchè il tutto si basa sulla versione di office che hai installata sul pc di sviluppo. Se poi distribuisci su una pc con una versione differente, non funziona piu' niente. Io anni fa per ovviare a questo problema, sono passato da un report Office a un report in HTML apribile da qualsiasi browser. Mi sono creato un template mettendo dei tag specifici dove mi interessava e poi andavo a sostituire il testo utilizzando dei semplici blocchetti id testo. ---------------------------------------- AUTORE: 1308 DATA :06/02/2018 - 10:49:35 ---------------------------------------- ciao, sono riuscito a non far aprire excel dopo il salvataggio del file. Ho risolto mettendo NO CHANGE nel nel new_report.vi ora pero ho un altro problema con la gestione dei vi di excel e application builder. anche per questo ci sono un mare di casi simili sul web ma anche le guide ufficiali sul sito della NI non mi risolvono il problema, pero per approfondire questo apriro un altro topic, qui andrei fuori tema rispetto al titolo. ---------------------------------------- ================================================================================ Listbox in labview NXG ================================================================================ AUTORE: 482 DATA :29/01/2018 - 10:39:10 ---------------------------------------- ...ma ciao! in sti giorni mi sto divertendo un po' con NXG soprattutto con i WebVI. A malincuore mi sono trovato fermo nel fare una banalità. ....popolare una listbox programmaticamente. In labview tradizionale creavo un bel property node strings e ci mettevo i valori. MA qui non c'e' la voce per creare il property node. Come si fa? ---------------------------------------- AUTORE: 301 DATA :31/01/2018 - 14:36:32 ---------------------------------------- Ciao Geppo, ma stai usando la versione 2.0? Ieri sera ho buttato l'occhio (confesso che non ho fatto un gran che con nxg) e ho strovato solo una table (string) ma non la listbox..... Aris ---------------------------------------- AUTORE: 482 DATA :05/02/2018 - 07:40:53 ---------------------------------------- si, 2.0 I ring sono in unriquadro a parte con i combobox ecc.. ---------------------------------------- ================================================================================ Errore del excel rep generator dopo application builder ================================================================================ AUTORE: 1308 DATA :06/02/2018 - 11:13:09 ---------------------------------------- ciao a tutti mi spiego meglio; ho un vi dove salvo alcuni dati in un foglio excel con le dovute condizioni e apparentemente lanciando il programma sembra fare quello che volevo \":D\" cioè acquisisco alcuni valori salvo e mi genera il file .XLS senza alcun problema poi creo l'eseguibile con Application builder, il VI funziona ma quando salvo esce un errore. ho provato a seguire anche questa guida ma http://digital.ni.com/public.nsf/allkb/ ... 62006AD402 non ha risolto il mio problema. dove devo agire ? PS questo è il messaggio che mi genera l'application builder durante la creazione [i:29zz9c99]Error 1003 occurred at AB_Get_Detailed_BrokenVI_Message.vi -> AB_Targetfile.lvclass:Open_Top_Level_VIs.vi Possible reason(s): LabVIEW: The VI is not executable. This error may occur because the VI is either broken or contains a subVI that LabVIEW cannot locate. Select File>>Open to open the VI and verify that you can run it. ========================= LabVIEW: The VI is not executable. This error may occur because the VI is either broken or contains a subVI that LabVIEW cannot locate. Select File>>Open to open the VI and verify that you can run it.[/i:29zz9c99] ---------------------------------------- AUTORE: 1308 DATA :06/02/2018 - 11:16:50 ---------------------------------------- l'immagine 2 ( che non so perche ma mi ha messo il link mentre l'altra no) è l'errore che mi genera il vi.exe quando provo a salvare. ---------------------------------------- AUTORE: 482 DATA :08/02/2018 - 07:07:51 ---------------------------------------- Mi pare di ricordare ci fossero da includere alcuni file nell'eseguibile con il report toolkit (altro motivo per cui avevo poi deciso di passare su html). E' un po' vecchiotto questo documento, ma magari è quello che ti serve. http://zone.ni.com/reference/en-XX/help ... lone_apps/ ---------------------------------------- AUTORE: 129 DATA :11/03/2018 - 06:31:10 ---------------------------------------- Confermo dovresti includere le classi del report toolkit che trovi nelle dipendenze quando le usi. Ma l'errore che ricevi potrebbe anche essere dovuto a un accesso corrotto durante la compilazione, cosa che capita spesso cquando usi cartelle sincronizzate (es. GDRive o DBox) , prova a compilare su una cartella diversa es. Desktop oppura diabilita la sincronizzazione di Gdrive(o altro).. Prova anche questo per il discorso delle classi https://forums.ni.com/t5/LabVIEW/Buildi ... -p/3354794 ANcora potrebbe essere capitato(a me è capitato:-() che hai installato qualche libreria che condivide le librerie del report toolkit, es. ce n'era una per il supporto a OpenOffice, quellacreava qualche problema. ---------------------------------------- ================================================================================ Package manager feed ================================================================================ AUTORE: 482 DATA :13/02/2018 - 13:25:45 ---------------------------------------- ..ma ciao! ho un problemino. Per ovviare a un bordello che ha fatto NI con NXG, ho dovuto rimuovere manualmente un sacco di file, ma credo di aver eliminato troppa roba \":)\" Per questo motivo avrei bisogno del FEED pe rreinstallare il WEB MODULE di NXG. Se qualcuno ha tempo, dovrebbe aprire il package manager (strumento che odio perchè non permette di riparare i paccketti) andare sull'ingranaggino in alto a destra e alla voce FEEDS vedere se ha la voce WEB MODULE o qualcosa id simile e clikkando su edit, passarmi il contenuto di quel feed. Perchè quando provo ad installare il web module mi dice ch enon riesce a localizzare il pacchetto. grazie! ---------------------------------------- AUTORE: 301 DATA :16/02/2018 - 13:20:13 ---------------------------------------- ni-labview-nxg-2-0-0-web-module-2-0-released-critical http://download.ni.com/support/nipkg/pr ... d-critical ni-labview-nxg-2-0-0-web-module-2-0-released http://download.ni.com/support/nipkg/pr ... 0/released Spero di aver imbrocato la roba giusta.... Aris ---------------------------------------- AUTORE: 482 DATA :16/02/2018 - 13:38:19 ---------------------------------------- A tutti e due i link mi dice errore 403 Forbidden \":(\" ---------------------------------------- AUTORE: 301 DATA :16/02/2018 - 17:12:07 ---------------------------------------- Aspè......aprendo i link da un pc dove non ho il package manager, da errore anche a me.... Mi sa che ti si è corrotto qualcosa in quello (e non trova nemmeno le autorizzazioni). Aris ---------------------------------------- AUTORE: 482 DATA :19/02/2018 - 07:17:52 ---------------------------------------- Infatti io ho un dubbio che nonostante le disinstallazioni e reinstallazioni il file nipkg.ini del package manager sia rimasto quello della versione beta. Posto qui il mio nipkg.ini, puoi conforntarlo col tuo e vedere se sono uguali. Ho sto dubbio perchè all'interno del file ho un sacco di path riferiti a un acartella beta2. grazie! ---------------------------------------- AUTORE: 301 DATA :19/02/2018 - 18:54:59 ---------------------------------------- ehm.......ho un po meno roba..... ---------------------------------------- AUTORE: 482 DATA :20/02/2018 - 13:18:49 ---------------------------------------- Ho provato brutalmente a sostituire il mio col tuo ma non funge...ho reinstallato tutto il package manager cancellando manualmente la cartella di supporto e ora ho un npkg.ini simile al tuo ma il mio problema persiste. ---------------------------------------- AUTORE: 301 DATA :20/02/2018 - 15:43:48 ---------------------------------------- mmmmhhhhhhhh..... Domanda stupida, 32 o 64 bit?!?!? A me si è installato sotto il 64.... ---------------------------------------- AUTORE: 482 DATA :22/02/2018 - 07:04:49 ---------------------------------------- non vorrei dire cazzate ma credo che NXG sia solo per 64 bit. Comunque sono in 64 bit anche col sistema operativo ---------------------------------------- AUTORE: 129 DATA :11/03/2018 - 06:23:30 ---------------------------------------- NXG solo per 64bit confermo. ---------------------------------------- ================================================================================ Modificare il font al runtime menu ================================================================================ AUTORE: 482 DATA :28/02/2018 - 11:23:25 ---------------------------------------- ...ma ciao! non l'ho mai fatto quindi non so se si puo' fare. E' possibile modificare il font del runtime menu? Oppure è di default l'application font? E anche in quel caso, com'e' la sintassi per cambiare l'application font nel file .ini? graazie! ---------------------------------------- AUTORE: 301 DATA :28/02/2018 - 13:07:38 ---------------------------------------- Vedi il link sotto, cambiando appFont credo si agisca sui menu (ma non l'ho mai fatto nemmeno io). [url:i3yd2y3a]https://labview.brianrenken.com/INI/font.htm[/url:i3yd2y3a] Aris ---------------------------------------- ================================================================================ Configurare Porte IO integrate nel PC ================================================================================ AUTORE: 482 DATA :09/03/2018 - 07:40:16 ---------------------------------------- ...ma ciao! ho appena preso un PC industriale ch eal suo interno ha di default delle porte IO e mi piacerebbe utilizzarle. Nel manuale, c'e' questo esempio, ma non so come portarlo in labview. [code:2t5esa2n]#define AddrPort 0x4E #define DataPort 0x4F <Enter the Extended Function Mode> WriteByte(AddrPort, 0x87) WriteByte(AddrPort, 0x87) //Must write twice to entering Extended mode <Select Logic Device> WriteByte(AddrPort, 0x07) WriteByte(dataPort, 0x06) //Select logic device 06h <Input Mode Selection> //Set GP70 to GP77 input Mode WriteByte(AddrPort, 0x80) // Select configuration register 80h WriteByte(DataPort, 0x0X) //Set (bit 0~7) = 0 to select GP 70~77 as Input mode. <input Value> WriteByte(AddrPort, 0x82) // Select configuration register 82h ReadByte(DataPort, Value) // Read bit 0~7(0xFx)= GP70 ~77 as High. <Leave the Extended Function Mode> WriteByte(AddrPort, 0xAA)[/code:2t5esa2n] Che funzioni dovrei usare? ---------------------------------------- AUTORE: 129 DATA :11/03/2018 - 06:20:13 ---------------------------------------- Tempo fa avevo scritto un articoletto [url=https://www.bytelabs.it/bytefiles/Accesso%20diretto%20alle%20risorse%20IO%20in%20LabVIEW.PDF:3o1fj9lj]Accesso alle porte con le funzioni PortIn e Port Out[/url:3o1fj9lj] In effetti in labview nativamente non ci sono piu, quindi puoi scaricarti la libreria ACcessHW da [url=http://www.ni.com/example/26132/en/:3o1fj9lj]qui[/url:3o1fj9lj] Potresti usare anche OpenG/portIO è una libreria di JKI che dovresti trovare nel VIPM. ---------------------------------------- AUTORE: 482 DATA :12/03/2018 - 13:08:19 ---------------------------------------- Infatti avevo già usato tempo fa la porta parallela. E avevo visto le funzioni OpenG. Nel forum ufficiale di labview dicevano pero' che è un problema di nuovi sistemi operativi che impediscono l'accesso diretto alle porte. Puo' essere? ---------------------------------------- AUTORE: 129 DATA :12/03/2018 - 18:21:48 ---------------------------------------- Già sembrerebbe massimo fino a w7 32bit. http://digital.ni.com/public.nsf/allkb/ ... E200633507 ---------------------------------------- AUTORE: 482 DATA :13/03/2018 - 07:21:19 ---------------------------------------- Eppure il programma in C dovrebbe funzionare correttamente visto che il fornitore mi conferma che i suoi clienti lo usano costantemente....che ci sia stata tolta dal costruttore questa limitazione? Appena finisco di installare l'ambiente di sviluppo su quel pc vi faccio sapere. ---------------------------------------- AUTORE: 482 DATA :16/03/2018 - 09:44:39 ---------------------------------------- Aggiornamento. Ho trovato una dll che dovrebbe fare al caso mio. Allego il programma di test. probabilmente nonv i funzionerà s enon avete i driver degli IO. Sembra funzionare tutto ma ottengo un errore sull'ultimissimo VI che uso che è quello relativo agli input Credo che stia sbagliando qualcos anella configurazione della chiamata alla DLL nell'ultimo blocchetto ma non capisco dove. Purtroppo non ho l'help della dll, ma guardando il file cpp che allego sembra avere uno short come ingresso e uno short come uscita. e credo di averli messi giusti. Qualcuno ha voglia e tempo di dargli un occhio? ---------------------------------------- AUTORE: 482 DATA :16/03/2018 - 10:08:56 ---------------------------------------- \":oops:\" \":oops:\" \":oops:\" \":oops:\" \":oops:\" \":oops:\" \":oops:\" \":oops:\" \":o\" \":o\" \":o\" Come non detto, dimenticatevi l'ultimo post \":)\" Avevo cmabiato ingressi e uscite ma avevo dimenticato di cambiare function nel VI di lettura. Adesso tutto sembra funzionare. Cosi' adesso ho un pc con 16 IO optoisolati integrati funzionanti \";)\" ---------------------------------------- ================================================================================ Interpretare stringa SQL ================================================================================ AUTORE: 482 DATA :22/03/2018 - 08:03:22 ---------------------------------------- ...ma ciao! ho un campo testuale in cui l'addetto mi inserisce un filtro in questa maniera: [code:129asbwa]Luca AND (Marco OR Gigi)[/code:129asbwa] Sfruttando operatori logici AND OR e parentesi a piacimento. Devo interpretare questa stringa per fare una select su un database utilizzando l'operatore Like. Qualche suggerimento su come fare? ---------------------------------------- AUTORE: 129 DATA :23/03/2018 - 14:15:45 ---------------------------------------- Se ti riferisci alla sintassi SQL, potrebbe essere: [code:12gbd3rs]SELECT TabUSer.[user], * FROM TabUSer WHERE user='gigi' AND ('marco' OR 'gigi'); [/code:12gbd3rs] ---------------------------------------- AUTORE: 482 DATA :23/03/2018 - 15:16:52 ---------------------------------------- ecco..immaginavo di non essere stato chiaro. Il problema non è come interpretarla in SQL, ma come trasformare quella stringa in una stringa WHERE con la sintassi corretta per SQL utilizzando LabVIEW. Quindi discriminare cio' che è tra parentesi da cos anon lo è e identificare i valori. Quindi do in pasto al mio VI la stringa Luca AND (Marco OR Gigi) E devo ottener ein output: WHERE INTERV1.USER Like '%Luca%' AND (INTERV1.USER Like '%Marco%' OR INTERV1.USER Like '%Gigi%') gli OR, gli AND e le parentesi possono essere quanti si vuole. ---------------------------------------- AUTORE: 129 DATA :25/03/2018 - 14:08:44 ---------------------------------------- Immaginavo, dovresti giocarci un po usando search and replace string, tasto destro spunti regular expression. [quote:19kbpa7d]Questa l'ho imparata mentre cercavo qualcosa per aiutarti \";-)\"[/quote:19kbpa7d]Il regular Expression (anche il match regular expression) usa il PCRE (Perl Compatible Regular Expression) quindi puoi usare i regex, a questo punto ti trovi un mare di info su internet per fare il parse di una stringa usando regex pcre. Ti allego un esempio, da completare che usa Replace STring in modalità regular espression. Trovi anche una tabella con le codifiche regex Buon lavoro Geppo \":-)\" ---------------------------------------- AUTORE: 482 DATA :26/03/2018 - 09:07:25 ---------------------------------------- Sapevo di dover giocar eun po' con le stringhe ma non riuscivo a trovare la chiave per evitare problemi con parentesi annidate ecc. Alla fine ho risolto cosi' e pare funzionare. \":wink:\" ---------------------------------------- AUTORE: 129 DATA :26/03/2018 - 10:25:07 ---------------------------------------- Ottimo ---------------------------------------- ================================================================================ NI MAX non mi rileva uno strumento collegato tramite USB ================================================================================ AUTORE: 822 DATA :03/04/2018 - 15:11:23 ---------------------------------------- Ciao a tutti! Sto cercando di sviluppare dei driver con LabVIEW per uno strumento che si collega al PC tramite USB. Il mio problema è che su NI max non vedo lo strumento. Nelle periferiche di windows (uso windows 7 - 64 bit), lo strumento è riconosciuto come: USBIO controlled devices -> USBIO Device: VID=03EB PID=2FFB Lo strumento con il suo software installato sul PC funziona correttamente. Come posso risolvere? ---------------------------------------- AUTORE: 822 DATA :04/04/2018 - 16:10:45 ---------------------------------------- Ciao, potrebbe essere utile a qualcuno in futuro. Ho risolto seguendo questo articolo: [url:mwny8a12]http://www.ni.com/tutorial/4478/en/[/url:mwny8a12] ---------------------------------------- ================================================================================ Multicolumn e conversione string to DBL ================================================================================ AUTORE: 3428 DATA :18/04/2018 - 16:48:17 ---------------------------------------- Ciao, domanda forse banale o forse no... Gestisco all'interno di una FGV una matrice 3D di stringhe derivate da DBL e da STRING. Lascio la FGV a string perchè mi gestisce l'aggiornamento di una multi columns. La terza dimensione mi gestisce lo stesso tipo di analisi ma con un'identificativo diverso... Ora devo gestire una media dei valori per ogni colonna. La matrice è STRING quindi devo prima prendermi le colonne giuste per convertirle in DBL e poi fare la media all'occorrenza... Domanda. Meglio tenere nella FGV anche i valori DBL con cui vanno fatte le medie o fare ogni volta lo "fract/exp string to Double"? ---------------------------------------- AUTORE: 301 DATA :18/04/2018 - 17:49:19 ---------------------------------------- Ciao Renaso, Se nella FGV i dati di input sono gia DBL che poi converti in stringa.....beh, al giro successivo farai una operazione in meno se te li memorizzi gia cosi. Come spesso accade, è difficile darti una risposta precisa, se i dati sono molti, potresti avere problemi di memoria con due array. Allo stesso tempo, se fai operazioni sul tuo array, queste le dovrai fare 2 volte se ti tiri dietro i DBL e le stringhe. Aris ---------------------------------------- AUTORE: 3428 DATA :20/04/2018 - 07:39:17 ---------------------------------------- Ok grazie Aris, come pensavo, non è facile la scelta.. Convertendo sempre non vedo grandi innalzamenti di memoria e/o CPU. La matrice non supererà le 5*200 normalmente. Le pagine del 3D saranno sempre 6. Provo continuando solo con le string e conversione... vediamo Grazie ---------------------------------------- ================================================================================ Boolean text dei pulsanti all'interno di una array ================================================================================ AUTORE: 822 DATA :24/04/2018 - 10:22:26 ---------------------------------------- Ciao. Il boolean text dei pulsanti contenuti all'interno di una Array può essere diverso per ogni pulsante? Grazie ---------------------------------------- AUTORE: 43 DATA :24/04/2018 - 12:41:44 ---------------------------------------- Ovviamente No Prova tu stesso a farlo. Sperimenta io uso i cluster come in [url=http://www.ilvg.it/forum/viewtopic.php?f=1&t=6072&p=27011:1za4w1j1]quest'esempio[/url:1za4w1j1] bye ---------------------------------------- AUTORE: 822 DATA :24/04/2018 - 13:03:50 ---------------------------------------- Grazie, mi hai confermato che con un'array non c'è modo e che devo usare il cluster (come immaginavo). ---------------------------------------- AUTORE: 129 DATA :21/03/2019 - 11:19:04 ---------------------------------------- Un alternativa se hai pulsanti uguali ma vuoi cambiare solo il testo è la LISTBOX, io la uso molto per i MENU, ed è un unico oggetto quindi ridimensionabile quando usi pannelli con splitbar. Allego un esempio, limite che fai una sola selezione per volta se devi fare una selezione multipla cambi le impsotazioni e gestisci l'array invece dello scalare. Buon divertimento, Nicola ---------------------------------------- ================================================================================ Creare waveform da onda arbitraria ================================================================================ AUTORE: 482 DATA :21/06/2018 - 09:02:44 ---------------------------------------- ...ma ciao! esiste un VI o comunque un metodo semplice per passare da un onda composta da punti disomogenei nel tempo (x,y) a una waveform? ---------------------------------------- AUTORE: 301 DATA :21/06/2018 - 12:51:56 ---------------------------------------- Ciao Geppo! Intendi il build waveform?!?! Se hai gia l'array di punti, con quello crei il "cluster" waveform e sei a posto, no?!?! ---------------------------------------- AUTORE: 482 DATA :21/06/2018 - 15:55:34 ---------------------------------------- no, intendo dire che l'onda che ho è una quadra (trapezoidale perchè ha le rampe di salita e discesa) e quindi ho i tempi solo di quando cambia stato e non sono costanti nel tempo. Ad esempio: Tempo Valore 0 0 10 0 15 10 34 10 45 0 Nell awaveform il dt tra i punti è costante, io invece partendo da un XY dovrei interpolare il tutto. Quindi mi serve un qualcosa ch efaccia questa interpolazione con un dt costante impostabile. ---------------------------------------- AUTORE: 482 DATA :21/06/2018 - 15:57:57 ---------------------------------------- forse ho trovato un VI che si chiama Interpolate 1D nella palette matematica, che potrebbe fare al caso mio. ---------------------------------------- ================================================================================ permutare gli indici di un array N-dimensioni ================================================================================ AUTORE: 2601 DATA :26/06/2018 - 09:25:14 ---------------------------------------- Buongiorno a tutti, sto lavorando con un array a 4 dimensioni, la più esterna è A, fino alla più interna D -> (A B C D). Vorrei modificare questo ordine ed ottenere sempre un array 4 dimensioni, ma ordinate ad esempio (A B D C). Non riesco a capire se in LV è possibile farlo. In matlab la funzione da utilizzare è "permute" (https://it.mathworks.com/help/control/ref/permute.html). Ora a me andrebbe bene anche utilizzare MathScript, ma per quanto ho visto non accetta in ingresso Array N-Dimensioni. Qualcuno può aiutarmi? grazie D. ---------------------------------------- AUTORE: 301 DATA :29/06/2018 - 07:09:44 ---------------------------------------- Certo che è possibile. ad esempio, come in allegato, fai un index degli indici che vuoi spostare e li ricomponi in un secondo array con l'ordine che vuoi. Altra strada può essere un delete from array ed un successivo insert into. Aris ---------------------------------------- AUTORE: 43 DATA :29/06/2018 - 10:31:47 ---------------------------------------- [quote="lion5877":1nx02z1t]Buongiorno a tutti, sto lavorando con un array a 4 dimensioni, la più esterna è A, fino alla più interna D -> (A B C D). Vorrei modificare questo ordine ed ottenere sempre un array 4 dimensioni, ma ordinate ad esempio (A B D C). Non riesco a capire se in LV è possibile farlo. In matlab la funzione da utilizzare è "permute" (https://it.mathworks.com/help/control/ref/permute.html). Ora a me andrebbe bene anche utilizzare MathScript, ma per quanto ho visto non accetta in ingresso Array N-Dimensioni. Qualcuno può aiutarmi? grazie D.[/quote:1nx02z1t] Questa è la mia soluzione [attachment=1:1nx02z1t]MultiIndexMatrix.vi[/attachment:1nx02z1t] Penso che questo sia un NON problema perchè non riesco a capire la tua esigenza fino in fondo. Pur mantenendo i dati in memoria "sbagliati" potresti incrociare gli indici ed accedere in modo corretto all'informazione richiesta. Nel caso tu acceda ai valori della tua matrice sempre [u:1nx02z1t]cella x cella[/u:1nx02z1t], potresti frappore fra gli indici con cui accedi alla matrice ed il VI "Index Array" un VI tipo il seguente [attachment=0:1nx02z1t]4IdxExchange.vi[/attachment:1nx02z1t] In questo caso, se ti venisse in mente di scambiare altri indici, ti basterebbe modificare questo sub_VI per avere un accesso corretto in tutti i punti dove viene richiamato. bye ---------------------------------------- ================================================================================ Massima velocità ciclo senza Realtime ================================================================================ AUTORE: 482 DATA :09/07/2018 - 14:24:28 ---------------------------------------- ...ma ciao! sto usando un applicazione in cui chiudo un anello di posizione tramite i VI di PID, il tutto sotto windows7. E' sopraggiunta l'esigenza di andare piu' veloce ma con windows7 32bit funziona bene e stabile a 2ms se temporizzo, se non temporizzo, oscilla un po' tra l'1 e il 2 e in ogni caso, mi pare di ricordare che con windows standard, non si possa scendere sotto al millisecondo di temporizzazione (ricordo bene? Anche i timed loop dovrebbero avere un massimo di 1khz) Esiste un modo per scendere sotto al ms di tempo ciclo senza passare ad un sistema operativo realtime? windows 64bit aiuterebbe? ---------------------------------------- AUTORE: 129 DATA :21/03/2019 - 09:21:40 ---------------------------------------- Ricordi bene \":oops:\" Hai sempre il problema che non stai lavorando su un sistema RT, ma potresti provare a temporizzarlo utilizzando un tick count ad alta risoluzione che fa parte delle hidden gems (mai provato però). Lo trovi in vi.lib\Utility\High Resolution Relative Seconds.vi Probabilmente se non hai thread che disturbano e gestisci la priorità di esecuzione, ce la fai. ---------------------------------------- ================================================================================ condividere applicazione in rete ================================================================================ AUTORE: 11108 DATA :17/08/2018 - 13:28:15 ---------------------------------------- Salve vi contatto per sottoporvi questo quesito. Vorrei condividere in rete un’applicazione LabView creata con LabView application builder. Vorrei condividere un’applicazione e non un vi in modo da installare LabView solo nel PC dedicato allo sviluppo del software e far girare le applicazioni su PC dove è installato il Run-Time Engine. Configurare e pubblicare in rete le schermate del vi partendo da vi dove è installato LabView e visualizzarle con IE, non è un problema, mentre al momento non sono riuscito a pubblicare in rete le schermate dei pannelli di controllo delle applicazioni. Qualcuno ha già affrontato questo argomento? Avete qualche consiglio con il quale posso provare a trovare la soluzione? Se mi sono perso qualche dritta già presente nel forum chiedo scusa. Grazie a tutti ---------------------------------------- AUTORE: 129 DATA :21/03/2019 - 09:40:44 ---------------------------------------- [quote:1y97n0dm]Configurare e pubblicare in rete le schermate del vi partendo da vi dove è installato LabView e visualizzarle con IE, non è un problema, mentre al momento non sono riuscito a pubblicare in rete le schermate dei pannelli di controllo delle applicazioni.[/quote:1y97n0dm] Non ho capito bene, alcuni pannelli li riesci a pubblicare e altri no? Che metodo usi? Come è configurato il sistema? Hai un pc su cui gira il runtime e dei pc client che devono usare il browser? ---------------------------------------- ================================================================================ aprire e chiudere un VI dinamicamente ================================================================================ AUTORE: 482 DATA :05/09/2018 - 13:07:03 ---------------------------------------- ...ma ciao! quasi sicuramente sto sbagliando una cosa banale ma ho la testa in mille cose e non ne esco, quindi chiedo a voi. Ho un VI col quale devo aprire dinamicamente un altro VI ( questo mi servirà perchè dovro' aprire piu' copie dello stesso VI) Quando lo chiamo dinamicamente, la prima volta lo metto in memoria e lo mando in run, dalla seconda in poi, apro e chiudo solo il front panel. Ho pero' un problema....per capire se devo o meno mandarlo in run, vado a guardare la proprietà execution state. Andando pero' a verificare l'execution state, anche se arresto l'esecuzione del subVI, questa mi resta sempre in stato RUNNING anzichè passar ein Idle come mi aspettarei. Come mai? mi sto aspettando la cosa sbagliata? sto utilizzando la proprietà sbagliata? grazie! Allego un estratto del mio VI. ---------------------------------------- AUTORE: 301 DATA :05/09/2018 - 13:45:47 ---------------------------------------- non riesco ad aprirlo, ho ancora il 2014, ma credo possa essere dovuto al reference del vi sbagliato..... Ogni copia rientrante che lanci ha il suo proprio ref. Aris ---------------------------------------- AUTORE: 43 DATA :05/09/2018 - 14:21:30 ---------------------------------------- [quote="gepponline":1hvr9v1g]...ma ciao! quasi sicuramente sto sbagliando una cosa banale ma ho la testa in mille cose e non ne esco, quindi chiedo a voi. Ho un VI col quale devo aprire dinamicamente un altro VI ( questo mi servirà perchè dovro' aprire piu' copie dello stesso VI) Quando lo chiamo dinamicamente, la prima volta lo metto in memoria e lo mando in run, dalla seconda in poi, apro e chiudo solo il front panel. Ho pero' un problema....per capire se devo o meno mandarlo in run, vado a guardare la proprietà execution state. Andando pero' a verificare l'execution state, anche se arresto l'esecuzione del subVI, questa mi resta sempre in stato RUNNING anzichè passar ein Idle come mi aspettarei. Come mai? mi sto aspettando la cosa sbagliata? sto utilizzando la proprietà sbagliata? grazie! Allego un estratto del mio VI.[/quote:1hvr9v1g] Anch'io non riesco a caricare LV17, mi fermo a LV16, ma posso intuire quale sia il tuo problema. Una delle due affermazioni seguenti è giusta: - Hai stoppato l'istanza del subVI sbagliata. - Stai guardando l'execution state dell'istanza del SubVI sbagliata. bye ---------------------------------------- AUTORE: 482 DATA :05/09/2018 - 16:30:44 ---------------------------------------- rimando in versione 2012 ---------------------------------------- AUTORE: 43 DATA :06/09/2018 - 09:37:08 ---------------------------------------- mah! io distinguerei 2 differenti approcci all'esecuzione dinamica di subVI, in funzione della seguente condizione: il SubVI è caricato (in memoria) oppure no? Nel tuo caso sicuramente SI perchè : 1) nella openVI per il "type specifier VI refnum" indichi il subVI in questione (quindi viene caricato in memoria insieme al chiamante caller) 2) nella openVI il "vipath" è una stringa e non un path, per cui, specificando il solo nome del VI, si presume che il VI sia già in memoria. Ora, tutti noi sappiamo che se un VI viene caricato in memoria nel momento in cui viene caricato il VI principale, esso NON E' EDITABILE, tanto che se noi apriamo uno di questi subVI mentre il VI principale è in esecuzione mentre esso stesso non è in esecuzione, appare una freccettina particolare che ti indica appunto che il tuo SubVI è cmq in uso e non può essere modificato. E' un po come dire : il VI principale è running, quindi sono running tutti i VI caricati in memoria insieme a lui. spero di essere stato chiaro. bye ---------------------------------------- AUTORE: 482 DATA :06/09/2018 - 12:58:12 ---------------------------------------- ..ok, quindi viene considerata in running l'applicazione e non il VIspecifico? Nel senso che il vi è si caricato in memoria, pero' non è in RUN il subvi (freccetta bianca ON) che è quello che io vorrei verificare. C'e' modo di verificare quello? ---------------------------------------- AUTORE: 301 DATA :10/09/2018 - 19:22:19 ---------------------------------------- una volta che viene messo in run mi sembra che non ci sia modo di verificare quello che vuoi tu. Allo "stop" del vi devi chiudere anche il suo handle e riaprirne uno nuovo, rimarrà in idle fin che non lo mandi in run. L'alterativa è gestire un flag nel vi chiamato. ---------------------------------------- AUTORE: 482 DATA :11/09/2018 - 14:11:18 ---------------------------------------- L'idle pare non esistere se il reference è di tipo strictly type. Appena lo carichi, risulta in running. Ho probvato a replicar el'esmepio non usando lo strictly type e non usando l'asyncronous call e tutto funziona, ma il grosso problema è legato al fatto che vorrei creare N istanze dello stesso subVI senza sapere a priori quante e ad ognuna di queste passare dei valori legati al valore N dell'istanza. Diciamo che vorrei mettere a pannello 3 pulsanti e ognuno chiama un istanza dello stesso subVI. Ogni pulsante, a seconda che la relativa istanza sia aperta in run, aperta e stoppata o chiusa dovrà mandare in run, aprire o chiudere l'istanza relativa. ---------------------------------------- AUTORE: 301 DATA :11/09/2018 - 14:25:57 ---------------------------------------- Beh, ogni istanza avrà il suo reference (quindi li gestisci con un array), mentre per passare i valori puoi utilizzare il "set control value". ---------------------------------------- AUTORE: 129 DATA :21/03/2019 - 09:11:17 ---------------------------------------- Non sono sicuro aver capito bene, ma perchè non utilizzi 40 invece che 80 (che vuole una ref stryctly type) devi fare una call and forget o altro? Se invece vuoi gestire solo il lancio di cloni dello stesso vi puoi utilizzare semplicemente la chiamata allo stesso vi con codice 40, e gestirne il numero di chiamata con un array. Ho abbozzato la mia soluzione, da perfezionare. Sempre che ho capito bene, \":D\" ---------------------------------------- ================================================================================ DHCP server ================================================================================ AUTORE: 11157 DATA :07/09/2018 - 15:17:06 ---------------------------------------- Sto cercando di sviluppare un protocollo ethernet per comunicare con una apparato per collaudarlo. Devo inviare un messaggio TCP/IP ad un server DHCP (in esecuzione sul mio PC) ed il server comunica con l'UUT attraverso la porta ethernet del mio PC Quando utilizzo "Open TCP connection.vi" viene visualizzato l'errore con il codice 63 (connessione rifiutata). Come posso evitare l'errore e comunicare correttamente? Grazie. ---------------------------------------- AUTORE: 301 DATA :07/09/2018 - 17:49:01 ---------------------------------------- a che indirizzo IP punti? ---------------------------------------- ================================================================================ Network Stream Wrapper ================================================================================ AUTORE: 10888 DATA :06/11/2018 - 10:38:35 ---------------------------------------- Ciao, sto cercando di fare un "wrapper" per la network stream, cosi' da fornire all'applicativo LV delle chiate semplici : -Open (parametrizzata con Connection Type : 0- apro il writer 1- apro il reader) - write - read - close Con la sequenza Open->Write non ho problemi, con la Open->Read si, quando passo la reference tra la open e la read ho un broken-pipe. In errore.jpg ho provato a spiegare meglio il problema. Grazie ---------------------------------------- AUTORE: 129 DATA :21/03/2019 - 08:47:39 ---------------------------------------- Non riesco ad aprire il tuo codice perchè ho una versione LV piu vecchia. Se ti può aiutare prova a vedere questo: [url:109nug6f]https://www.vi-tech.nl/public/files/downloads/Network%20Streams%20-%20ALUGM%202014%20-%20Copenhagen.pdf[/url:109nug6f] Io non amo molto questi strumenti, perchè non gestibili bene bene a basso livello, preferisco TCP/IP che ha il vantaggio di essere uno stnadard e quindi puoi comunicare con altri linguaggi, altri HW, Tra eseguibili etc. Ciao, Nicola ---------------------------------------- ================================================================================ Libreria per il logging degli errori ================================================================================ AUTORE: 10888 DATA :14/11/2018 - 16:31:40 ---------------------------------------- Salve, vorrei farmi una libreria per distribuire la capacità di tracciare i fault su file. In pratica vorrei mettere a disposizione delle chiamate a "funzione" che mi salvano su file informazioni sulle varie cause d'errore. Quindi 1 solo file accendibile\scrivibile da diversi processi. Avete da segnalarmi qualche esempio? Grazie ---------------------------------------- AUTORE: 301 DATA :15/11/2018 - 06:31:15 ---------------------------------------- Ti basta una semplice Funtional Global Variable (o action engine). Aris ---------------------------------------- AUTORE: 3428 DATA :19/11/2018 - 10:25:50 ---------------------------------------- Ciao, la cosa migliore per me è utilizzare la stessa vi che racchiude una creazione-gestione-eliminazione di eventi dinamici. Creando una struttura event in grado di catturarli quello che basta fare è una vi che invia l'evento con il log dell'errore all'interno del codice, partendo dal riferimento dell'event da mandare (così facendo la si può mettere ovunque, reentrant o no) e la vi che gestisce e sta in ascolto all'arrivo di un evento logga su file. Oltre che gli errori analogo se serve un log eventi su stati ecc. ---------------------------------------- AUTORE: 10888 DATA :21/11/2018 - 08:11:19 ---------------------------------------- [quote="renaso":30pn4ymn]Ciao, la cosa migliore per me è utilizzare la stessa vi che racchiude una creazione-gestione-eliminazione di eventi dinamici. Creando una struttura event in grado di catturarli quello che basta fare è una vi che invia l'evento con il log dell'errore all'interno del codice, partendo dal riferimento dell'event da mandare (così facendo la si può mettere ovunque, reentrant o no) e la vi che gestisce e sta in ascolto all'arrivo di un evento logga su file. Oltre che gli errori analogo se serve un log eventi su stati ecc.[/quote:30pn4ymn] Ciao a tutti e grazie per i suggerimenti. @renaso...ma in LV una gestione ad eventi non garantisce che non mi perda nulla, sbaglio? Ho fatto una prova per capire meglio come funzionava la write su file : 1) apro il file 2) passo la refnum a due cicli while all'interno dello stesso VI 3) nel log file non ho viso perdite di dati (stampo un ID diverso per ogni ciclo) Quindi : A) la mia prova non ha senso perchè i due while non sono proprio 2 thread paralleli B) la write contiene già il controllo di accessi multipli? Grazie a tutti. ---------------------------------------- AUTORE: 129 DATA :21/03/2019 - 08:40:42 ---------------------------------------- [quote:3k69x3yt]ma in LV una gestione ad eventi non garantisce che non mi perda nulla, sbaglio?[/quote:3k69x3yt] Gli eventi vengono accodati come in una queue, quindi se generi 100 eventi di errore, l'evento ti viene eseguito 100 volte e non perdi niente. La gestione degli eventi dinamici anche se molti sostengono le code in quanto piu performanti ha un particolare utilizzo perchè a differenza delle code può avere una comunicazione molti a molti. Esempi di utilizzo uno stop globale, se registri l'evento stop a tutte le event structure che devono reagire, avrai uno stop globale. Nel tuo caso hai una comunicazione molti a uno (uno riceve i messeggi di errore generati dagli altri processi) quindi puoi utilizzare Event, Queue (suggeriti) ed eventualmente un AE (Action Engine) che però devi piazzare all'interno di un processo di gestione errore. Dipende molto dalla tua architettura, hai una producer consumer? (Usa coda o event), una macchina a stati semplice?(usa un case per spedire l'errore su un caso error dove un AE può gestire il tutto... BUon lavoro, Nicola ---------------------------------------- ================================================================================ Salvare immagine in SQLite ================================================================================ AUTORE: 482 DATA :30/11/2018 - 15:36:11 ---------------------------------------- ...ma ciao! vorrei salvare delle immagini in un DB SQLite. Ho letto un po' id documentazione in giro ma non ne esco. Al momento ho creato la mia bella tabella con un campo di tipo BLOB che andrà a contenere l'immagine. Poi uso un "READ BMP FILE.VI" e dall'uscita image data estrapolo l'array IMAGE, lo trasformo tramite il byte array to string e genero una query che poi do in pasto ad una libreria per scrivere in SQLite. La query sarà cosi' composta INSERT INTO DETTAGLI (IMMAGINE) VALUES ('RISULTATODELLACONVERSIONEBYTEARRAYTOSTRING') Tutto questo pero' mi genera errore. Avete idea di come posso fare? grazie! ---------------------------------------- AUTORE: 301 DATA :04/12/2018 - 09:33:21 ---------------------------------------- Ciao Geppo, credo che il problema stia nel fatto che trasformi l'array in stringa(oltre a farti pesare molto di piu i dati). Il tipo "blob" credo si aspetti un array di byte. Aris ---------------------------------------- AUTORE: 482 DATA :06/12/2018 - 13:35:29 ---------------------------------------- Ok, ma l'array di byte in una transaction SQL come gliela passo? se non come stringa? Alla fine una stringa altro non è che un array di byte no? ---------------------------------------- AUTORE: 301 DATA :07/12/2018 - 11:13:08 ---------------------------------------- Vero, hai ragione.....ma il campo è di tipo "BLOB", quindi non so se venga supportato direttamente in questo modo. Probabilmente ti conviene cambiarlo in VARCHAR e salvare la tua stringa (da conversione). Aris ---------------------------------------- AUTORE: 482 DATA :10/12/2018 - 07:06:18 ---------------------------------------- Ma se lo cambio in varchar, poi in un eventuale SQLite Manager tipo quello che uso adesso, non vedrei l'immagine salvata ma dovrei realizzare un software apposta per estrapolare il dato e riconvertirlo in immagine ---------------------------------------- AUTORE: 301 DATA :12/12/2018 - 14:03:42 ---------------------------------------- hai provato a salvare una immagine (con un qualsiasi db manager) e a caricartelo in LV? ---------------------------------------- AUTORE: 482 DATA :17/12/2018 - 07:06:40 ---------------------------------------- Allora, il mio problema non era caricarlo in labview ma che poi per la visualizzazione non volevo piu' passare da labview ma lasciare in mano agli utenti solo il DB manager. Detto questo pero', credo di essere arrivato alla soluzione. Il problema principale è che ho scoperto che il salvataggio delle immagini in formato BLOB su SQLite non è standard. Ogni DB Manager ha le sue necessità, quindi avevo trovato una soluzione ch efunzionava con SQLite Manager che pero' è a pagamento. La stessa soluzione non funziona con SQLite administrator e DB Browser for SQLite. Constatato questo, ho deciso che la soluzione piu' semplice per evitare anche problemi futuri è trasformare quel campo in stringa e salvarci il path dell'immagine e non l'immagine stessa. ---------------------------------------- ================================================================================ VISA ================================================================================ AUTORE: 2993 DATA :08/12/2018 - 17:33:20 ---------------------------------------- Salve. Qualcuno sà, per favore, se esiste un manuale in italiano sull'argomento in oggetto? Grazie. ---------------------------------------- ================================================================================ Programma di Autoregolazione (Incompleto) ================================================================================ AUTORE: 4047 DATA :14/01/2019 - 15:12:32 ---------------------------------------- Ciao a tutti, dopo anni (tanti) sto cercando di riavvicinirmi al mondo LabView. Il mio intento è creare un programma molto personalizzabile che data una certa tensione in ingresso aumenti o diminuisca un resistore variabile motorizzato per avvicinare la il valore di Vin ad un valore voluto. Mi sto servendo di una scheda di interfaccia USB-6001. Per ora sono riuscito ad abbozzare qualcosa ma mi mancano alcune parti che non so completare, chiedo cortesemente il vostro aiuto per poterlo finire. Elenco le cose mancanti o non funzionanti: 1) Visto che questo programma diventerà un exe mi piacerebbe avere un pulsante di start 2) Vorrei impostare il tempo di Azionamento e di Stop del motore del resistore in modo che il motore si azioni per X secondi, rimanga fermo per Y secondi (in modo che si stabilizzi la Vin) e poi se la tensione non è ancora nel range di tolleranza riparta. 3) Quando la tensione in ingresso è alta o bassa rispetto alla tensione desiderata le uscite che vanno sul motore del resistore funzionano , mentre quando la Vin è nel range di tolleranza non riesco a disattivare una delle due uscite che inesorabilmente rimane attiva. In allegato ho messo i file. Chi mi può aiutare per favore? Grazie! ---------------------------------------- AUTORE: 4047 DATA :15/01/2019 - 07:20:24 ---------------------------------------- Vi allego il file sorgente per agevolare l'aiuto. Grazie mille ---------------------------------------- AUTORE: 482 DATA :17/01/2019 - 10:46:11 ---------------------------------------- Tolta l possibilità che qualcuno ti risolva i problemi, direi che hai il 70% della soluzione in mano. Per il punto 1 ti consiglio di inserire prima del while un event case che se premi il bottone di start esegue, senza fare niente e permette al ciclo While in cascata di partire. Detto questo direi che gli altri due punti vanno invertiti. Per prima cosa svilluppa un vi che valuta se sei nel range o meno e da un uscita booleana. Dopodichè vai col VI di start stop motore. quando Fai start, inizializzi un timer, poi intanto che va, confronti il timer attuale con quello di start e se superi un certo valore stoppi idem pe ril tempo di stop in cui inserirai la parte di controllo del valore in range. Questo per dire che la logica ce l'hai già chiara in testa a quanto sembra, devi solo metterti li passo passo a "disegnarla" nel front panel,non sperare di trovare qualcuno che sviluppi la soluzione al posto tuo perchè non è questa la politica del Forum ---------------------------------------- AUTORE: 4047 DATA :17/01/2019 - 14:30:29 ---------------------------------------- Ti ringrazio per la risposta,infatti non pretendevo qualcuno che mi completasse il programma ma che mi facesse capire dove stessi sbagliando. Nel weekend proverò a seguire i tuoi consigli. Grazie ancora ---------------------------------------- ================================================================================ Ciclo while ================================================================================ AUTORE: 2993 DATA :22/01/2019 - 21:29:53 ---------------------------------------- Salve... Qualcuno mi potrebbe spiegare per favore, se esiste un modo per fare uscire una sequenza di dati da un ciclo while??? Grazie... ---------------------------------------- AUTORE: 482 DATA :23/01/2019 - 07:23:31 ---------------------------------------- S ecome sequenza di dati intendi un array, basta che colleghi il filo del tuo dato al bordo destro del ciclo while, comparirà un quadratino. Clikki col tasto destro su quel quadratino e comparirà la voce "Tunnel mode". Li puoi scegliere se: 1-"Last value"= Far uscire solo l'ultimo valore 2-"Indexing"= Far uscire un array di valori passati al tunnel (se ci colleghi un array, in uscita avray un array bidimensionale) 3-"Concatenating"= Far uscire un array concatenato, cioè se passi un array al tunnel, anzichè avere in uscita un array con una dimensione in piu', lo avrai dello stesso tipo, con i valori consecutivi messi in coda In piu' c'e' l'opzione "Conditional" che ti permette di passare all'uscita i valori corrispondenti, solo se il nodo conditional è TRUE. QUindi se normalmente hai N valori per N iterazioni, con questa opzione, potresti avere N iterazioni ma N-X valori in uscita. E grazie a questa tua domanda ho scoperto l'esistenza del caso 3 e dell'opzione condizionale che non conoscevo e mi domando se è sempre esistita o se c'e' solo nelle ultime versioni di Labview (io uso la 2017) perchè a saperlo prima le avrei usate in piu' occasioni. Aggiungo che l'altra possibilità è di selezionare "Replace with shift register", cioè trasformare il tunnel in un nodo che riporta l'ultimo valore all'inizio del ciclo successivo (è un tipo di tunnel ch epoi in uscita riporta l'ultimo valore passato) facendo in modo che tu possa prendere l'ultimo valore e prenderlo come riferimento per farci calcoli o comunque ragionamenti nei cicli successivi senza passare dalla creazione di variabili. ---------------------------------------- AUTORE: 2993 DATA :24/01/2019 - 17:42:51 ---------------------------------------- Grazie. Nella mia versione (2009), esiste solo l'indexing... per abitudine esco dai cicli while sempre a sinistra dove esiste solo la modalità last value (poi un giorno capirò perchè), e non sapevo... però mi hai dato un'idea per aggirare un ostacolo, FORSE (!!!)... grazie. ---------------------------------------- AUTORE: 482 DATA :25/01/2019 - 07:06:26 ---------------------------------------- No aspetta qualcosa non mi torna, l'indexing dovresti comunque averlo anche nella versione 2009. E...sei sicuro che sia a sinistra? Il dataflow solitamente va verso destra... ---------------------------------------- AUTORE: 2993 DATA :25/01/2019 - 17:51:25 ---------------------------------------- C'è solo l'indexing, o non indexing che significa last value. Non c'è ne il concatenating, nè il conditional... ---------------------------------------- AUTORE: 482 DATA :28/01/2019 - 07:34:33 ---------------------------------------- Ah ok, perfetto. L'indexing è quello che ti serviva no? O con sequenza di dati intendevi qualcos'altro? ---------------------------------------- AUTORE: 2993 DATA :29/01/2019 - 17:16:07 ---------------------------------------- Avevo un ciclo for annidato in un ciclo while; i dati (una stringa) uscivano dal for, ma si fermavano al tunnel del while... credo di aver risolto (almeno secondo la probe, ma devo ancora provare sulla macchina reale) sincronizzando le iterazioni dei due cicli... ---------------------------------------- ================================================================================ IMAQ: Ridimensionare un immagine senza passare da una nuova ================================================================================ AUTORE: 482 DATA :25/01/2019 - 07:34:04 ---------------------------------------- ..ma ciao! ho un problemino. Devo ridimensionare un immagine lasciando l'immagine originale intatta, quindi senza scalare, ma solo ingrandire la superficie per poi incollare nello spazio aggiuntivo, l'immagine modificata. Se uso IMAQ SetImageSize pare che l'immagine venga ridimensionata ma il contenuto distrutto, quindi pe rottenere quello che voglio devo creare una nuova immagine con le dimensioni desiderate e solo dopo, inserirgli la mia immagine. Vorrei evitare questo passaggio, perchè si tratta di un VI rientrante che viene usato diverse volte nel programma e quindi, per evitare sovrascritture non volute della stessa immagine dovrei passare la reference alla specifica immagine creata per ogni ricorrenza del VI. Che voi sappiate, è possibile fare quelloche voglio fare, senza passare da un IMAQ create? ---------------------------------------- AUTORE: 301 DATA :25/01/2019 - 08:56:27 ---------------------------------------- Ciao Geppo, non sono molto pratico del pacchetto IMAQ, ma essendo ottimizzato per lavorare sulle immagini applica quei concetti che in labview non siamo abituati a considerare.....tipo puntatori o memoria condivisa. Una immagine su cui stai lavorando "è" quell'immagine e se applichi filtri o fai operazioni su quella, lavori "esattamente" su quella (non su una copia del dato. Quindi redo che tu debba per forza crearti una nuova immagine nella quale andare ad inserire cio che desideri. Aris ---------------------------------------- AUTORE: 482 DATA :25/01/2019 - 09:04:20 ---------------------------------------- Si, purtroppo ci lavoro da anni con le librerie IMAQ e sta cosa della gestione differente rispetto al dataflow classico di LabVIEW non è la prima volta che mi fa incazzare \":)\" Detto questo, il mio problema in questo caso, non è legato tanto ai puntatori o all'area di memoria, quanto al fatto che un immagine posso ridimensionarla senza problemi, scalandola ma non inserendo spazio vuoto... ---------------------------------------- AUTORE: 301 DATA :25/01/2019 - 09:15:56 ---------------------------------------- è proprio quello il fatto! Hai un "oggetto" immagine, che puoi scalare, ma che a quel punto ha altre dimensioni..... Quindi devi crearti un secondo oggetto immagine "vuoto", delle dimensioni che desideri e sovrapporgli il primo! Non credo ci siano altri modi, ma ripeto....non ho molt esperienza con quel modulo Aris ---------------------------------------- ================================================================================ Case Structure, impostazione del range di valori di accettab ================================================================================ AUTORE: 822 DATA :08/02/2019 - 11:45:27 ---------------------------------------- Ciao, in una case structure se scrivo 1..10 significa che deve eseguire il contenuto di quel case se il valore in entrata è compreso fra 1 e 10 estremi inclusi. Come posso dire di escludere uno dei due estremi? cioè esegui se compreso fra 1 e 10 ma 10 escluso? ---------------------------------------- AUTORE: 43 DATA :08/02/2019 - 14:21:11 ---------------------------------------- [quote="giuseppe.l74":mhjb4m5o]Ciao, in una case structure se scrivo 1..10 significa che deve eseguire il contenuto di quel case se il valore in entrata è compreso fra 1 e 10 estremi inclusi. Come posso dire di escludere uno dei due estremi? cioè esegui se compreso fra 1 e 10 ma 10 escluso?[/quote:mhjb4m5o] ciao Giuseppe vado per deduzione, spero di azzeccare. Ti riporto una parte dell'HELP di LabVIEW2016 ottenuto selezionando la vista dettagliata: << [b:mhjb4m5o]Case selector[/b:mhjb4m5o]—Selects which case to execute based on the value of the input data. The input data can be a [b:mhjb4m5o]Boolean, string, integer, enumerated type or error cluster[/b:mhjb4m5o]. The data type you wire to the case selector determines the allowed cases you can enter in the selector label. >> Come ti ho evidenziato, la struttura "case" può essere controllata tramite valori di tipo "discreto", (non continuo). In soldoni, non può essere controllata da un numero in virgola mobile. Il motivo è molto semplice ed è lo stesso per il quale, quando si controlla un valore numerico in virgola mobile, sia esso FLOAT o DOUBLE o altro, non si usa MAI l'operatore di uguaglianza (floiat x; if (x == 3.3) per es. non si fa MAI), ma si controlla che esso sia entro un certo range. Se per caso ti fosse venuto in mente di collegare un filo arancione (float o double) all'ingresso del case selector, avrai notato il pallino (coercion dot) di "conversione automatica forzata" mentre il colore del case selector sia blu (non arancione): questo significa che il tuo valore in virgola mobile viene convertito in intero. E come viene convertito un numero in virgola mobile in intero? Per arrotondamento. Significa che da x.0 a x.49999999999999999999999 --> si ottiene x da x.5000000000000000001 a x.9999999999999999999 --> si ottiene x+1 per x.5 --> si ottiene il numero pari + vicino (es. 0.5 --> 0; 1.5 --> 2; 2.5 --> 2; 3.5 --> 4; 4.5 -->4 ecc) per concludere risolvendo il tuo quesito: se stai manipolando numeri interi --> basta specificare il range 1..9 se stai manipolando numeri floating point --> 1) aggiungi Functions-->Comparison-->In Range and Coerce 2) sistema opportunamente i limiti di confronto 3) sfrutta l'uscita booleana dell' "In Range and Coerce" e collegala al case selector bye ---------------------------------------- AUTORE: 822 DATA :11/02/2019 - 08:25:58 ---------------------------------------- Grazie, hai ragione, non ci avevo pensato! ---------------------------------------- ================================================================================ FIFO per eseguire un azione ================================================================================ AUTORE: 482 DATA :15/02/2019 - 14:00:05 ---------------------------------------- ...ma ciao! ho un applicazione in cui devo eseguire una certa azione trascorso TOT tempo da un segnale di trigger. Tra il trigger e il tempo dell'azione, mi puo' arrivare un altro trigger pero', quindi non posso semplicemente ritardare ma devo in qualche modo creare una coda, fifo o qualche altro tipo. Qual'e' la soluzione migliore secondo voi usando LabVIEW? Esistono degli strumenti già implementati a questo scopo magari? grazie! ---------------------------------------- AUTORE: 43 DATA :18/02/2019 - 15:29:05 ---------------------------------------- [quote="gepponline":1l7il07t]...ma ciao! ho un applicazione in cui devo eseguire una certa azione trascorso TOT tempo da un segnale di trigger. Tra il trigger e il tempo dell'azione, mi puo' arrivare un altro trigger pero', quindi non posso semplicemente ritardare ma devo in qualche modo creare una coda, fifo o qualche altro tipo. Qual'e' la soluzione migliore secondo voi usando LabVIEW? Esistono degli strumenti già implementati a questo scopo magari? grazie![/quote:1l7il07t] Non hai specificato cosa vuoi che succeda quando il secondo trigger interviene, cmq ti ho confezionato questo esempio che spero possa esserti utile. [attachment=0:1l7il07t]NotifierTimeout.vi[/attachment:1l7il07t] In un vecchio progetto avevo un certo numero di questi loop in cui un notifier attendeva un evento per un certo periodo di tempo: il passaggio di oggetti da una antenna RFID generava un evento che resettava ogni volta l'attesa. Se gli oggetti non passavano dall'antenna per un certo periodo di tempo, voleva dire che probabilmente questi oggetti si erano incastrati da qualche parte. L'uscita dall'attesa di notifica per timeout rappresentava un allarme. bye ---------------------------------------- AUTORE: 482 DATA :19/02/2019 - 07:22:25 ---------------------------------------- Grazie per la risposta, poi come avviene spesso, subito dopo al momento in cui chiedo aiuto, arriva il "lampo di genio" \":)\" In effetti non ho specificato che il secondo e i vari trigger seguenti fanno la stessa cosa che fa il primo trigger. Cioè scatenano un evento che fa eseguire un azione sempre uguale alla macchina. Allego il riassunto di quello che ho sviluppato sfruttando le code usando come hai fatto tu un indicatore stringa per dare un idea. C'e' qualche criticità in questo tipo di approccio secondo te? ---------------------------------------- AUTORE: 43 DATA :19/02/2019 - 09:04:36 ---------------------------------------- LabVIEW 2016, please! Cmq per fare quello che vuoi tu, basterebbe creare una istanza di un VI rientrante che fa quello che deve fare quando scatta il trigger: la prima cosa che farà questo VI è attendere un tempo congruo prima di procedere. bye ---------------------------------------- AUTORE: 482 DATA :20/02/2019 - 07:09:59 ---------------------------------------- C'e' qualche problema al server e non mi lascia uploadare file. Ci riprovo piu' tardi. ---------------------------------------- AUTORE: 482 DATA :20/02/2019 - 11:02:55 ---------------------------------------- Ok, ho messo un snippet fatto con la 2012, dovrebbe andare \";)\" ---------------------------------------- AUTORE: 43 DATA :20/02/2019 - 14:06:25 ---------------------------------------- Ciao. Scusami Geppo, ma... non mi piace. Usi una coda contenente un timestamp, ma poi fai un polling disperato sull'orologio di sistema. Il ritardo dal trigger, poi, può cambiare anche durante l'attesa e necessariamente deve essere lo stesso per tutti i trigger generati che sono pendenti Cmq dipende da quello che devi fara. Se a te va bene, va bene pure a me. bye ---------------------------------------- AUTORE: 482 DATA :20/02/2019 - 14:24:05 ---------------------------------------- Considera che il ciclo va temporizzato, qui mi son dimenticato e che il tempo di attesa potrebbe anche essere inserito nella coda insieme al timestamp. Ma detto questo, e' per questo che ho chiesto qui. Il problema di usare eventi o notifier o cose simili era che l'evento mi scatena subito un azione. Per ritardare l'azione dovrei temporizzare, ma la temporizzazione non mi deve impedire di ricevere i nuovi eventi e non deve cancellare quelli vecchi. Allo stesso tempo non so a priori quanti eventi possono avvenire tra un evento e la sua azione, possono avvenirne tanti o nessuno, quindi il ciclo dovrebbe comunque andare in polling. Tral'altro la coda arresta il ciclo se è vuota, quindi il polling si arresterebbe. ---------------------------------------- AUTORE: 43 DATA :20/02/2019 - 16:03:33 ---------------------------------------- Questa è la mia soluzione. Come ti ho scritto sopra, non ho usato code, ma solo un VI rientrante che viene istanziato al momento del trigger. Per evitare casini, il subVI "LogMe" è semaforato (non è rientrante). bye ---------------------------------------- AUTORE: 482 DATA :21/02/2019 - 10:25:48 ---------------------------------------- Soluzione interessante, la valuto sicuramente \";)\" Non mi è chiaro perchè esegui il RunMe e il log prima del ciclo pero'.. ---------------------------------------- AUTORE: 43 DATA :21/02/2019 - 12:59:59 ---------------------------------------- [quote="gepponline":123tohn9]Soluzione interessante, la valuto sicuramente \";)\" Non mi è chiaro perchè esegui il RunMe e il log prima del ciclo pero'..[/quote:123tohn9] Eseguo il "Runme.vi" solo per comodità. Come avrai notato, se il parametro "Number" vale 0, allora Runme.vi non esegue nulla ed esce subito. Quindi la chiamata fuori dal loop non fa ...niente. In compenso permette di avere il "Runme.vi" caricato in memoria unitamente a "MyMain.vi" in quanto subVI referenziato direttamente dallo stesso. Ciò consente: 1) di passare alla funzione "Open VI reference", il nome del SubVI "RunMe.vi" come stringa e non come path (perchè si trova già in memoria) 2) nel caso dovessi creare l'eseguibile, non avresti la necessità di includere esplicitamente il VI "runme.vi" in quanto caricato dinamicamente. il log viene chiamato per inizializzazione. Quando al VI di log viene passato il reference dellindicatore stringa in cui loggare i messaggi, il reference dell'indicatore viene memorizzato all'interno di LogMe.vi, di modo che non sia più necessario passarlo nuovamente. oltre alla memorizzazione del reference, la stringa viene azzerata. bye ---------------------------------------- AUTORE: 482 DATA :22/02/2019 - 07:10:30 ---------------------------------------- Perfetto, sospettavo fosse un caricamento in funzione di un eseguibile o robe simili, ma volevo essere certo di non aver perso qualche passaggio per strada. La parte del log invece, doovendo poi escludere tutta la parte di messaggistica direi che mi resta superflua visto che devo solo eseguire un azione. E adesso aggiungero' quindi un altro step ai miei dubbi con un altro post, visto che l'azione che devo eseguire, la devo eseguire da due eseguibili separati ma che utilizzano la stessa risorsa HW. ---------------------------------------- AUTORE: 43 DATA :27/02/2019 - 08:45:09 ---------------------------------------- Dipende da quanto deve essere il ritardo a partire dall'evento di trigger, ma, - se il ritardo è nell'ordine dei secondi - se fosse necessario abortire l'esecuzione del codice associato all' evento, allora consiglio di usare un Notifier per gestire l'attesa. se dal VI di attesa di notifica si esce per Timeout, allora tutto OK, altrimenti vuol dire che un evento di ABORT è stato attivato. bye ---------------------------------------- ================================================================================ Versione base. ================================================================================ AUTORE: 2993 DATA :15/02/2019 - 20:45:36 ---------------------------------------- Salve. Non so se è la sezione giusta, volevo chiedere se qualcuno mi sa dire cosa comprende la versione base di labview; cosa comprende in generale, ma in particolare mi interessava sapere se comprendeva i driver per le porte seriali, per le porte USB, CANBUS, LAN eccetera... grazie mille. ---------------------------------------- AUTORE: 43 DATA :18/02/2019 - 08:30:00 ---------------------------------------- [quote="maurifabi":30m5d8u5]Salve. Non so se è la sezione giusta, volevo chiedere se qualcuno mi sa dire cosa comprende la versione base di labview; cosa comprende in generale, ma in particolare mi interessava sapere se comprendeva i driver per le porte seriali, per le porte USB, CANBUS, LAN eccetera... grazie mille.[/quote:30m5d8u5] il confronto fra le versioni è [url=http://www.ni.com/it-it/shop/labview/select-edition.html#161:30m5d8u5]qua[/url:30m5d8u5] Nella lista dei driver non puoi mettere "eccetera": devi specificare tutti quelli che ti servono. Di sicuro non hai il supporto a CANBUS, anche perchè le Motherboards dei PC non hanno una interfaccia HW CANBUS integrata, metre possono avere seriali, USB e Ethernet. Per queste 3 interfacce potresti utilizzare le librerie VISA che, se non sbaglio possono essere scaricate gratuitamente del sito NI. Correggetemi se sbaglio. bye ---------------------------------------- ================================================================================ Due eseguibili che utilizzano la stessa risorsa HW ================================================================================ AUTORE: 482 DATA :22/02/2019 - 07:13:42 ---------------------------------------- ...ma ciao! ho due eseguibili differenti ma che vengono eseguiti in contemporanea che utilizzano la stessa risorsa HW, una shceda I/O integrata nel PC. Qual'e' secondo voi la soluzione migliore per fare in modo che questi processi concorrenti non cerchino di scrivere in contemporanea sulla scheda? ---------------------------------------- AUTORE: 43 DATA :22/02/2019 - 08:09:42 ---------------------------------------- La soluzione, a mio avviso, unica è che solo uno degli eseguibili deve avere accesso alla risorsa, mentre il secondo deve accedere alla risorsa attraverso il primo. In alternativa un terzo programma dovrebbe avere l'accesso esclusivo alla risorsa e gli altri due sw devono accedere alla risorsa comunicando con questo terzo sw. bye ---------------------------------------- AUTORE: 301 DATA :22/02/2019 - 11:59:11 ---------------------------------------- Concordo con paracarro, a meno che la risorsa non abbia una una qualche sorta di semaforo. Se puoi interrogare o vedere se la risorsa è in uso, ed attendere che venga liberata, puoi gestire questo processo a livello delle tue funzioni. Aris ---------------------------------------- AUTORE: 482 DATA :22/02/2019 - 14:31:50 ---------------------------------------- Perfetto, anche io propendevo per la soluzione Terzo eseguibile esterno che gestisce la risorsa. Anche perchè i due eseguibili possono essere lanciati singolarmente Al momento tutti e due utilizzano la risorsa senza nessun tipo di controllo, quindi, anche se è un caso raro, se tutti e due nello stesso momento andassero a scrivere, avrei un comportamento ignoto o basterebbe uno poco dopo dell'altro per annullare l'azione del primo. Quindi, assodato che è meglio fare questo controllo attraverso un eseguibile terzo, la via migliore per comunicare dei dati tra due eseguibili qual'e'? File? Shared variable?altro? ---------------------------------------- AUTORE: 43 DATA :22/02/2019 - 16:45:19 ---------------------------------------- [quote="gepponline":jxlo7uzp]... Quindi, assodato che è meglio fare questo controllo attraverso un eseguibile terzo, la via migliore per comunicare dei dati tra due eseguibili qual'e'? File? Shared variable?altro?[/quote:jxlo7uzp] TCP/IP. Tra l'altro questo ti permette di far girare i due eseguibili concorrenti su PC diversi da quello dove la risorsa condivisa è presente. Potresti usare le VISA bye ---------------------------------------- AUTORE: 482 DATA :25/02/2019 - 12:53:30 ---------------------------------------- mmhh.. ok. Ho dato un occhiata all'esempio TCP multiple connections. Ora quindi direi che: 1) realizzo un server che aspetta le chiamate dei vari client ed esegue l'azione che deve eseguire (nel mio caso lancia il VI rientrante che abbiamo visto nell'altro post [url:qg8xx1c9]http://www.ilvg.it/forum/viewtopic.php?f=1&t=6341[/url:qg8xx1c9]) 2) realizzo un VI client che effettua la connessione dall'eseguibile che lo contiene. Direi che ho un solo dubbio. Nel client, è meglio aprire e chiudere la connessione ogni volta che viene generato l'evento o meglio aprirla al lancio e chiuderla alla chiusura dell'eseguibile? ---------------------------------------- AUTORE: 43 DATA :27/02/2019 - 08:35:39 ---------------------------------------- [quote="gepponline":j5xexmny]... Nel client, è meglio aprire e chiudere la connessione ogni volta che viene generato l'evento o meglio aprirla al lancio e chiuderla alla chiusura dell'eseguibile?[/quote:j5xexmny] Io preferisco la prima opzione cioè connessione e disconnessione ad ogni scambio di messaggi, ma volendo si può usare anche la seconda, in base alla necessità di prestazioni. La seconda opzione va gestita nel client con una macchina a stati che esegue automaticamente la riconnessione nel caso in cui la connessione non sia più valida. bye ---------------------------------------- AUTORE: 482 DATA :28/02/2019 - 08:40:13 ---------------------------------------- Ma c'e' effettivamente il rischio che cada la connessione lavorando sempre sullo stesso PC e non in rete? Perchè non vorrei complicarmi la vita per niente. Adesso ho implementato il tutto cosi': Client: 1) Apre la connessione e la tiene aperta 2) Allo scatenarsi di un evento scrive qualcosa al server 3) Solo alla chiusura del programma chiude la connessione Server: (Macchina a stati, Tenendo buono il VI di esempio presente in labiew pe rle multiconnessioni) 1) Verifica se ci sono nuove connessioni 2) Se la lettura va in timeout, tiene buone le connessioni presenti 2a) Se va in errore di connessione chiusa o un altro errore, elimina la connessione dalla lista delle connessioni 2b) Se legge qualcosa, lancia il VI rientrante che fa la sua attesa e poi esegue l'azione 3) Torna alla fase 1 Potrei in alternativa mettere la parte di client nel vi rientrante. Il dubbio che ho è che aprendo e chiudendo subito la connessione, il server non riesca ad intercettarla e perda il messaggio. C'e' questa possibilità visto che il server ha un 50ms di timeout tra la lettura di una nuova connessione e la successiva? In alternativa avevo pensato ad uno scambio di messaggi di conferma. Quindi, il client apre la connessione e manda un messaggio e solo dopo che è stato letto, il server manda una conferma. Alla lettura della conferma, il client chiude la connessione. Questo mi pass aper la testa ma ho il dubbio di stare implementando una cosa già compresa nelal comunicazione TCP ---------------------------------------- AUTORE: 43 DATA :05/03/2019 - 12:51:08 ---------------------------------------- [quote="gepponline":3u2licoc]... Il dubbio che ho è che aprendo e chiudendo subito la connessione, il server non riesca ad intercettarla e perda il messaggio. C'e' questa possibilità visto che il server ha un 50ms di timeout tra la lettura di una nuova connessione e la successiva? In alternativa avevo pensato ad uno scambio di messaggi di conferma. ...[/quote:3u2licoc] La comunicazione dovrebbe, secondo me, seguire queste linee guida: 1) Connessione di tipo TCP/IP. TCP garantisce, in qualche modo, la ricezione del pacchetto se la connessione è attiva. Nel caso di collisione di pacchetti, viene gestita automaticamente la ritrasmissione. UDP è maggiormante performante proprio perchè vengono effettuati un numero inferiore di controlli e, una volta trasmesso il pacchetto non ne viene garantita la ricezione. 2) il Client è Master mentre il Server è Slave. A fronte dell'invio di un messaggio (MASTER --> SLAVE) il master deve sempre ricevere una risposta (MASTER <-- SLAVE). Se è un messaggio di interrogazione (query), deve ricevere la risposta alla domanda. Se è un messaggio di comando deve ricevere in risposta un messaggio di riconoscimento (acknowledge). 3) la sequenza lato client deve essere: - apertura connessione - invio comando/query - ricezione risposta - chiusura connessione bye ---------------------------------------- AUTORE: 129 DATA :10/03/2019 - 11:47:46 ---------------------------------------- Dovresti gestire gli errori e sia dal server che dal client dovresti ripristinare la linea in caso ci sia un errore del tipo 1 e 66 (non me li ricordo a memoria) comunque in questo caso ripritini la connessione. Comunque la lista puoi trovarla qui http://zone.ni.com/reference/en-XX/help ... ror_codes/ ALtro caso è il timeout es. 56 che puoi decidere di ignorarlo oppure inviare sulla rete un messaggio ping cosi controlli che tutto stia andando bene. Poi il controllo Aknowledge se non sai ancora come fare un metodo molto semplice ed efficace (ma non velocissimo) è inviare un doppio messaggio il primo di lunghezza fissa invia il numero di byte del messaggio successivo il secondo legge il messaggio conoscendone già la lunghezza ed evitandoti errori. Prova a vedere anche Simple SMTP su Package Manager. ---------------------------------------- ================================================================================ Due icone differenti in uno stesso eseguibile ================================================================================ AUTORE: 482 DATA :05/03/2019 - 07:03:27 ---------------------------------------- ...ma ciao! Ho un programma in cui vengono lanciate due istanze dello stesso VI rientrante. Avrei bisogno che le due istanze possano essere differenziate a colpo d'occhio nella barra delle applicazioni. Il problema è che a quanto pare labVIEW associa una e una sola icona ad un eseguibile e tutti i suoi subVI. Secondo voi c'e' soluzione a questo problema? Al momento l'unica che mi viene in mente è creare due eseguibili con icone differenti dallo stesso subVI e poi con un System exec.vi chiamarli e passargli gli argomenti che servono. Alternative? ---------------------------------------- AUTORE: 43 DATA :05/03/2019 - 12:54:42 ---------------------------------------- [quote="gepponline":lpqu1ss0]...ma ciao! Ho un programma in cui vengono lanciate due istanze dello stesso VI rientrante. Avrei bisogno che le due istanze possano essere differenziate a colpo d'occhio nella barra delle applicazioni. Il problema è che a quanto pare labVIEW associa una e una sola icona ad un eseguibile e tutti i suoi subVI. Secondo voi c'e' soluzione a questo problema? Al momento l'unica che mi viene in mente è creare due eseguibili con icone differenti dallo stesso subVI e poi con un System exec.vi chiamarli e passargli gli argomenti che servono. Alternative?[/quote:lpqu1ss0] Non so non ho mai provato, ma se cerchi sotto: c:\Program Files\National Instruments\LabVIEW 201x\vi.lib\LabVIEW Icon API\ Ci potrebbero essere funzioni che fanno al caso tuo. Come cambiare icona ad un App LabVIEW programmaticamente in runtime... Non ho tempo di guardarci fammi sapere. bye ---------------------------------------- AUTORE: 482 DATA :05/03/2019 - 13:05:20 ---------------------------------------- Ci avevo già guardato, ma pare che siano tutti inerenti le icone del connector pane e non della finestra. ---------------------------------------- AUTORE: 482 DATA :05/03/2019 - 14:55:38 ---------------------------------------- Tramite il forum ufficiale di Labview ho trovato una soluzione passando dalle API di windows. Questo il thread in questione e in allegato la soluzione trovata. Io ho usato solo il subVI Set Window Icon ---------------------------------------- ================================================================================ Trasferire dati verso FPGA ================================================================================ AUTORE: 10888 DATA :05/03/2019 - 10:46:02 ---------------------------------------- Buongiorno, devo riprodurre un file che contiene i dati registrati dal campo. Il file (*.txt) contiene 4 colonne (tempo, sensore 1,...sensore 3). Il file può essere molto grande (anche 250MB) Sto lavorando su una cRIO. Quindi devo trasferire dati da RT (suppongo di trasferire il file su cRIO con ftp) a FPGA e la prima soluzione che mi viene in mente è usare una FIFO (DMA, ma con la fifo non posso usare dati strutturati (vedi typedef. In pratica dovrei impacchettare su RT i dati su I32 e spacchettarli lato FPGA. Qualche idea\suggerimento per evitare tutto questo lavoro? Non mi dispiacerebbe leggere da file la riga relativa ad un campionamento e trasferirla su fpga in maniera organica, se non in un dato strutturato, magari in un array di 4 colonne. Grazie ---------------------------------------- ================================================================================ Integrale 2D o 3D???? ================================================================================ AUTORE: 11130 DATA :05/03/2019 - 15:41:27 ---------------------------------------- Buongiorno a tutti, dunque ho un problema che penso sia abbastanza "tosto".........devo fare un integrale doppio di una matrice di punti (400 * 100) oer calcolare un volume......finqua tutto bene.......ora il mio collega mi chiede di poter "impostare" ad un certo punto lungo l'asse X un piano inclinato a 45° e calcolare l'area sottesa (volume) parziale......... \":o\" e qui le mie conoscenze "matematiche" si arrendono........... \":mrgreen:\" \":?\" ---------------------------------------- ================================================================================ Forse è banale... ================================================================================ AUTORE: 2993 DATA :05/03/2019 - 20:02:49 ---------------------------------------- Qualcuno conosce un modo, o anche solo una "dritta" per poter mantenere a schermo il testo scritto in un "text indicator" e accodare sotto il nuovo, come in un elaboratore di testo? Grazie mille... ---------------------------------------- AUTORE: 482 DATA :06/03/2019 - 07:01:09 ---------------------------------------- ...ma ciao! devi combinare la stringa. Quello che c'era prima piu' il nuovo, con in mezzo un a capo. Come nell'allegato. Spero di aver capito bene. L'allegato è uno snippet, quindi se salvi l'imagine ela tarscini nel block diagram, ti crea il codice. ---------------------------------------- AUTORE: 2993 DATA :06/03/2019 - 17:29:51 ---------------------------------------- grazie, come sempre... un giorno ricambierò... ---------------------------------------- ================================================================================ Creazione di un driver con firma digitale ================================================================================ AUTORE: 822 DATA :04/04/2019 - 14:39:57 ---------------------------------------- Chiedo a voi, magari ci siete già passati. Sto sviluppando in Labview un tool che comunica via usb con uno strumento di acquisizione dati. Ho creato il driver dello strumento seguendo questa guida [url:1ixjbc9e]http://www.ni.com/tutorial/4478/en/[/url:1ixjbc9e] Il problema è che quando installo il driver, windows (win 10 a 64 bit), non me lo permette di fare perchè è un driver senza firma digitale. Allora devo disabilitare il controllo della firma digitale riavviando il pc e reinstallando il driver. Cosa devo fare per mettere la firma digitale al driver che ho creato? ---------------------------------------- AUTORE: 301 DATA :05/04/2019 - 09:52:51 ---------------------------------------- Ciao, la vedo un po grigina. La firma digitale la puo apporre Microsoft o qualcuno abilitato. https://docs.microsoft.com/en-us/window ... g-tutorial Aris ---------------------------------------- AUTORE: 129 DATA :05/04/2019 - 11:43:13 ---------------------------------------- Quando crei l'eseguibile nella sezione Windows Security c'è un flag Aplly digital signature se lo spunti puoi selezionare la firma digitale che però devi aver creato. Non ho mai fatto firme digitali ma potrebbero esserti utili questi articoli. https://support.office.com/en-gb/articl ... 063d86e512 https://blog.didierstevens.com/2008/12/ ... ecutables/ ---------------------------------------- ================================================================================ Sine wave su FPGA ================================================================================ AUTORE: 10888 DATA :02/07/2019 - 08:16:17 ---------------------------------------- Buongiorno a tutti, sto cercando di creare una sinusoide su cRIO passando per FPGA (cRIO 9045 e AO 9264), ma ottengo un onda quadra, probabilmente mi perdo qualcosa nella conversione dei tipi verso il modulo AO (FXP con Word lenght 20 bits a Integer word lenght di 5, range da -16 a +15,99) Sono partito dall'esempio che ho trovato in LV2018: Hardware In and Out -> ComactRIO-> Signal Gen and Processing->Analog->Gen->Sine wave. Il VI "sine wave generator" per fpga genera un dato I16 che devo adattare al modulo AO. Nell'allegato mostro il cast che ho eseguito. I VI e progetto sono troppo grandi per essere allegato, spero che quando scritto sia sufficiente per avere qualche spunto. ---------------------------------------- AUTORE: 482 DATA :03/07/2019 - 07:08:37 ---------------------------------------- Mi fa strano che possa essere un cast a modificare un onda sinusoidale in una quadra, a meno che la tua onda non abbia tutti valori molto superiori ai 5 bit e quindi tolto lo 0 tutti gli altri valori vengono limitati al 16 o qualcosa del genere.Trovo piu' facile che sia un errore nel blocchetto di generazione dell'onda. Puoi estrapolare quella parte e postarla? o magari ancche uno screenshot. ---------------------------------------- AUTORE: 10888 DATA :04/07/2019 - 08:14:35 ---------------------------------------- Ciao, provo ad allegare lo sreenshot. Grazie per la veloce risposta. ---------------------------------------- AUTORE: 482 DATA :04/07/2019 - 11:08:50 ---------------------------------------- Niente, ssenza avere i valori che compongono la sinewave è difficile replicare il tutto ---------------------------------------- AUTORE: 482 DATA :04/07/2019 - 11:24:34 ---------------------------------------- Ho fatto un po' di simulazioni e secondo me sono i valori che inserisci a far saltare tutto. Non mi è molto chiaro con che criteri questa onda venga generata, ma di sicuro è simmetrica rispetto allo zero, quindi devi dare l'offset corretto per avere valori solo positivi accettati dal tuo valore a 5bit idem per il range di valori. ---------------------------------------- AUTORE: 10888 DATA :04/07/2019 - 14:41:54 ---------------------------------------- Ciao, da oscilloscopio vedo che frequenza e ampiezza sono corretti, ma esce un onda quadra. temo che il problema sia la AO che accetta FXP, mentre il VI genera un I16.Forse mi perdo qualcosa li dentro. Sfortunatamente il progetto, anche se *.zip, e' treppo grande per essere postato (1,5 MB) ---------------------------------------- AUTORE: 482 DATA :04/07/2019 - 15:06:02 ---------------------------------------- Mi dai i valori del controllo sinewave1. Hai provato a collegare un waveform graph all'uscita e visualizzare quello che stai generando? ---------------------------------------- AUTORE: 10888 DATA :05/07/2019 - 07:18:32 ---------------------------------------- Ciao, ti allego i parametri, ho ripreso l'esempio presente in LV e in parte UI ho usato gli stessi VI per generare questi valori, la freq. di FPGA e' la stessa. No ho ancora messo un graph per vedere cosa genero, ma l'esempio LV che citavo e' stato importato sulla mia cRIO e genero sempre un onda quadra (da oscilloscopio) ma vedo una sinusoide sul graph in UI. Nell'esempio c'e' un loopback di quanto generato verso UI. Grazie per il tempo dedicato. ---------------------------------------- AUTORE: 482 DATA :08/07/2019 - 09:55:36 ---------------------------------------- Non mi torna quel valore 4 nello scale factor. I valori ammessi vanno da -1 a 0,999969. In piu' quel valore di frequenza, sembra generare un digitale che digitale non è. Nel senso che è talmente bassa la frequenza che a grafico si vedono solo dei gradini ma è la discretizzazione dell'onda che si sta formando. Inoltre come dicevo, con questi valori, ipotizzando che lo scale factor venga approssimato al valore massimo, ogni gradino discretizzato vale 200 quindi portando il tutto a un FXP di 5 bit praticamente segheresti tutti i valori. Ti allego un estrapolazione della generazione dell'onda per vedere se confermi quanto ti ho detto. ---------------------------------------- ================================================================================ Versione eseguibile ================================================================================ AUTORE: 487 DATA :25/07/2019 - 09:54:22 ---------------------------------------- Buongiorno a tutti, ho il seguente problema: vorrei visualizzare, durante l'esecuzione di un vi, la versione dell'eseguibile che lo contiene, quella per intenderci che viene impostata con l'application builder. Se uso le proprietà dell'application mi restituisce la versione del run time e non del mio eseguibile. Finora ho sempre gestito le versioni inserendone il valore nel codice, ma questa soluzione non mi piace tanto. Suggerimenti? ---------------------------------------- AUTORE: 482 DATA :25/07/2019 - 11:07:38 ---------------------------------------- Non mi ricordo dove l'avevo trovato, ma io uso questo VI allegato, che mi restituisce un sacco di info sull'eseguibile in esecuzione. \":wink:\" ---------------------------------------- AUTORE: 482 DATA :25/07/2019 - 11:12:49 ---------------------------------------- Non so se hai visto in alternativa queste due risorse: https://knowledge.ni.com/KnowledgeArtic ... AM&l=it-IT https://forums.ni.com/t5/Example-Progra ... anguage=it ---------------------------------------- AUTORE: 487 DATA :26/07/2019 - 10:33:38 ---------------------------------------- Grazie Geppo, era proprio quello che stavo cercando ---------------------------------------- ================================================================================ Interpolazione linea ================================================================================ AUTORE: 482 DATA :30/09/2019 - 11:11:59 ---------------------------------------- ....ma ciao! ho una linea composta da due punti. Iniziale e finale. Ho le coordinate X e Y dei due punti. Vorrei trovare i valori di Y ad una data X. Qual'e' il metodo piu' semplice secondo voi? grazie Geppo! ---------------------------------------- AUTORE: 482 DATA :01/10/2019 - 15:25:43 ---------------------------------------- Risolto \":)\" Dati i due punti iniziale A e finale B e le rispettive coordinate xA,yA e xB,yB i valori di Y alle varie X sono dati da questa formula. y = [(yA - yB) / (xA - xB)] (x - xA) + yA ---------------------------------------- AUTORE: 129 DATA :21/10/2019 - 13:50:18 ---------------------------------------- Interpolate? Si può utilizzare con un cluster XY per dare valori arbitrari a x. ---------------------------------------- AUTORE: 482 DATA :23/10/2019 - 15:46:25 ---------------------------------------- Ecco quello che cercavo! \";)\" ero sicuro che si potesse fare e probabilmente in passato l'ho anche già vatto, ma continuavo a vedere quel 1D array mi ha ingannato. Grazie mille, creo che sostituiro' quella formula con questa versione \";)\" ---------------------------------------- ================================================================================ Front panel in primo piano rispetto a tutto ================================================================================ AUTORE: 482 DATA :19/11/2019 - 10:10:56 ---------------------------------------- ...ma ciao! sto avendo un problemino a portar ein primo pinao un popup e non capisco perchè. Utilizzo delle chiamate alla user32.dll per identificare la mia finestra a livello di windows e poi portarla in primo piano. Il problema è che ogni tanto in sviluppo funziona tutto, ma ogni tanto no e con l'eseguibile non funziona mai ne sulla machcina di sviluppo ne su quella target (win7 e win10). L'applicazione tenta di venire in primo piano ma fa solo lampeggiare la barra delle applicazioni richiedendo l'attenzione. Sul target ho un altra applicazione labview che gira in primo piano, con il behavior su default. La mia nuova applicazione, gira minimizzata, ma ogni tanto deve far comparire in primo piano un POPUP. (uso il codice nel vi allegato nel popup per farlo venire in primo piano). Morale della favola, finche non abbasso l'applicazione in primo piano, il popup non viene in primo piano. Qualche suggerimento? grazie ---------------------------------------- AUTORE: 482 DATA :22/11/2019 - 07:08:17 ---------------------------------------- Grazie al supporto national ho forse trovato la soluzione al mio problema. C'e' una chiave di registro che impedisce alle applicazioni di prendere il focus in primo piano (che puo' avere anche un suo senso ma in questo caso mi blocca). La chiave è sotto HKEY_CURRENT_USER->Control Panel->Desktop->ForegroundLockTimeout Questa chiave nel mio caso era impostata a 200000 e impostandola a zero, adesso il front panel che mi interessa passa regolarmente in primo piano. ---------------------------------------- ================================================================================ LABVIEW 2020COMMUNITY EDITION che ne dite? ================================================================================ AUTORE: 482 DATA :16/01/2020 - 08:08:23 ---------------------------------------- ..ma ciao! non so se avete visto ma è uscita una nuova versione di labview community edition in versione beta. Quindi una versione libera da licenza per usi privati. Mi sono iscritto al programma, l'ho scaricato e installato ma non ho ancora avuto modo di usarlo ma trovo sia un grande primo passo verso un apertura all'esterno di Labview come vero e prprio linguaggio di programmazione all purpose. Che ne pensate? ---------------------------------------- AUTORE: 4 DATA :16/01/2020 - 21:28:37 ---------------------------------------- Io invece sono abbastanza scettico riguardo al fatto che possa portare a una maggiore diffusione di LabVIEW. Tutto sommato anche adesso ci sono vari modi per per usare LabVIEW senza avere i costi di licenza, oltre ai metodi illegali, mi riferisco a licenze universitarie, valutazioni, versioni studenti ecc ecc. quindi non credo che questa mossa di NI cambi molto lo stato delle cose. Inoltre rispetto al vecchio motto NI "LabVIEW Everywhere" credo che ormai NI sia la prima a non crederci più [url:j67132w3]https://forums.ni.com/t5/LabVIEW-Idea-Exchange/Make-labview-everywhere-a-reality/idi-p/1994483/page/7?profile.language=it#comments[/url:j67132w3] Ale ---------------------------------------- AUTORE: 482 DATA :17/01/2020 - 07:40:57 ---------------------------------------- [quote="ale914":2jwkqwzb] Tutto sommato anche adesso ci sono vari modi per per usare LabVIEW senza avere i costi di licenza, oltre ai metodi illegali, mi riferisco a licenze universitarie, valutazioni, versioni studenti ecc ecc. quindi non credo che questa mossa di NI cambi molto lo stato delle cose.[/quote:2jwkqwzb] Beh, tralasciando che adesso la community edition è in versione beta ed è comunque impossibile da trovare se non sai che c'e', mi aspetto che una volta rilasciato, il download sia disponibile facilmente. Adesso nonostante le licenze che dici tu, per ottenerle ci vogliono mille passaggi e non c'e' niente sul sito che ti indichi che esistono. Sul sito non le trovi neanche a piangere e se per caso le trovi, La evaluation è limitata, la student e l'universitaria devi avere la certificazione dell'istituto, un utente base, hobbysta o curioso che sia, vuole entrare nel sito e trovare il bel pulsantone DOWNLOAD e basta. Adesso anche solo per trovare Labview, se entri nel sito National e ci vuoi arrivare con i click diventi matto a meno che becchi di culo il banner di Labview. Sto parlando di labview come linguaggio per il cazzeggio, le piccole automazioni ecc, non di utilizzo professionale, per i Maker ecc. [quote="ale914":2jwkqwzb] Inoltre rispetto al vecchio motto NI "LabVIEW Everywhere" credo che ormai NI sia la prima a non crederci più[/quote:2jwkqwzb] Se intendiamo i vari sistemi operativi, dubito anche io che porteranno avanti il discorso su Linux (e Mac) anche se incrocio fortemente le dita. O puntano su Win IoT o hanno qualche piano segreto su NXG che con il web module secondo me puo' dare belle soddisfazioni, anche se sti fetenti l'hanno messo a pagamento a prezzi folli. Non saprei come inquadrare il futuro di National. SO che negli ultimi anni l'assistenza a livello qualitativo è calata parecchio e l'hardware il piu' delel volte preferisco passare da fornitori terzi molto piu' economici ma altrettanto affidabili per quanto riguarda i normali I/O senza necessità troppo spinte. Secondo me aprirsi al grande pubblico potrebbe essere un bel passo. Cosi' come lo sarebbe puntare sul mobile e quindi fare un qualcosa che permetta di compilare per Android o Mac seriamente, perchè il data dashboard su Android lo trovo abbastanza imbarazzante... ---------------------------------------- AUTORE: 4 DATA :17/01/2020 - 08:29:02 ---------------------------------------- si, è vero che trovare un bel tasto download sul sito ni è un'avventura, io uso google per cercare i link ai download infatti... [quote:19jb5z7e]Se intendiamo i vari sistemi operativi, dubito anche io che porteranno avanti il discorso su Linux (e Mac) anche se incrocio fortemente le dita.[/quote:19jb5z7e] Non intendo solo vari SO ma soprattutto diversi HW. Esistono le estensioni per RT e FPGA ma, a parte il costo, la loro utilità diventa sempre meno evidente visto i passi avanti che fanno gli altri, ad esempio per programmare FPGA con i tool XILINX ad oggi esiste un linguaggio grafico... non serve in teoria conoscere il VHDL quindi l'unicità di LabVIEW viene un po meno in questo settore. Per il web siamo messi ancora peggio, mentre NI pensa a come fare (NXG non è ancora pronto) il mondo vive sul web ed esistono soluzioni per ogni cosa. Secondo me LabVIEW ha ormai quasi solo un motivo per essere usato, la velocità che ti permette, se lo sai usare, per mettere in piedi un [u:19jb5z7e]prototipo[/u:19jb5z7e] di un sistema di misura o di automazione, soprattutto se usi insieme RT o FPGA. Occhio che ho detto prototipo, perchè poi per terminare l'applicazione in modo professionale LabVIEW ti fa pagare il tempo risparmiato con gli interessi. In ogni caso anche il vantaggio in termini di velocità è comunque insidiato da altri tool e linguaggi "testuali" che alla fine non sono poi molto più lenti per arrivare al risultato, mi riferisco a C# o a Python. NXG non credo rivoluzionerà le cose, ci stanno mettendo troppo tempo a buttarlo fuori, rischia di nascere già vecchio. ---------------------------------------- AUTORE: 301 DATA :17/01/2020 - 09:25:26 ---------------------------------------- PURTROPPO......mi trovo d'accordo con Ale. Ho "investito" tutto sul Labview, e ad oggi dico "ahimè".... Si, bello, figo, ci fai tante cose, è potente.......ma ai giorni d'oggi, devo dire che si è troppo fossilizzato su quelle che fino a qualche anno fa erano i suoi punti di forza, rimanendo inesorabilmente indietro su tutto il resto. I linguaggi di programmazione sono una marea, ma molti e molti sono cresciuti in maniera esponenziale, includendo tecnologie, piattaforme e creando librerie un po per tutto. che il Labview fosse piu rapido nello sviluppo, forse era vero tempo fa, oggi......vado molto piu piano a dirlo (in generale). Labview "free edition", confesso che mi è scesa una lacrima quando ne ho letto la notizia la prima volta.....ma credo sia tardi, sono arrivati troppo lunghi. Ad oggi, sto provando in tutti i modi a "reinventarmi", a spostarmi su un altro linguaggio, ma partendo da cio che conosco (il Labview, appunto), l'approccio ad un linguaggio testuale è DURISSIMO!!! (poi, io sono anche una capra \":lol:\" ). Aris ---------------------------------------- AUTORE: 482 DATA :20/01/2020 - 07:15:15 ---------------------------------------- [quote="aris":2724o9dl] Ad oggi, sto provando in tutti i modi a "reinventarmi", a spostarmi su un altro linguaggio, ma partendo da cio che conosco (il Labview, appunto), l'approccio ad un linguaggio testuale è DURISSIMO!!! (poi, io sono anche una capra \":lol:\" ).[/quote:2724o9dl] Siamo piu' o meno sulla stessa barca. Ho già provato due volte a buttarmi su python e tutte e due le volte mi son fermato a metà e ogni volta a ricominciare è un ricominciare completamente da capo. Con labview il grosso vantaggio è stato avere da subito applicazioni concrete e tangibili da mettere in pista e soprattutto interfaccia utente drag and drop senza programmazione. Forse dovro' retrocedere e passare ai PLC \":)\" Anche seocn quelli la visione è fuori discussione. Comunque io conto ancora su questo mega passo indietro di NI \":)\" Se poi lo usero' solo io nel mondo, chissenefrega, basta che mi permettano di usarlo per tutto \":)\" ---------------------------------------- AUTORE: 43 DATA :20/01/2020 - 09:53:30 ---------------------------------------- Ciao a tutti. E' un po' di tempo che non uso o uso poco LabVIEW. Uso in prevalenza CVI. Non sapevo di questa "community edition" e la prima cosa che mi verrebbe da dire è: 'Finalmente'! Ma poi leggendo i Vostri post e la mestizia delle Vostre parole mi verrebbe da dire: 'Troppo tardi'! Non sono un entusiasta per natura, e difficilmente ne vengo contagiato. Ritengo che il LabVIEW nato come SW a corredo dell'HW di NI sia ancora valido: prendi una scheda di acquisizione, la infili o la colleghi al PC, apri un esempio LabVIEW già fatto e grafichi un'acquisizione. E' vero che l' HW cambia, che le interfacce cambiano, e stare al passo coi tempi è dura per tutti, sia per i programmatori che per le aziende come NI, ma quello che mi sembra anacronistico sia il modello di businness. Non si può pensare di lucrare su un linguaggio di programmazione se si vuole la sua diffusione, soprattutto per i costi di sviluppo. Mi aspetto che dopo questa mossa NI si decida a rendere LabVIEW un bel po' + OPEN. bye ---------------------------------------- AUTORE: 129 DATA :26/01/2020 - 21:19:01 ---------------------------------------- Per come la vedo io, l'orientamento è anche se in ritardo di allinearsi ai vari visual studio ecc. D'altra parte labview è un ambiente per lo sviluppo di codice G. In labview si parla da anni di ingegneria del software, la programmazione a oggetti ecc. I frameworks, l'apertura a python a dot.net... Quello che non capisco è invece NXG,dove sembra quasi un orientamento più a configurare che a programmare. NI è legata all'hardware e penso che il primario interesse sia quello di fornire un ambiente facile per utilizzare le schede anche da non sviluppatori. Quindi ad oggi sono felice della labview community,felice dell'orientamento verso l'open source,cosa che in italia valga poco. I nostri amici che smanettano in labview stanno orientandosi piu al training e allo sviluppo di framework o tool e altro in ottica app-store... Per quanto riguarda altri linguaggi ovviamente alcuni sarebbe bene iniziare a conoscerli per operare in ecosistema con più linguaggi utilizzati per una stessa applicazione. Poi ci sono TestStand e co che invece si paga la licenza anche per runtime... Alla fine predica bene e razzola male. ---------------------------------------- AUTORE: 645 DATA :12/02/2020 - 17:25:29 ---------------------------------------- Ciao a tutti, dopo un sacco di tempo torno a salutarvi!! E riprendo in mano LabView che molto spesso vedo solo come icona sul pc \":D\" Non sapevo di questa Community Edition, adesso sbircio. Io posso dire che in questi anni ho utilizzato diversi linguaggi di programmazione e sistemi più o meno complicati ma LabView rimane quel linguaggio che preso in mano anche dopo tanto tempo mi permette di collegarmi al volo all'impianto che voglio realizzare. Non capisco bene NXG: ho provato ad usarlo tante volte ma ogni volta mi fermo perchè mi sembra un po' troppo banale... Cioè, sicuramente si possono fare un sacco di cose in maniera rapida ma, a parte il Web Module (si chiama così?) che credo possa realizzare quel qualcosa in più nella parte web (dove come avete detto voi ci sono tante soluzioni e tanti linguaggi) il resto non mi fa impazzire. ---------------------------------------- AUTORE: 482 DATA :30/04/2020 - 07:01:40 ---------------------------------------- E' appena stata rilasciata per tutti la versione ufficiale! https://www.ni.com/it-it/shop/labview/s ... ition.html Ovviamente non potevano fare le cose semplici, cosi' hanno rilasciato sia labview normale che labview NXG con tanto di WEBModule che invece nella versione professional è a parte e a pagamento oltre ad essere l'unica cosa interessante di NXG. Vabbeh, vediamo che ne esce. Credo che scarichero' tutti e due e magari provero' ad usare NXG se davvero è a quello che punta NI... ---------------------------------------- ================================================================================ Messaggi CAN da file di testo ================================================================================ AUTORE: 11256 DATA :01/04/2020 - 14:16:14 ---------------------------------------- Buonasera. Grazie anticipatamente per il servizio che offrite. Ho il seguente problema. Devo leggere un file .csv (con n righe) contenente un log di parametri CAN (rpm, temperatura motore, ecc.) e discriminarli sulla base del MsgID e del campo dati (8 byte), assegnandoli al rispettivo indicatore numerico, il quale dovrebbe poi variare in base al valore contenuto nel messaggio (riga). Riesco a leggere il file mediante il VI Read From Spreadsheet File ma non so come discriminare i parametri presenti in ogni riga del file. Spero di essere stato abbastanza chiaro. Grazie ancora per la disponibilità e l'attenzione. Cordiali saluti. ---------------------------------------- AUTORE: 482 DATA :02/04/2020 - 07:54:46 ---------------------------------------- Se usi il read from spreadsheet vuol dire che in uscita avrai un array bidimensionale. Da quel momento in poi devi usare i blocchetti di manipolazione degli array. Uno di questi potrebbe essere "Index Array". Questo blocchetto, se gli colleghi in ingresso un array 2D, ti permette di collegare l'indirizzo della riga e della colonna dell'elemento che vuoi ottenere. Se colleghi solo l'indice della riga o solo quello della colonna, in uscita otterrai un array corrispondente a quella riga o quella colonna. Utilizzando dei cicli FOR e dei blocchetti di manipolazione delle stringhe, puoi poi eventualmente stabilire quali righe o colonne vuoi prelevare. Ti faccio un esempio: Apri il file->array 2D Estrai la prima riga (intestazioni)->array 1D Ciclo FOR (oppure Search 1D)->Cerchi nella prima riga l'elemento che si chiama MsgID-> ottieni l'indice della colonna MsgID Riprendi l'array 2D-> Estrai la colonna corrispondente al MsgID-> ottieni tutti i MsgID Se fai la stessa cosa ma invece che MsgID cerchi il nome dle campo dati, poi lo unisci al precedente avrai il tuo array filtrato con solo le due colonne che ti interessano. Se sai già a priori il numero della colonna, ti eviti la ricerca e ti limiti ad estrarre la colonna 1 e la colonna 2. Questa cosa la puoi fare con un unico index array che è un blocchetto estensibile. basta trascinarlo verso il basso. Otterrai cosi' i 2 array che poi con un build array puoi unire. Stai attendo che quando fai il build array, unisce gli array 1D come righe. Quindi o suibito dopo fai un transpose 2D array, oppure anzichè il build array, usi un Insert into array. Pe capire cosa fanno i vari blocchetti, premi ctrl+h e avrai un finestra che puntando il mouse sul blocchetto, ti da un help istantaneo. ---------------------------------------- AUTORE: 11256 DATA :03/04/2020 - 14:21:59 ---------------------------------------- Tutto chiaro. Grazie. ---------------------------------------- ================================================================================ Fronte di salita ================================================================================ AUTORE: 11257 DATA :21/04/2020 - 19:22:44 ---------------------------------------- Salve a tutti. Sto realizzando un progetto su labview che prevede la lettura del fronte di salita del classico pulsante boolean. Il problema è che non so da dove iniziare.Spero che qualcuno possa aiutarmi. Grazie in anticipo. ---------------------------------------- AUTORE: 482 DATA :22/04/2020 - 07:20:15 ---------------------------------------- ...ma ciao! Diciamo che l'affermazione "non so da dove iniziare" lascia spazio ad interpretazioni. 1) Non sai come piazzare il pulsante 2) Non sai come si programma in labVIEW 3) Non sai come individuare il fronte di salita. Cosa ci devi fare poi col fronte di salita? Anche questo è importante per stabilire come sviluppare il programma. Partiamo pero' d auna versioen classica e teniamo in considerazione ch eil tuo problema faccia parte della terza ipotesi. Per prima cosa direi di inseire nel block diagram un ciclo while. In questo ciclo while puoi fare due cose: 1) soluzione brutta brutta: confronti lo stato del terminale del pulsante con la sua variabile locale (che prende il valore all'iterazione successiva del ciclo), in quetso modo puoi vedere se ha cambiato valore 2) crei uno shift register (basta che vai sul bordo laterale del ciclo while e col tasto destro fai crate->shift register) gli shift register servono per passare un valore da un iterazione a quella successiva del ciclo in cui si trovano. Prendi lo stato del pulsante e lo passi allo shift register a destra poi prendi quello di sinistra e lo confronti con lo stato del pulsante. In tutti e due i casi ti trovi con un confronto che ti dice se il pulsante ha cambiato stato. Questo risultato lo metti in AND con lo stato del pulsante. In questo modo nel momento in cui il pulsante cambierà di stato da false a true, avrai un confronto che ti dirà che TRUE(il pulsante ha cambiato stato) e subito dopo un altro TRUE che ti dirà che oltre ad aver cambiato stato, è passato da false a true. all'iterazione successiva, il pulsante non avrà piu' cambiato stato, quindi il risultato delle operazioni booleane, restituirà false anche se il pulsante sarà ancora a true. idem se passasse a False. Ti chiedevo cosa ci devi fare col fronte perchè questa cosa puo' essere anche fatta senza scrivere una riga di codice e cioè impostando la mechanical action del pulsante di tipo latch. Questo tipo di azioen prevede che il pulsante mantenga il nuovo stato fintanto che non viene letto dal diagramma, dopodichè ritorna allo stato precedente, quindi viene letto una volta sola l'eventuale stato true. Oppure ancora si potrebbe usare una event structure... Ma vediamo se cosi' ti basta. ---------------------------------------- AUTORE: 11257 DATA :22/04/2020 - 10:06:12 ---------------------------------------- Grazie mille per i chiarimenti. La tua supposizione è corretta, infatti ho bisogno di intercettare il fronte di salita del pulsante per accendere un led diverso ad ogni fronte di salita letto. Ho provato la tua soluzione con lo shift register e penso di aver risolto il problema. Ti allego l'immagine del block diagram, così puoi dirmi se ci sono degli errori oppure delle modifiche da fare.[img:1781fk1a]https://imgur.com/meLr737[/img:1781fk1a] ---------------------------------------- AUTORE: 11257 DATA :22/04/2020 - 10:08:06 ---------------------------------------- Se la foto non si vede ecco il link https://imgur.com/meLr737 ---------------------------------------- AUTORE: 482 DATA :22/04/2020 - 10:58:27 ---------------------------------------- Elimina le due variabili locali che hai creato e collegaci direttamente il filo del terminale del pulsante e sei a posto. ---------------------------------------- AUTORE: 11257 DATA :22/04/2020 - 11:15:58 ---------------------------------------- Perfetto grazie ancora ---------------------------------------- ================================================================================ Help retro-conversione ================================================================================ AUTORE: 482 DATA :12/06/2020 - 15:07:55 ---------------------------------------- Devo convertire un progetto da versione 2017 a versione 2009 ma se uso direttamente il Save for previous version, mi va a buon fine nella teoria ma nella pratica evidentemente qualcosa va storto perhcè poi non mi apre il Main VI. Qualcuno ha una versione intermedia installata per poter provare a fare la conversione in 2 passaggi? grazie mille ---------------------------------------- AUTORE: 11265 DATA :31/07/2020 - 10:41:08 ---------------------------------------- Ciao, uso Labview fin dalla versione 3 direi anno 1994. Ho un portatile conle versioni dalla 7 in poi. Hai ancora bisogno della retro conversione? Se si fammi sapere. Saluti Golzio ---------------------------------------- AUTORE: 482 DATA :03/08/2020 - 07:36:04 ---------------------------------------- Grazie mille della disponibilità. Fortunatamente dopo vario naufragare anche con l'assistenza ufficiale NI ho trovato il problema e l'ho risolto. Per qualche strano motivo c'era il waveform graph nella pagina principale che aveva qualcosa di corrotto. Sostituito con un altro identico e la conversione è stata digerita senza problemi. quindi grazie lo stesso, ti tengo presente per la prossima volta \";)\" ---------------------------------------- ================================================================================ database toolkit e binario ================================================================================ AUTORE: 3428 DATA :16/06/2020 - 17:32:33 ---------------------------------------- Ciao dovrei inserire un file salvato in modalità binario con la palette di labview in un database utilizzando ADO e la palette di Labview. SQL server. Sapreste darmi qualche dritta? Vedo che il varbinary è max 8K possibile? Convertire il tutto in xml e poi darlo in pasto al DB ma come XML potrebbe essere una via. Dovrei sia inserire nel DB tale binario per poi fare una query di select e fare poi un cast al mio tipo di dato (cluster annidato). Grazie degli spunti ---------------------------------------- AUTORE: 482 DATA :17/06/2020 - 07:22:48 ---------------------------------------- Non so se hai già visto questa tabella relativa ai tipi di dati in SQL Server: binary(n) Fixed width binary string 8,000 bytes varbinary Variable width binary string 8,000 bytes varbinary(max) Variable width binary string 2GB image Variable width binary string 2GB Probabilmente dovresti cambiare tipo di dato a quella colonna per poter storare piu' di 8k. ---------------------------------------- AUTORE: 3428 DATA :17/06/2020 - 07:48:10 ---------------------------------------- Bene Grazie mille!!! Avevo visto dopo ma ero rimasto al max 8k. Ad ogni modo la domanda è anche su come castare un binario in stringa per fare la query? ---------------------------------------- AUTORE: 482 DATA :17/06/2020 - 09:03:48 ---------------------------------------- Non credo si possa. Nels enso che se usi il toolkit di Labview e provi ad inserire una stringa in un campo binario ti da errore, devi inserire direttamente un binario. Quando hai piu'0 camoi, crei il cluster con i vari campi e a quello assegni il binario. Ho fatto un paio di prove e cosi' non da errore, pero' se trasformo la stringa in un array di binari e poi faccio l'operazione inversa quando leggo il campo, ho due valori diversi.. ---------------------------------------- AUTORE: 482 DATA :17/06/2020 - 09:17:00 ---------------------------------------- Ho tyrovato questa conversazione con qualche spunto sulla modifica di un VI di libreria https://forums.ni.com/t5/LabVIEW/Write- ... anguage=it ---------------------------------------- AUTORE: 3428 DATA :17/06/2020 - 12:15:42 ---------------------------------------- Grazie mille Geppo Risolto. Campo varbinaryMAX come consigliato. Ho provato 2 strade ed entrambe funzionanti! varbinaryMAX e XML e un semplice campo nchar per un ipotetica chiave. utilizzo i DB tools insert data.vi per l'instert DB tools select data.vi per il get/select in allegato la vi funzionante di prova Grazie ancora per le dritte ---------------------------------------- AUTORE: 482 DATA :17/06/2020 - 15:49:21 ---------------------------------------- Per l'XML è tutto chiaro, è un normale campo stringa. Non mi è chiaro invece il varbinary(MAX) che gli passi un cluster. Hai modificato il VI di libreria dell'INSERT come diceva nel link che ho postato? ---------------------------------------- AUTORE: 3428 DATA :18/06/2020 - 16:37:19 ---------------------------------------- No, non ho modificato nulla. Di fatto passo un cluster ma come variant. ---------------------------------------- ================================================================================ Utilizzate il controllo sorgente con Labview? ================================================================================ AUTORE: 822 DATA :21/09/2020 - 11:27:13 ---------------------------------------- Ciao, vorrei utilizzare il controllo del versioning su Labview in modo da avere storicità delle varie modifiche e nel caso poter fare un downgrade ai VI precedenti. Qualcuno ha esperienza nell'utilizzo del source control con Labview? Quale source control provider utilizzate? Grazie ---------------------------------------- AUTORE: 129 DATA :08/10/2020 - 21:58:01 ---------------------------------------- Puoi usare svn (tortoise) se lo vuoi usare in locale o su un server interno...se vuoi invece su cloud noi usiamo git su bitbucket. Usiamo source tree come client per gestire i repository ... Con bitbucket puoi usare anche altri tool utili come issues tracker,puoi collegare i repository su trello etc etc. ---------------------------------------- ================================================================================ Comunicazione Bluetooth ================================================================================ AUTORE: 2514 DATA :07/10/2020 - 14:55:44 ---------------------------------------- Ciao a tutti. Vorrei implementare una comunicazione tra il mio PC con Dongle Bluetooth 4.2 e un modulo bluetooth Microchip (RN4678) a bordo di una centralina. Preciso che sono digiuno del protocollo bluetooth, quindi scusate le ingenuità. Ho usato la funzione DISCOVER ed effettivamente vedo il mio modulo tra i device presenti. Estraggo l'indirizzo dal cluster e lo passo alla RFCOMM SERVICE DISCOVERY, che lavora come mi aspetto e mi restituisce un numero di canale (il 6) e una lista di servizi. Nel cluster leggo la uuid, che contiene nella parte alta il pattern 1101 (SPP) e quindi fin qui credo sia tutto a posto (forse). Uso l'uuid e il canale e l'indirizzo della RFCOMM per tentare di aprire una connessione bluetooth con il mio modulino. ma mi viene restituito l'errore 59 (rete non collegata), e talvolta il 54 o il 56. Qualcuno di voi ha qualche riferimento o materiale da indicarmi per capirci qualcosa di più (e ci vuol poco, visto che non ci capisco niente in questo momento)? Accludo le due stupidaggini che ho messo insieme per tentare di aprire una connessione. Vorrei scrivere 3 byte e riceverne 5 dalla mia centralina. Vi ringrazio in anticipo per l'aiuto. Sto usando LV2013. ---------------------------------------- ================================================================================ EXE su Windows Server ================================================================================ AUTORE: 11274 DATA :08/10/2020 - 14:58:47 ---------------------------------------- Buongiorno, sapete se possibile far girare EXE generati da LV2014 su sistema operativo Windows Server? vorrei acquistare un server VPS e farci girare delle applicazioni sviluppate in labview. Grazie. ---------------------------------------- AUTORE: 129 DATA :08/10/2020 - 21:45:32 ---------------------------------------- Si è possibile. Devi installare il runtime ovviamente. ---------------------------------------- AUTORE: 11274 DATA :09/10/2020 - 07:27:33 ---------------------------------------- Perfetto, quindi posso utilizzare gli eseguibili generati da Labview 2014 su Windows Server 2016 0 2019? ---------------------------------------- AUTORE: 129 DATA :09/10/2020 - 18:17:30 ---------------------------------------- Si puoi. Ovviamente prima devi avere installato RunTime completo di tutti i servizi che usi nelle tue applicazioni. ---------------------------------------- AUTORE: 11265 DATA :14/10/2020 - 17:42:21 ---------------------------------------- Ciao, Per gli eseguibili non ci sono problemi (l'ho fatto per diverse versioni di Windows server). La vera questione è far girare un eseguibile come servizio. In questo caso le possibilità e le soluzioni dipendono dalla versione di Windows Server. Saluti Golzione ---------------------------------------- ================================================================================ filtro rc ================================================================================ AUTORE: 11276 DATA :18/11/2020 - 23:16:05 ---------------------------------------- Salve a tutti! Sono alle prime armi con Labview e ho avuto dei problemi con la creazione di un filtro rc passivo. Quello che ho fatto è stato creare un segnale in ingresso che possa essere scelto dall'utente e inserire il guadagno per l'ampiezza del segnale in ingresso,lo sfasamento e la frequenza come ingressi per un altro segnale, in modo da avere in out la composizione di questo segnale con tali dati che sarebbe il segnale filtrato, il problema è che funziona per le onde sinusoidali in ingresso ma non per quelle quadrate e triangolari(dove dovrei avere una vera e propria deformazione; in onda triangolare se in ingresso ho un'onda quadra e in onda quadra se in ingresso ho un'onda triangolare). Grazie a chi mi potrà dare una mano \":D\" ---------------------------------------- ================================================================================ LabVIEW NXG è morto prima di nascere ================================================================================ AUTORE: 4 DATA :09/12/2020 - 09:57:29 ---------------------------------------- Non so se ne eravate a conoscenza, ma è una cosa importante per tutta la comunità LabVIEW quindi lo condivido qui. In breve, LabVIEW NXG il futuro di LabVIEW, è stato abbandonato da NI... [url:377jsjcw]https://forums.ni.com/t5/LabVIEW/Our-Commitment-to-LabVIEW-as-we-Expand-our-Software-Portfolio/td-p/4101878?profile.language=en[/url:377jsjcw] ---------------------------------------- AUTORE: 482 DATA :09/12/2020 - 10:07:42 ---------------------------------------- No, non lo sapevo! Ma direi che ci sta tutta, onestamente l'ho aperto per curiosità ma non l'ho mai usato, anche perchè era quasi da imparare da zero e sarebbe stato assurdo. Ammetto di aver provato fondamentalmente la questione legata al WEB Module che era secondo me l'unica cosa interessante. La possibilità di creare applicazioni web complete e fruibili da qualsiasi SO, senza menate di runtime engine, mi intrigava, anche se il fatto che fosse un tool a pagamento mi ha fatto subito desistere. Spero che possano in qualche modo integrare questa funzionalità in labview standard al posto di quella ciofeca di data dashboard per mobile. Cosi' come hanno fatto un passo indietro su questo, spero che ne facciano uno di lato e in avanti sulla Community edition per avvicinare quanta piu' gente possibile all'ambiente. Ad oggi la versione free è ancora demandata ad un link testuale in fondo alla pagina di selezione delle versioni, che se non sai che c'e', non la troverai mai. ---------------------------------------- AUTORE: 822 DATA :04/02/2021 - 10:39:48 ---------------------------------------- [quote:1g0mmeuq]Ad oggi la versione free è ancora demandata ad un link testuale in fondo alla pagina di selezione delle versioni, che se non sai che c'e', non la troverai mai[/quote:1g0mmeuq] Non ho capito, esiste una versione free di LabVIEW??? ---------------------------------------- AUTORE: 482 DATA :05/02/2021 - 08:11:46 ---------------------------------------- Esattamente, dall'anno scorso è stata rilasciata la versione Community con tutti driver per interfacciarsi con i vari Arduino, Raspberry ecc.. Con le solite restrizioni che non puo' essere usata per scopi commerciali ecc, pero' è scaricabile ed utilizzabile gratuitamente. ---------------------------------------- ================================================================================ REST API con LabVIEW ================================================================================ AUTORE: 482 DATA :27/01/2021 - 15:55:53 ---------------------------------------- ...ma ciao! devo realizzare un app per Android che comunichi con un DB MS SQLServer e la realizzerei con App Inventor. Per poter comunicare con il Db pare che la soluzione migliore sia realizzare delel REST API apposta. Stavo ipotizzando di farlo con Python che vorrei imparare ma ho capito che è una cosa troppo complicata per me, per il momento. Quindi mi chiedevo, ma non posso fare la stessa cosa con labVIEW? Si puo' realizzare una REST API con LabVIEW per poi fare delle richieste tramite i metodi classici delle WEBAPI? ---------------------------------------- AUTORE: 150 DATA :24/02/2021 - 09:18:05 ---------------------------------------- Ciao, si può fare con LabVIEW un webservice che espone tutta una serie di metodi REST (tra l'altro un mio collega ha fatto anche qualche esperianza chiamando i metodi da Android). Non ho però capito che architettura hai in mente (diciamo uno schema funzionale). In soldoni, dove gira il WebService realizzato in Labview (che poi alla fine sarà un exe che gira come servizio)? Saluti Golzio ---------------------------------------- AUTORE: 482 DATA :26/02/2021 - 08:01:47 ---------------------------------------- E' esattamente quello il problema al momento. La web api l'ho fatta e funziona correttamente. Il "problema" è che è appunto un eseguibile labview, quindi riesco a farla girare solo su un mio server dove installo il runtime. Non mi pare esistano servizi di hosting web compatibili con labVIEW. Quindi se voglio fare questa cosa, posso farla ma completamente home made. Ho tral'altro il problema che utilizzando thunkable (app inventor) che è un sistema di sviluppo su web, questo non mi permette di testare il tutto, perchè l'accesso al mio server da remoto è bloccato dal firewall che non gestisco io. Quindi per debuggare questa app mi tocca ogni volta compilare l'APK e poi provarlo su un cellulare collegato alla rete interna. ---------------------------------------- AUTORE: 11265 DATA :26/02/2021 - 10:46:18 ---------------------------------------- Ciao, adesso comincio a capire. In sostanza non trovi un servizio di hosting su serverv windows che ti consenta di far girare l'exe labview (in sostanza installare RTE). Non sono esperto di web hosting e non immaginavo fosse un problema. Per la questione del debug forse il problema si potrebbe aggirare appoggiandosi ad un proxy che giri le chiamate che riceve da thunkable al tuo server di casa. Saluti Golzio ---------------------------------------- ================================================================================ Come si può analizzare un XYGraph? ================================================================================ AUTORE: 822 DATA :02/02/2021 - 16:24:15 ---------------------------------------- Ciao, devo analizzare i dati acquisiti su un XYGraph (calcolare la frequenza e il periodo). Per i Graph ci sono VI già pronti, ma per i XYGraph? Come potrei fare? Grazie ---------------------------------------- AUTORE: 482 DATA :04/02/2021 - 07:05:10 ---------------------------------------- Se l'intervallo delle X è costante, puoi convertire l'XY in un waveform oppure se non lo sono, puoi provare con i modulini di interpolazione per renderli tali. ---------------------------------------- AUTORE: 822 DATA :04/02/2021 - 09:44:34 ---------------------------------------- Grazie per la risposta, il problema è proprio il fatto che l'intervallo dell'asse dei tempi non è costante. Ho risolto creando ad hoc dei VI per il calcolo del periodo, alla fine si tratta di un'onda quadra, non è complicata da analizzare. Grazie ---------------------------------------- ================================================================================ Ancora le stringhe Multicolor ================================================================================ AUTORE: 2514 DATA :11/05/2021 - 17:01:42 ---------------------------------------- Ciao a tutti. Una vita fa chiesi aiuto alla community per poter usare stringhe multicolor nei miei Front Panel. Ovvero una stringa formata da caratteri diversamente colorati (i primi 3 gialli, dal quarto al decimo rossi e così via). Mi rispose gentilmente paracarro, indicandomi il sistema per farlo (proprietà di selezione di parte del testo e applicazione della proprietà Font.Color). Ma, come correttamente indicatomi allora da paracarro, ogniqualvolta si accoda un pezzo di testo alla stringa "colorata" senza che ci sia attiva una selezione, l'intera stringa viene ricolorata e tutto il lavoro va perso. Idem dicasi se si vuol "passare" la stringa colorata come parametro di uscita di un SubVI. Se dovesse mai servire a qualcuno come è servita a me, posto questo piccolo SubVI in cui, passando in ingresso un reference ad una stringa, questa viene modificata nel pannello del "chiamante" in base ai valori presenti in un array di punti split e di colori da applicare. E' una ca..ta ma forse a qualcuno può servire. Se volete provare il VI "stand alone" scollegate l'indicatore "Input" dal property node Str.Text.Text e scrivete nel campo Input la stringa da colorare. Ciao a tutti. ---------------------------------------- AUTORE: 301 DATA :25/05/2021 - 07:07:14 ---------------------------------------- Grazie Goblin, molto utile! Aris ---------------------------------------- ================================================================================ TestStand e Labview ================================================================================ AUTORE: 10888 DATA :17/05/2021 - 09:06:05 ---------------------------------------- Buongiorno, sto cercando di pilotare del codice LV via una sequenza di TestStand usando le LV API per TestStand. Ovviamnte non ci riesco, nel mio VI di prova ho inserito la reference alla TS sequence context ed e' stata mappata nel pannello In\Out cosi' da risultare visibile a TS. In TS ho una main sequence che si occupa di scrivere su una variabile StationGlobal, la stessa che vado a leggere in LV. Ho poi una sequence parallela che si occupa di lanciare il VI Quando lancio la sequence di TS su pannello di LV non vedo nulla. Sicuramente TS interagisce con LV, perche' a VI aperto questo passa di "edit mode" a running, ma sull'indicatore di uscita non vedo nulla. Sto usando LV 2018 e TS2017 SP1 Allego progetto Grazie ---------------------------------------- AUTORE: 10888 DATA :17/05/2021 - 14:14:26 ---------------------------------------- Trovato l'errore...era in StationGlobals.stop ---------------------------------------- ================================================================================ Gantt in labview ================================================================================ AUTORE: 482 DATA :25/05/2021 - 09:55:56 ---------------------------------------- Qualcuno di voi conosce qualche via interessante per realizzare dei gantt con labview? Meglio senza passare da excel o cose simili. Ho degli eventi e vorrei graficarne la data di inizio e di fine in modo che siano poi selezionabili per vederne i dettagli. grazie Geppo! ---------------------------------------- AUTORE: 482 DATA :26/05/2021 - 15:38:48 ---------------------------------------- Se a qualcuno puo' interessare, ho imbastito questo che puo' essere un buon punto di partenza. ----------------------------------------