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

Ergebnis 1 bis 4 von 4

Thema: ADS Kommunikation

  1. #1
    Registriert seit
    09.09.2010
    Beiträge
    106
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Forenmitglieder

    Mit dem folgenden Befehl schreibe ich aus einem PC-Programm (XBASE++) , mittels ADS Kommunikation, einen Wert in eine Stringvariable (Steuerung).

    Variable:String(30);

    // IDENT
    // Handl über Variablenname holen
    sVar := ".V_C_IDENT"
    nErr := DllCall( "TCADSDLL.DLL" , DLL_STDCALL,"_AdsSyncReadWriteReq@28",@Addr, 0xF003, 0, 4, @nHandl, len(sVar), @sVar)
    nHandlWert := bin2u(nHandl) // Empfang in Wert Wandeln
    // Wert schreiben
    sVar := V_C_IDENT // String 30
    nErr := DllCall( "TCADSDLL.DLL" , DLL_STDCALL,"_AdsSyncWriteReq@20",@Addr, 0xF005,nHandlWert,len(sVar), @sVar)

    Wenn ich jetzt '123456" in die Variable der Beckhoff-Steuerung schreibe steht auch '123456' drinnen.
    Schreibe ich aber dann einen kurzen String z.B. 'abc' steht 'abc456' in der String Variable obwohl ich die Länge mittels len(sVar) richtig setze.

    Was muss ich beachten ?

    mfg.

    mkersch
    Zitieren Zitieren ADS Kommunikation  

  2. #2
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Sieht fast so aus als ob da die Terminierung deiner Strings fehlt. Wenn du nur 3 Zeichen sendest, werden ja auch nur die ersten 3 Zeichen im String überschrieben. Normalerweise wird das Ende eines Strings mit '\0' angezeigt. Bis dahin wird der String im Speicher gelesen, der Rest der danach kommt nicht mehr.

  3. #3
    mkersch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.09.2010
    Beiträge
    106
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    MasterOhh vielen Dank für die Info.

    Habe an meinen Sendestring sVar ==> ein Chr(0) angehängt (sVar := V_C_IDENT + chr(0))

    Jetzt funktionierts !

    Entspricht chr(0) ==> "\0" ?

    mfg.

    mkersch

  4. #4
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das NULL-Zeichen ist richtig als Terminierung.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

Ähnliche Themen

  1. ADS - Kommunikation zwischen Beckhoff und IPC
    Von Leto im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 02.12.2011, 11:58
  2. Antworten: 9
    Letzter Beitrag: 08.11.2011, 17:08
  3. ADS Kommunikation Geschwindigkeit
    Von Norton im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 21.06.2011, 12:56
  4. ADS: SDO lesen über ads ocx von Visualisierung
    Von traveler im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 10.01.2011, 11:00
  5. ADS Kommunikation zwischen Beckhoff Steuerungen
    Von peraho im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 09.09.2009, 08:00

Lesezeichen

Berechtigungen

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