Hallo der henry,
Ich sitze in Nürnberg in einem Hotelzimmer, nur mit Handy, da ist das Antworten nicht ganz leicht.
Namespaces: ja, sind in .net nötig. Code und Daten existieren nur in Klassen, und jede Klasse existiert in einem Namespace.
Variablen in Klammern: das hat du mistverstanden. Die Zeile
lese(plcdevice)
ruft eine Funktion lese auf und übergibt plcdevice als Argument. Also genau wie in C. Mehl hat diese Funktion nur nicht hingeschrieben, und er hat auch keine C# Syntax benutzt.
Du hingegen hast ein PLCcomDevice-Objekt in der Variablen plcdevice und möchtest darauf eine Methode aufrufen. Dafür ist
plcdevice.ReadData(requestItem1);
völlig ok.
Du hast einen Namespace CommPLC und eine Klasse CommPLCProgramm. In dieser Klasse hast du alles static gemacht. Das KANN man tun, aber du solltest versuchen, Programmschichten zu bilden und Verantwortungen zu bündeln.
Das macht man in C eigentlich auch so, nur hat man da das Konstrukt der Klasse nicht und scheut auch jeden malloc(), weil das Speichermanagement in C viel rudimentärer ist als in .net.
Ich kann dir hier am Handy keine Codebeispiele machen, tut mir leid. Als C# Bastler seit 2001 würde ich jedenfalls anstreben, eine Klasse zu erstellen, die für die Kommunikationsaufgaben des TCP_ISO_Device jeweils eine Methode anbietet, und zwar nicht static. Das Hauptprogramm erzeugt ein Objekt dieser Klasse. Eine open-Methode erzeugt das PLCcom Objekt und speichert es als Instanzvariable ("Field" in .net Sprech). Eine close-Methode räumt dieses Objekt wieder ab. Baue dem Hauptprogramm so, dass die close-Methode vor dem Ende garantiert aufgerufen wird.
Ich frage mich auch, was du da tust. Reden wir hier über PLCcom von Indi-An, womit sich Siemens S7 SPS steuern lassen? Das ist teures Zeug, was für eine Art Programm willst du damit erstellen? U
Rolf
sumpsi - posui - obstruxi