Entwickler-Ecke

Andere .NET-Sprachen - Einstieg in .NET, Schnittstelle von einer Firma


Bronstein - Mi 18.06.08 21:21
Titel: Einstieg in .NET, Schnittstelle von einer Firma
Hallo,
wir haben Siemens Bestückautomaten in unserem Betrieb. Jetzt bietet Siemens eine .Net-Schnittstelle an, mit der ich Daten aus der Datennbank lesen und schreiben kann.


In einem Siemens Forum steht, man soll die Schnittstelle "SPI" von Siemens verwenden, z.B. mit VB.NET


Ich habe jetzt leider keine Erfahrung mit .NET
Wie fange ich also am besten an?
Wie binde ich diese Option ein?
Gibt es ein geeignetes Tutorial?


Christian S. - Mi 18.06.08 21:29

Meine erste Empfehlung ist, nicht Delphi.NET zu verwenden.

Du kannst inzwischen noch nicht mal mehr WinForms-Anwendungen erstellen (wenn Du nicht auf einen Designer verzichten willst), an allen Ecken und Enden versucht man Win32-Schemata in .NET-Code zu pressen, Delphi.NET hängt bisher immer um Jahre der Entwicklung hinterher und Du schleppst immer irgendwelchen Borland-Code mit Dir rum.

Wenn Du bei einer Pascal-Sprache bleiben willst, schau Dir doch mal Oxygene [http://www.remobjects.com/product/?id={DC0A9947-5FED-4D34-8CC8-F2DCFA87A1FE}] an, ansonten ist C# auf jeden Fall eine sehr gute Alternative.


Bronstein - Mi 18.06.08 22:03

Das oxygene kenne ich jetzt gar nicht. Hab ich das richtig verstanden, dass das ein Tool für Visual Studio ist?

Ich möchte aber bei meinem Borland Delphi bleiben!


Christian S. - Mi 18.06.08 22:07

user profile iconBronstein hat folgendes geschrieben:
Das oxygene kenne ich jetzt gar nicht. Hab ich das richtig verstanden, dass das ein Tool für Visual Studio ist?

Ja, wobei Du eine Standard-Ausgabe vom Visual Studio mit nur Oxygene als Sprache drin dazu bekommst.

user profile iconBronstein hat folgendes geschrieben:
Ich möchte aber bei meinem Borland Delphi bleiben!
Du willst mit .NET arbeiten. Dafür ist Delphi ungeeignet. Um es mal verkürzt auszudrücken: .NET oder Delphi, beides geht im Moment nicht (wirklich).


Bronstein - Mi 18.06.08 22:23

Es werden doch aber Schulungen zu Delphi .Net angeboten. Beispiel:
http://www.lp-it.de/schulungen/delphi.net-schulung.php3


Christian S. - Mi 18.06.08 22:27

Ja, sicher. Ich habe auch nicht gesagt, dass Delphi.NET nicht existiert.

Aber es ist ein Unterschied, ob es etwas gibt und ob es sinnvoll ist, etwas einzusetzen. Delphi.NET ist eigentlich nur dann eine Möglichkeit, die man vielleicht mal in Betracht ziehen kann, wenn man eine bestehende Delphi-Anwendung auf .NET portieren will. Und auch dann sollte das nur ein Zwischenschritt sein, um die Anwendung langfristig zu einer "anständigen" .NET-Sprache zu portieren.


Bernhard Geyer - Mi 18.06.08 23:05

Die Frage ist ob "SPI" überhaupt ein .NET-Interface ist oder nur ein "schnödes" COM/OLE-Interface ist das man prima per Delphi.Win32 bedienen kann und der Hinweis auf VB.NET nur da ist weil niemand mehr sich mit VB herumärgern will


Bronstein - Do 19.06.08 12:35

Wenn man die Schnittstelle installiert erscheint schon:
Welcome to Siemens SIPLACE PRO Interface (SPI) .Net


Hier mal ein Code Beispiel aus VB

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Imports Siemens.SiplacePro.SPI.ComponentModel.Architecture.Interfaces
Imports Biz = Siemens.SiplacePro.SPI.ComponentModel.Business.Objects
Imports BizInt = Siemens.SiplacePro.SPI.ComponentModel.Business.Interfaces
Imports Arch = Siemens.SiplacePro.SPI.ComponentModel.Architecture.Objects


Module Module1
    Public session As ISession

    Sub Main()
        session = Siemens.SiplacePro.SPI.ComponentModel.Architecture.Objects.Session.CurrentSession

        ' Schnellste Möglichkeit auf Existenz eines Objektes zu prüfen
        Dim boardIdCol As Arch.IdentityCollection
        boardIdCol = session.GetIdentityList("Board:Board1")
        Dim countCol As Long = boardIdCol.Count

        If (countCol = 0) Then

            ' Objekt neu erzeugen
            Dim identBoard As Arch.Identity
            Dim board As Biz.Board


alzaimar - Do 19.06.08 12:41

Es ist doch ziemlich einfach:
1. Mit Delphi für Win32 geht es nicht.
2. Delphi.NET ist Schrott
3. Lerne C# (ist eh besser)

Ob Du 2 und 3 beherzigst, ist Dir überlassen. Ich musste 'neulich' mal etwas in C# machen und nach ein paar Tagen hatte ich alles drauf, was ich in Delphi auch kann. Nur ist das nur 10% dessen, was mit C# wirklich machbar ist.


Robert.Wachtel - Do 19.06.08 12:55

user profile iconBronstein hat folgendes geschrieben:
[...] Ich möchte aber bei meinem Borland Delphi bleiben!

Zusätzlich zu den anderen richtigen Antworten möchte ich nur noch anmerken, dass Du gar nicht weisst, was Du versäumst... ;)


