Obyrt Posted August 22, 2016 Report Share Posted August 22, 2016 Salve a tutti, sto utilizzando Visual Studio 2015 con Drive di comunicazione x PLC Micro850 AB. Funziona con C# ma vorrei usare un progetto di VB per poter utilizzare anche la logica vero/falso, qualcuno puo' indicarmi il codice per la comunicazione ethernet? Grazie Link to comment Share on other sites More sharing options...
Livio Orsini Posted August 22, 2016 Report Share Posted August 22, 2016 Quote vorrei usare un progetto di VB Sin tratta di VB o VB.NET? Con VB.NET non ci dovrebbero essere grossi problemi a ricompilare il sorgente C#, bastano pochi aggiustamenti. Link to comment Share on other sites More sharing options...
Obyrt Posted August 22, 2016 Author Report Share Posted August 22, 2016 Applicazione Windows Form Visual Basic Link to comment Share on other sites More sharing options...
walterword Posted August 22, 2016 Report Share Posted August 22, 2016 VB.NET con VC# non c'entrano proprio niente e ci vogliono di piu di "pochi aggiustamenti" ....partendo dalla sintassi , ai casting e a tutto il resto Link to comment Share on other sites More sharing options...
Livio Orsini Posted August 22, 2016 Report Share Posted August 22, 2016 Valter, non ci sei proprio: VB.NET e C# sono talmente affini che i testi di MS (che sono vangelo essendo MS l'autore dei 2 linguaggi) ti fanno sempre gli esempi nei 2 linguaggi, proprio per mostrarne le affinità. E' VB che ha poco a che spartire con C# ed anche con VB.NET Link to comment Share on other sites More sharing options...
walterword Posted August 22, 2016 Report Share Posted August 22, 2016 Livio , lascia fare non offenderti ma con questi oggetti ci gioco da un bel pò e se mi permetto di dire una cosa lasciamela dire e fidati che non la dico cosi tanto per dire a caso. Ti manderò un bel libro sul core della .NET e capirai tante cose, che C# è il linguaggio principe e che non sono la stessa cosa , VB.NET rimane ancora sopra per l'interpretazione.Altro linguaggio degno di nota al livello di VB.NET e forse piu è Python I linguaggi C# e java hanno degli affini per la sintassi e per molte cose ma anche li ci sono diversità fondamentali. Se devi fare un'applicazione con finestrelle , dataset , DB etc è veloce ed utile usare Vb.net magari ma per tutto il resto non sono la stessa cosa Per capirlo devi sbatterci la testa in lavori di un certo livello e di una certa difficoltà. Con C# puoi implementare molte cose da molti anni come XNA , reflection , reverse engineering etc .VB.net non le supporta Non si tratta solo di compilare in IL per la CLR , ci sono altri limiti in VB.net che ovviamente se programmi ad un certo livello applicativo di larga scala non puoi capire ne tantomeno prevedere. Questo te lo dico da anni , se poi vuoi credere in quello che dici libero di farlo ,a me non cambia niente . I libri che citi tu li ho tutti fin dal 2002 quando uscii ed acquistai la prima .NET VB 6 non c'entra nulla con C# e VB.NET è ovvio . Il framework .NET è stato concepito dopo ricopiando la JVM , infatti molti progettisti sono gli stessi che hanno scritto il delphi , java e c# . Tra C# e VB.NET a parte le librerie comuni del framework ......c'e' un abisso . Chiedi il parere a qualche informatico esperto di livello 2 anche in ambiente industriale e ti dirà le stesse cose . Il codice non è per nulla scambiabile , la sintassi è totalmente diversa , VB.net non fa i casting perchè se ne occupa l'interprete per esempio e molte altre cose. Quando lavori a livelli bassi di framework si lavora con C# non con VB.net he puo comunque essere usato perche piu veloce e meno ostico di un linguaggio fortemente tipizzato come c# o java .A sto punto rpeferisco python a vb e a vb.net . I libri avanzati con un certo senso di impegno trattano solo c# o vb.net , quelli di partenza giusto per farti imparare gli assembly piu importanti li fanno in doppio linguaggio per gestire tabelle, finestre etc . Anni fa ho implementato un engine che mi eseguiva files di python al volo da una app che avevo scritto in c# , questo per impedire di dover fare sempre modifiche e ricompilare e lasciare ai programmatori interni dell'azienda la possibilità di modificare gli interessi aziendali come etichette, bolle e di conseguenze link a sql .Questo engine con VB:net non lo potevi fare perche non supportava molti oggetti del .NET , cosi come il framework per progettare e scrivere videogiochi anche in 3D , VB:net non lo supportava e no nlo supporta tuttora. ci sono dei motivi di fondo che vanno studiati e testati in un certo modo , poi capirai perche ti dico sempre le stesse cose Diciamo che a partire dal C , che ora è anche ad oggetti e mi fa schifo , al C++ dove iniziò il paradigma di linguaggio ad oggetti e/o funzionale . Dal il C++ , per sintassi e potenzialità di ereditarietà, polimorfismo , incapsulamento , interfacce (classi virtuali ) etc etc sono nati java e C# con il controllo del framework che tramite il garbage collector si occupa di liberare la memoria , infatti il concetto di distruttore di classe non esiste ma esiste solo il costruttore , e comunque puoi implementare anche i distruttore ed occuparti in prima persona in quanto GC è asincrono e non sempre fa quello che deve bene e velocemente. Al VB.NET come sintassi il quale deriva dal VB come sintassi hanno voluto creare istruzioni built.in per farlo diventare ad oggetti quando non lo è nativamente per cui ti lascio immaginare che razza di porcheria possa essere . Se ti interessa passo da casa tua e ti spiego un po di cose Link to comment Share on other sites More sharing options...
Obyrt Posted August 23, 2016 Author Report Share Posted August 23, 2016 Molto bene....allora viste le considerazioni , provo a modificare la richiesta: utilizzo C# ,leggo e scrivo su PLC AB micro850 ma in realta' C# legge gli indirizzi come stringa . Ora io ho la necessita' di poter utilizzare anche logica booleana, es: quando dopo aver attivato un bit a tempo tramite pulsante del Form, alla fine del conteggio,che e' nel plc, il pulsante deve ritornare nella modalita' non attivo. Link to comment Share on other sites More sharing options...
walterword Posted August 23, 2016 Report Share Posted August 23, 2016 che cosa usi per scrivere sul plc ? Un opc server ? Una libreria nativa ? Cosa? Devi creare almeno due aree di memoria nel plc , una che scrive e l'altra che legge. Scrivi un bit che attiva il timer nel plc e poi leggi lo stato dello stesso per fare quello che vuoi nel pc Ovviamente un'applicazione con un minimo di fondamenta deve implementare diversi threads, mutex , deve essere ben sincronizzata Dopodichè per poter estendere le funzionalità devi saper implmentare qualche design pattern.Per evitare di creare oggetti che necessitano di altri oggetti all'interno degli stessi , puoi creare una classe statica come globale all'interno della quale dichiarare gli oggetti che ti servono con relativi metodi e poi tramite delegati ed eventi li utilizzi dove ti servono La logica booleana con C# o VB.net non è un problema , esistono vari tipi di dati , metodi etc .Puoi anche crearti i tuoi tipi di dati con classi che contengono metodi specifici che puoi riutilizzare ovunque e sempre , che puoi specializzare , estendere etc Link to comment Share on other sites More sharing options...
Obyrt Posted August 23, 2016 Author Report Share Posted August 23, 2016 uso i drive di comunicazione e funzionano,questo e' il sistema namespace WindowsFormsApplication2 { public partial class MANUALE : Form { EthernetIPforMicro800Com MyAB = new EthernetIPforMicro800Com(); public MANUALE() { InitializeComponent(); MyAB.IPAddress = "192.168.1.11"; } private void button1_Click(object sender, EventArgs e) { // MyAB.Write("T_TEMPO", input.Text); MyAB.Write("times_luce", set_t_luce.Text); // string Rev"80" = input.Text; //string REV_PROJECT = MyAB.Read("REV_PROJECT"); // textBox2.Text = REV_PROJECT; // MyAB.Write("REAL_APP_Copy_1", input.Text); // textBox1.Text = MyAB.Read("REAL_APP_Copy_1"); } // conversione risultato stringa in bool ///---------------------------------------------------------------/// private void timer1_Tick(object sender, EventArgs e) { textBox1.Text = MyAB.Read("_IO_EM_DO_00"); //LETTURA TEMPERATURA C.Text = MyAB.Read("_IO_X2_AI_00"); //LETTURA PRESSIONE BAR.Text = MyAB.Read("_IO_X2_AI_01"); //LETTURA PRESSIONE CALDAIA BAR_C.Text = MyAB.Read("_IO_X2_AI_02"); //LETTURA PESATURA KG.Text = MyAB.Read("_IO_X2_AI_03"); } il mio problema attualmente e' una volta letto lo stato " MyAB.Read("_IO_EM_DO_00")", mettere a zero lo stato del pulsante nel form che ha attivato la funzione private void P_Luce1_CheckedChanged_1(object sender, EventArgs e) { MyAB.Write("_IO_EM_DO_00", 1); } Link to comment Share on other sites More sharing options...
Livio Orsini Posted August 23, 2016 Report Share Posted August 23, 2016 Quote Livio , lascia fare non offenderti ma con questi oggetti ci gioco da un bel pò e se mi permetto di dire una cosa lasciamela dire e fidati che non la dico cosi tanto per dire a caso. Walter lascia stare che questi linguaggi li uso dallo loro nascita, ho ancora tutti i CD della prima versione della suite MS (anno 2000). Quindi se ti ho scritto quello che ho scritto l'ho fatto a ragion veduta. Addurittura nella prina versione della visual suite era presente, nel wizard di creazione del progetto, anche il tool di conversione automatica da VB.NET a C#. Poi dipende sempre da come usi i vari oggetti e se miri alla massima compatibilità o alla massima efficienza. Quote Il framework .NET è stato concepito dopo ricopiando la JVM , infatti molti progettisti sono gli stessi che hanno scritto il delphi , java e c# Che ci siano gli stessi progettisti almeno in parte è abbastanza probabile, come è vero che C# è stato il tentativo di MS di prendersi una fetta del mercato di java. Comunque non devo chiedere a nessuno basta consultare i manuali di MS che posseggo, assieme ai testi Mondadori che hanno l'imprimatur ufficiale di MS. Che poi tu ci creda o meno a me non è che mi procuri piacere o dispiacere, oramai sono abbondantemente al di sopra di certe cosucce. Ora però chiudo l'OT altrimenti dovrei autosanzionarmi. Link to comment Share on other sites More sharing options...
walterword Posted August 23, 2016 Report Share Posted August 23, 2016 pensala come vuoi . A me non cambia nulla Link to comment Share on other sites More sharing options...
Obyrt Posted August 23, 2016 Author Report Share Posted August 23, 2016 ma qualcuno mi aiuta? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now