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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: FC anzeigen

  1. #11
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    initUpload(dc, blockType, blockNumber, uploadID)
    dc = daveConnection
    blockType = gleich wie bei daveListBlocksOfType
    blockNumber = die Nummer des Bausteins
    uploadID = Pointer zu einem Integer

    doUpload(dc,more,bb,len,uploadID)
    dc = daveConnection
    more = 1=es kommt noch was 0=fertig
    bb = Pointer zu Pointer wo der BausteinCode abgelegt werden soll (Array of Bytes oder sowas) (hat mich eine Stunde gekostet, bis ich das mal gerafft habe was da soll)
    uploadID = die ID, die du in initUpload bekommen hat

    endUpload(dc,uploadID)
    dc = daveConnection
    uploadID = die ID, die du in initUpload bekommen hat

    In der testISO_TCP.c in der Zip-Datei von libnodave ab Zeile 188 kannst du sehen wie man das dann in "freier Wildbahn" einsetzen kann.

  2. #12
    The-Cook ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.05.2009
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    protectedstaticexternint doUpload(IntPtr daveConnection,refint more, Byte[] buffer, refint len,int uploadID);
    privateint DoUpload(int uploadID)
    {
    int ret = int.MinValue;
    int len = int.MinValue;
    Byte[] buffer = newByte[16635];
    int more = int.MinValue;//0 -> fertig | 1 -> es kommt noch was
    do
    {
    ret = doUpload(
    this.daveConnection.pointer, ref more, buffer, ref len, uploadID);
    }
    while (more == 1);
    return ret;
    }

    was könnte es sein das nie in den buffer etwas geschrieben wird?

  3. #13
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard

    Das ist das was mich auch eine Stunde gekostet hat:

    Du musst eine Varable anlegen, die ein Pointer ist, und das muss die Adresse von deinem Buffer drinstehen. Und an die Funktion musst du dann den Pointer von der Variable in der der Pointer zum Buffer steht übergeben!

    Aber was willst du eigentlich mit dem ausgelesenen Baustein anfangen, das ist dann nur ein Ge-HEX-el von Zahlen, die ohne Übersetzung keinerlei Sinn ergibt?

  4. Folgender Benutzer sagt Danke zu Human für den nützlichen Beitrag:

    The-Cook (03.06.2009)

  5. #14
    The-Cook ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.05.2009
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So nun habe ich alles in eine Byte Array wie kann man dies nun zerpflücken??

    Code:
    [DllImport("libnodave.dll")]
    protectedstaticexternint doUpload(IntPtr daveConnection, refint more, IntPtr ptrBuffer, refint len, int uploadID);
    privateint DoUpload(int uploadID)
    {
    int ret = 0;
    IntPtr ptr = Marshal.AllocHGlobal(16635);
    IntPtr ptrptr = Marshal.AllocHGlobal(ptr);
    int more = int.MinValue;//0 -> fertig | 1 -> es kommt noch was
    try
    {
    do
    {
    try
    {
    doUpload(this.daveConnection.pointer, ref more, ptrptr, ref ret, uploadID);
    }
    catch (Exception e)
    {
    ret = int.MinValue;
    break;
    }
    }
    while (more == 1);
    }
    catch (Exception ex)
    {
    ret = int.MinValue;
    }
    Byte[] buffer = newByte[ret];
    for (int i = 0; i < ret; i++)
    {
    buffer[i] = Marshal.ReadByte(ptr, i);
    }
    return ret;
    }

  6. #15
    The-Cook ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.05.2009
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Human Beitrag anzeigen
    Aber was willst du eigentlich mit dem ausgelesenen Baustein anfangen, das ist dann nur ein Ge-HEX-el von Zahlen, die ohne Übersetzung keinerlei Sinn ergibt?
    Ich wollte wie du den AWL-Code anzeigen

  7. #16
    The-Cook ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.05.2009
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mit dv.getProgramBlock(libnodave.daveBlockType_FC, fc, buffer, ref(len));
    kann man einen FC bekommen.
    Manchmal geht es leichter wie erwartet.

    Vielen Dank für eure Hilfe.

Ähnliche Themen

  1. BCD Anzeigen
    Von Andreas.W im Forum Schaltschrankbau
    Antworten: 8
    Letzter Beitrag: 31.07.2013, 22:42
  2. Fragen zu LCD-Anzeigen
    Von senmeis im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 18.04.2011, 11:55
  3. Temperatur anzeigen
    Von 00schneider im Forum HMI
    Antworten: 5
    Letzter Beitrag: 09.01.2010, 21:08
  4. betriebszeit anzeigen
    Von Kralle im Forum PC- und Netzwerktechnik
    Antworten: 11
    Letzter Beitrag: 09.11.2008, 15:47
  5. Anzeigen von Störmeldungen
    Von Anonymous im Forum HMI
    Antworten: 4
    Letzter Beitrag: 11.12.2003, 15:02

Lesezeichen

Berechtigungen

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