Bronstein - Fr 15.08.08 04:29

Kann mir jemand sagen, wie ich den obigen VB-Code in C# schreibe.
Damit ich den ersten Grundstein habe


Carla - Fr 15.08.08 08:27

[quote="[user]Bronstein
Ich möchte aber bei meinem Borland Delphi bleiben![/quote]

Warum eigentlich klammern sich so viele Delphi Programmierer an dieses Entwicklungssystem ?
Da C# und Delphi den gleichen Vater haben, ist der Umstieg relativ einfach.
Delphi ist einfach eine Einbahnstrasse mit jahrelangen Rückstand und stagnierender Entwicklung.
Das Debuggen ist im Vergleich zu C# eine Zumutung und die Entwicklungsumgebung hat viele nervige Bugs.
Das Framework von Net ist um Größenordnungen mächtiger.
Mir kommt das bei einigen fast wie ein fundamentalistisches Glaubensbekenntnis vor.

Gruß Carla


Robert.Wachtel - Fr 15.08.08 09:49

user profile iconBronstein hat folgendes geschrieben:
Kann mir jemand sagen, wie ich den obigen VB-Code in C# schreibe.
Damit ich den ersten Grundstein habe



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
using Siemens.SiplacePro.SPI.ComponentModel.Architecture.Interfaces
using Siemens.SiplacePro.SPI.ComponentModel.Business.Objects
using Siemens.SiplacePro.SPI.ComponentModel.Business.Interfaces
using Siemens.SiplacePro.SPI.ComponentModel.Architecture.Objects

public class module1
{
  public ISession session;

  public void Main()
  {
    session = Siemens.SiplacePro.SPI.ComponentModel.Architecture.Objects.Session.CurrentSession;

    // Schnellste Möglichkeit auf Existenz eines Objektes zu prüfen
    Arch.IdentityCollection boardIdCol = session.GetIdentityList("Board:Board1");
    long countCol = boardIdCol.Count;

    if (countCol == 0)
    {
      // Objekt neu erzeugen
      Arch.Identity identBoard;

      Biz.Board board;

[...]


hth

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


Bronstein - Fr 15.08.08 12:01

Ich bekomme jetzt folgende Meldung:
[C# Fehler] WinForm.cs(7): Der Typ oder Namespace 'Siemens' konnte nicht gefunden werden. Möglicherweise fehlt eine Anweisung oder ein Assemblyverweis.


alias5000 - Fr 15.08.08 12:07

Robert hat das ja nicht Copy&Paste fertig gemacht. Zusätzlich musst du in deinem Projekt natürlich auch die entsprechende Assembly (*.dll) einbinden.

Um C# an sich zu lernen oder sich mal Stichwortartig drin langzuhangeln, gibts viele Medien online. Z.B. das Openbook C# [http://www.galileocomputing.de/openbook/csharp/] oder das Openbook Visual C# [http://www.galileocomputing.de/openbook/visual_csharp/].

...und natürlich auch das C-Sharp-Forum der EE: http://www.c-sharp-forum.de ;)

Gruß
alias5000


Bronstein - Fr 15.08.08 12:22

Hallo,
wie kann ich die DLL einbinden. Ich habe den Borland C# Builder und dort eine neue Windows From Anwendung ausgewählt.

Geht das mit diesem überhaupt oder muss ich mir ein anderes Programm herunterladen!


Christian S. - Fr 15.08.08 12:33

Wenn Du jetzt doch C# benutuzen willst, dann lade Dir Visual C# 2008 Express runter. Der C# Builder ist völlig veraltet.


Bronstein - Fr 15.08.08 12:52

Okay, das habe ich heruntergeladen.


Wie kann ich jetzt die DLL einbinden?


alias5000 - Fr 15.08.08 12:55

Ich hab die englische Version, bei mir heißt das rechts im Solution Explorer "References". Dort fügst du die DLL mit ein (Popupmenü)

Gruß
alias5000