Codice VB.net in C#

martedì 24 maggio 2011 - 20.48

max81 Profilo | Newbie

Ciao a tutti, inanzitutto mi presento, mi chiamo Max è sono un ingegnere che lavora in proprio nel campo dell'automazione industriale.
Ho scoperto solo ora questo bel forum, e posto perchè ho un problema, sperando di aver azzeccato la sezione giusta.
Veniamo al dunque, a scopo didattico sto affrontando la tecnologia OPC per supervisionare alcuni registri di un PLC da PC tramite un OPC Server, e un client in C# che devo sviluppare. Il problema è che gli esempi che ho trovato sono tutti fatti in VB.net, linguaggio che non conosco.
In particolare, ho questo frammento di codice che non riesco a riscriverlo in C#, quindi chiedo aiuto a voi.

Dim MyOPCServer As OPCServer MyOPCServer = New OPCServer() Dim ServerList As Object = MyOPCServer.GetOPCServers For index As Short = LBound(ServerList) To UBound(ServerList) ComboBox1.Items.Add(ServerList(index)) Next

Quello che mi crea problemi sono "LBound" e "Ubound".
Ringrazio in anticipo.

jackk87 Profilo | Junior Member

>Ciao a tutti, inanzitutto mi presento, mi chiamo Max è sono un
>ingegnere che lavora in proprio nel campo dell'automazione industriale.
>Ho scoperto solo ora questo bel forum, e posto perchè ho un problema,
>sperando di aver azzeccato la sezione giusta.
>Veniamo al dunque, a scopo didattico sto affrontando la tecnologia
>OPC per supervisionare alcuni registri di un PLC da PC tramite
>un OPC Server, e un client in C# che devo sviluppare. Il problema
>è che gli esempi che ho trovato sono tutti fatti in VB.net, linguaggio
>che non conosco.
>In particolare, ho questo frammento di codice che non riesco
>a riscriverlo in C#, quindi chiedo aiuto a voi.
>
>Dim MyOPCServer As OPCServer
>MyOPCServer = New OPCServer()
>Dim ServerList As Object = MyOPCServer.GetOPCServers
>For index As Short = LBound(ServerList) To UBound(ServerList)
> ComboBox1.Items.Add(ServerList(index))
>Next
>
>Quello che mi crea problemi sono "LBound" e "Ubound".
>Ringrazio in anticipo.

Ciao prova con:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

fammi sapere

max81 Profilo | Newbie

Ciao Jackk87,
ti ringrazio per l'aiuto, ma purtroppo il compilatore mi da errori.
Ho inserito la direttiva "using Microsoft.VisualBasic", ho compilato ma mi dice alla riga della LBound "Impossibile convertire da object a System.Array", poi quando aggiungo il valore nella "combobox1.Items.Add(ServerList(index))", dice "ServerList è variabile ma è usato come metodo".

Ciao e Grazie

jackk87 Profilo | Junior Member

>Ciao Jackk87,
>ti ringrazio per l'aiuto, ma purtroppo il compilatore mi da errori.
>Ho inserito la direttiva "using Microsoft.VisualBasic", ho compilato
>ma mi dice alla riga della LBound "Impossibile convertire da
>object a System.Array", poi quando aggiungo il valore nella "combobox1.Items.Add(ServerList(index))",
>dice "ServerList è variabile ma è usato come metodo".
>
>Ciao e Grazie
Ciao allora hai dichiarato serverlist come object e Ubound vuole un'arrey ecco perchè hai errore -> http://msdn.microsoft.com/it-it/library/microsoft.visualbasic.information.ubound.aspx

non so questa istruzione MyOPCServer.GetOPCServers che tipo di valori da..cmq il problema è li

max81 Profilo | Newbie

Il problema è che non c'è nessuna documentazione dei metodi e attributi dell'OPC Automation, l'unica cosa che ho sono degli esempi in visual basic (non commentati).
Nel visualizzatore oggetti, navigando dell'oggetto COM, riporta:

public virtual dynamic GetOPCServers()

Questo metodo restituisce i nomi degli OPCServer attivi sulla macchina.
Ciao

jackk87 Profilo | Junior Member

da quanto ho capito vuoi visualizzare in una combobox tutti i server opc attivi sulla macchina.
Purtroppo non ho mai lavorato con OPC Automation nonostante anche io lavoro nell'automazione industriale
L'unica cosa che posso dirti è se mi mandi l'oggetto com che stai utilizzando posso fare delle prove e darti una mano

max81 Profilo | Newbie

Finalmente ci sono riuscito.
cercando sul web ho trovato un esempio, quindi ho buttato giù queste righe di codice

MyOPCServer = new OPCServer(); object ServerList = MyOPCServer.GetOPCServers(); System.Array ServerListArray = ((System.Array)(ServerList)); for (short index = 1; index <= ServerListArray.Length; index++) comboBox1.Items.Add(Convert.ToString(ServerListArray.GetValue(index)));

L'ho testato e funziona.
Ti ringrazio per l'aiuto Jackk, sicuramente andando avanti avrò altre domande.
Un saluto

jackk87 Profilo | Junior Member

>Finalmente ci sono riuscito.
>cercando sul web ho trovato un esempio, quindi ho buttato giù
>queste righe di codice
>
>MyOPCServer = new OPCServer();
>object ServerList = MyOPCServer.GetOPCServers();
>System.Array ServerListArray = ((System.Array)(ServerList));
>for (short index = 1; index <= ServerListArray.Length; index++)
>comboBox1.Items.Add(Convert.ToString(ServerListArray.GetValue(index)));
>
>L'ho testato e funziona.
>Ti ringrazio per l'aiuto Jackk, sicuramente andando avanti avrò
>altre domande.
>Un saluto
>
Di niente

Saluti
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5