Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: Eigener AMS/ADS Client

  1. #21
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    wie schaffst du es das deine read/write_var funktionen und deinen
    notifiy entgegennahme sauber gretrennt sind?
    dates du einfach die variablen up wenn anstatt deine read-anwort ein notify reinflattert? - ich denke das will er nicht so haben (find ich auch ein bischen schmutzig)

    zu COM und .Net - meine Idee (so mach ichs in meiner Lib) lässt sich auf mehrere Welten adaptieren - also kein "es funktioniert gut weil ich .Net bei mir habe" - sonst würde Neals wohl nicht von Linux sprechen (und ich wette das er nicht Mono im Kopf hat)

    und ich hab ja schon gesagt das es nicht der Teil ist den der Benutzer sieht - also steckt das alles doch in der Bibliothek - so wie bei dir
    (nur das deine Features Teile der Realisierung sind) und mein Thread-Count ist auch nicht wirklich groesser als bei dir - ein Tribut an die saubere Lösung

    mfg LowLevelMahn
    Geändert von LowLevelMahn (30.10.2008 um 13:00 Uhr)
    Zitieren Zitieren deswegen denke ich das wir aneinander vorbeireden  

  2. #22
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Asynchroner und synchroner Teil müssen getrennt werden. Die Notifys sind ja in erster Linie nur dazu da Variablen zu lesen.

    Das mit Linux hatte ich schon wieder glatt vergessen. Da haste Recht.

    Zum Thema Verbindung. Selbst wenn die ADL-Lib nur ein Handle bereitstellt, es ist eine Netzwerkverbindung zu einer Adresse:Port und wirklich nur eine. Daher brauch es auch nur einen Thread für alle Variablen evtl. optional mit Callback.

  3. #23
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard

    Zum Thema Verbindung. Selbst wenn die ADL-Lib nur ein Handle bereitstellt, es ist eine Netzwerkverbindung zu einer Adresse:Port und wirklich nur eine. Daher brauch es auch nur einen Thread für alle Variablen evtl. optional mit Callback.
    ist 100% mir klar - mein Ansatz verhindert nur das man mit einem Callback kontextbeschmutzend durchs System wandert - ich brauch keinen - ich hab nur einen auf signalisierung wartenden Abnehmer der Information
    Zitieren Zitieren jetzt sind wir wieder auf einer ebene  

  4. #24
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Ich glaube, ich bin zur Zeit viel zu sehr im Denken in .Net gefangen. Abseits davon sehe ich entweder nur Callbacks oder eine Event-Queque, um daraus wieder Aufrufe von Methoden von Objekten zu machen.

    Vielleicht kannst du mir deinen Ansatz etwas anders erklären?
    Geändert von drfunfrock (30.10.2008 um 13:36 Uhr)

  5. #25
    Neals ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.04.2008
    Ort
    Lübeck
    Beiträge
    324
    Danke
    8
    Erhielt 63 Danke für 62 Beiträge

    Standard

    Hab jetzt nen Mutex, zum stoppen verwendet.
    Starte EINEN NotificationThread, der durchgehen (in einer Schleife) nachsieht ob Daten eingehen und bei einer Notifcation das Event feuert.
    Wenn jetzt eine Anfrage gestellt wird (bsp. Read), werden die Daten gesendet und der Mutex gesetzt. Dadurch wird das abarbeiten des NotificationThreads gestoppt. Jetzt wird synchron empfangen und differenziert. Wenn es eine Notification ist, wird das Event gefeuert und die Schleife neu gestartet. Wenn es die Antwort auf meine Anfrage ist, werden die Daten zurückgegeben, das Mutex wieder resettet und der NotificationThread läuft somit weiter.

    Danke euch beiden für die heiße Diskussion *g*

    Benutze die InvokeId des Protokolls zum identifizieren der Packete, programmiere in C# und dem Compact Framework. Das mit Linux am Anfang war nur nen Beispiel zur Verwendung.

  6. #26
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Kann man die Packete nicht so lesen, dass der Thread blockiert wird, anstatt dass man pollt? Ich dachte immer, dass wäre mit IP am elegantesten?

  7. #27
    Neals ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.04.2008
    Ort
    Lübeck
    Beiträge
    324
    Danke
    8
    Erhielt 63 Danke für 62 Beiträge

    Pfeil

    So, jetzt läufts alles voll synchron und ohne Threads... habs mit dem Windows.Form.Timer umgesetzt

    class ReceiveTimer
    {
    private readonly EventHandler receiveCallback;
    private readonly Timer timer;

    internal ReceiveTimer(EventHandler Callback, int Period)
    {
    receiveCallback = Callback;
    timer = new Timer {Interval = Period};
    timer.Tick += ReceiveTimerTick;
    }

    void ReceiveTimerTick(object sender, EventArgs e)
    {
    receiveCallback(sender, e);
    }

    internal void Start()
    {
    timer.Enabled = true;
    timer.Start();
    }

    internal void Stop()
    {
    timer.Stop();
    timer.Enabled = false;
    }

    }
    Habs jetzt alles hin, Grundlagen sind fertig, Notifications werden empfangen... bin gerade dabei eventuelle Fehler abzufangen, die Events einzubinden und Doku zu schreiben.

    Habe schon bissl am asynchronen Client geschrieben... nur bin ich mir über den Entwurf nicht sicher. Empfangen und senden usw. läuft alles super, habe nur Probleme mit den Funktionsaufrufen. Es müsste ja jeder Funktion des Clients nen Callback übergeben werden. Um dann auch die entsprechenden Rückgabewerte übergeben zu können, müsste für jede Funktion nen extra Callback erstellt werden, das ist doch ein wenig lästig für den User?! Jemand ne Idea, wie ich die Anzahl an Callback-Delegates verringern kann?

    Welche Features fehlen noch allgemein? Welche sollten implementiert werden? Auf was sollte ich Rücksicht nehmen?
    Geändert von Neals (04.11.2008 um 17:42 Uhr)

  8. #28
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard

    Hallo Neals
    Stehe gerade vor dem gleichen Problem da Twincat CP nicht mehr als Download angeboten wird. (oder ich habs nicht gefunden)
    Hast du deinen Client lauffähig zu Ende gebracht und würdest ihn teilen?
    Holger

  9. #29
    Registriert seit
    10.08.2012
    Beiträge
    245
    Danke
    0
    Erhielt 70 Danke für 66 Beiträge

    Standard

    Hallo Holgermaid,

    TwinCAT CP kannst du installieren über das TwinCAT2 Setup.
    Alernativ (was ich bevorzugen würde) wäre das TwinCAT3 ADS-Setup. Hier wird "nur" der Router ... installiert ohne Echtzeitkomponente o.ä.

    Guga

  10. Folgender Benutzer sagt Danke zu Guga für den nützlichen Beitrag:

    holgermaik (15.01.2016)

  11. #30
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Guga
    TwinCAT CP kannst du installieren über das TwinCAT2 Setup.
    Das will ich ja genau nicht. Eigentlich will ich gar kein Twincat.
    ..TwinCAT3 ADS-Setup. Hier wird "nur" der Router ... installiert
    Das schau ich mir mal an. Als Minimalvariante
    Grüße Holger

Ähnliche Themen

  1. SINUMERIK 840D eigener Text-Editor
    Von bit_schubser im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 21.04.2010, 16:47
  2. WinCC 6.2 Server/Client Bedienung nur Client
    Von Jens Qualmann im Forum HMI
    Antworten: 2
    Letzter Beitrag: 22.08.2008, 19:06
  3. eigener Hilfetext in STEP7 Bibliothek
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 09.05.2007, 12:33
  4. Eigener Bereich Antriebstechnik
    Von Maxl im Forum Stammtisch
    Antworten: 8
    Letzter Beitrag: 17.02.2006, 01:55
  5. Erstellen eigener log. Bausteine
    Von Manticor im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 11.07.2004, 11:09

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •