in data 10-11-2015 03:53 AM
Buongiorno a tutti. Ho veramente bisogno di aiuto! Da una decina di giorni mi sto scervellando per capire il problema, ma mi spiego: Ho sviluppato un'applicazione per banchi prova dinamici; questa utilizza una seriale che in vari VI interroga un PLC con una frequenza di 100ms, e questo funziona benissimo. Un mio cliente mi ha richiesto l'implementazione della diagnosi OBD2 per vedere e memorizzare ulteriori dati sulle prove di banco. Sia per costi che per reperibilità ho optato per l'ELM327. E' risaputo che questo chip purtroppo è molto lento e ho pensatoche, per non influire con la lettura dati da PLC e vari grafici runtime, di utlizzare la scansione continua della OBD2 in un thread separato scrivendo i dati in un cluster con accesso globale, credevo funzionasse tipo il backgroundworker del .NET (io provengo da quell'ambiente di sviluppo). Quindi, nella Toplevelmain, vi da dove parte il programma e vengono lanciate le varie schermate, ho messo un'altro while loop con dentro la scansione continua dell'ELM327. E qui il mio stupore! Per giorni l'ho testato però lanciandolo dall'ambiente di sviluppo e funziona benissimo! Una volta compilato, dallo stesso pc, il programma gira al rallentatore, addirittura, quando arriva a richiedere la prima scrittura su seriale PLC, li si pianta. Qualcuno per favore sa come posso fare? Sono veramente disperato.... le ho provate tutte! Ho provato a cambiare l'esecuzione delle VI, ho provato ad usare la VISA sincrona e asincrona... ma non cambia nulla. Il colmo è che se io potessi usare il programma da ambiente di sviluppo, il tutto funzionerebbe a meraviglia... dove sbaglio?? RIngrazio fin d'ora chi mi può aiutare, GRAZIE!
in data 11-20-2015 06:26 AM
posta il codice