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

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

Thema: libnodave anfänger

  1. #21
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von dannyli Beitrag anzeigen
    hallo leute
    habe es gestern erfolgreich geschafft eine verbindung zu der sps herzustellen.
    nun habe ich noch ein paar fragen. ich will aus mehreren DB immer wieder die gleichen werte auslesen. im doc ordner der libnodave gibts ja readbytes ich verstehe auch soweit den aufbau ,aber was hat es mit dem buffer auf sich? ist das so eine art speicher für die Daten die libnodave von der sps holt? weiterhin wird in anderen Beiträgen was von get methoden erwähnt was bedeutet das? und zu guter letzt würde mich noch interessieren wie ich das zyklische auslesen realisieren könnte vieleicht mit einer do/while schleife? wie gesagt sind meine Anfäge in hochsprchen programmierung.....

    Grüsse dannyli
    Ja readbytes oder auch readmanybytes holt die Daten aus der SPS und legt sie in Buf ab. Auf die Größe von Buf aufpassen!)
    Ich bau dann die Daten aus dem Buffer selber so zusammen, wie ich sie brauche (INT, DINT, STRING, REAL, BOOL), mit den Get-Methoden kann man das Libnodave machen lassen, wenn ich das richtig erinnere.
    Ich habe einen eigenen Thread für das Lesen/Schreiben der Daten angelegt, in der Komponente für Delphi wird das auch so gehandhabt, da man sich ansonsten u.U. die Bedienoberfläche ausbremst und diese teilweise nicht mehr bedienbar ist oder auch hakelt. Man muß dann zwar mit Synchonisier-Methoden arbeiten, um dann Daten Online anzuzeigen, aber das hat sich als rel. problemlos erwiesen. Dieser Thread ist bei mir im Prinzip eine Endlosschleife, die alle beteiligten SPS nacheinnander anfragt und die Daten liest/schreibt.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  2. #22
    dannyli ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    19
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo ralle hab grad irgendwie nen hänger hier mal ein stück code:

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

    Dim buf(0) As Byte
    If fds.rfd > 0 Then
    res = dc.readBytes(libnodave.daveDB, 1, 0, 144, buf)
    End If
    End Sub


    dieser timer fragt zyklisch den db ab welcher 144 Bytes besitzt. da ja im doc steht man soll so grosse datenpakete wie möglich abholen ist mir nun nicht so wirklich klar wie ich die daten im db wieder in die einzelnen stücke zerlegen kann um sie dann in eine sql db zu schreiben .

  3. #23
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    buf(0) ist doch sicher zu klein oder? Entweder gelich in der richtigen Größe oder mit redim nach der Definiton nochmals verändern.

    Ich nehme die einzelnen Bytes dann aus dem Array Buf[0...irgendwas] und baue mir die zahlen selbst zusammen. Die Getfunktionen sollten das für dich tun, damit hab ich mich noch nicht befaßt. Entweder man gibt an woher die die Daten nehmen oder sie erhöhen immer einen Zeiger um den ensprechenden Betrag (4 bei Real). Lies das mal in der Dok nach, evtl. findet sich hier im Forum was dazu, kommt mir doch ein wenig bekant vor. Ich muß in Delphi in der Funktion einen Pointer übergeben, weiß nicht, wie das in VB aussieht. War da nicht ein Beispiel bei libnodave dabei?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #24
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Lächeln

    Hallo,

    Zitat Zitat von Ralle
    Ich mach das mit einem normalen NW-Kabel, kein Cross-Over. Hängt vielleicht vom Laptop ab?
    Eher nicht vom Laptop, sondern von dem verbauten NIC (Network Interface Card) ab. Moderne NIC's haben ein integriertes "Autosense" und können automatisch erkennen, ob gedreht werden muss. Und das macht der NIC dann auch automatisch. Irgendwann wird es keine Crossover Kabel mehr geben.

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Crossover Kabel  

  5. #25
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Idee

    Hallo,

    Zitat Zitat von Ralle
    Ich muß in Delphi in der Funktion einen Pointer übergeben, weiß nicht, wie das in VB aussieht.
    VB und Zeiger sind zwei getrennte Welten, vielleicht hilft das hier :

    http://www.aboutvb.de/khw/artikel/khwptrtostrg.htm

    Man muss da in VB schon etwas tricksen ..

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Es gibt gute Gründe, warum ich VB nicht besonders mag  

  6. #26
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Pointer sind in VB nicht wirklich kompliziert. Der Parameter muss nur mit ByRef deklariert sein. Und den Zeiger auf ein Array übergibt man dann
    Code:
    Dim a(100) as Long
    x = Func(a(0))
    Das ist alles.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  7. #27
    dannyli ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    19
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo zusammen

    danke erstmal für eure antworten. da ich erst seit gut 2 wochen programmiere fällt es mit schwer eure vorschläge zu verstehen.
    ich habe doch in meinen DB verschiedene Structs angelegt in diesen befinden sich verschiedene Informationen die als stings oder bool abgelegt werden.mit get funktionen kann ich ja nur max 4 byte holen wenn ich das so richtig verstanden habe oder?,ich lese im moment mit read aber die gesamten 144 bytes aus und weiss nicht wie ich diese in meine sql bringen kann. die infos im db sind doch so etwas wie ein Byte array oder? kann ich dieses nicht in einen string wandeln und mir aus dem die entsprechenden infos rausholen? oder hab ich eine möglichkeit die mir libnodave bietet übersehen?......

    gruss dannyli

  8. #28
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Wenn du die Struktur des DB kennst, dann ist es doch gut. Du kannst dann die 144 gelesenen Byte genau so wieder zusammenbauen, wie sie im DB abgelegt sind. Die Getfunktionen helfen dir schon mal bei DINT, Float etc. Die Strings sind ja auch nicht der Hit. Du weiß, daß ein String im DB bei DBB20 anfängt. Die ersten beiden Byte enthalten die Längeninfo. Byte 0 --> Max. Länge, Byte 1 aktuelle Länge des String. In Byte 1 steht z.Bsp eine 10. Dann kannst du also auf Byte 2,3,4,5,6,7,8,9,10,11 zugreifen und diese zu einem String zusammenbauen (z.Bsp. concat in Delphi). Wenn dein Buffer also mit 0 beginnt wären das Buf(22) bis Buf(31). Wie gesagt, zu den Getfunktionen kann ich nicht viel sagen, ich bau mir auch die anderen Typen gleich selbst zusammen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. #29
    dannyli ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    19
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo hier bin ich mal wieder

    ich habe mein programm jetzt soweit das ich meinen db zylisch auslesen kann mit davereadmanybytes. habe jetz mal einen db erstellt der aus einem string besteht mit 20 zeichen. wenn ich jetzt was in den string schreibe z.b. einen wert den ich aus einen barcode gelesen habe oder eben irgent eine zeichenkette z.B. 'abcd1234' bekomme ich aber nur sehr grosse zahlenwerte angezeigt denke mal integer mein problem ist nun wie ich die werte wandeln kann oder wie ralle so schön sagt zusammen setzen kann habe schon alles mögliche versucht aber keine chance.vieleicht kann mir jemand weiter helfen?

    gruss dannyli

  10. #30
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Na ja, ich arbeite nicht mit VB, daher kann ich dir nicht so richtig sagen, wie du in VB deine Variablen zusammenbaust.

    Aber mal vom Prinzip:

    http://www.asciitable.com/

    Jedes Byte des String repräsentiert ein Zeichen im Char-Code. Step7 hat noch einen Kopf von 2 Byte vor dem String, in dem steht die definierte und die tatsächliche Länge des String.

    Nun kannst du also hergehen, Byte 0 ist die definierte Länge (soviele Byte sollten in deinem DB für den String angelegt sein), Byte 1 ist die tatsächliche Länge (soviele Byte werden aktuell von deinem String belegt).

    Du suchst dir eine Funktion in VB, die Zeichen oder Strings verkettet. Dann definierst du dir einen String, liest dein Array (Buf) bei den entsprechenden Stellen byteweise aus und verkettest dieses Byte mit dem definierten String.
    Wie gesagt, VB ist nicht mein Ding .Net schon gar nicht, also keine Ahnung, wie das dort genau definiert ist. Ich denke aber im Netz findest du zu diesem Thema (verketten oder addieren oder zudammenfügen von Strings) sicher auch eine ganze Menge.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. Delphi und Libnodave Anfänger
    Von Kanonier im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 30.07.2011, 01:01
  2. Antworten: 0
    Letzter Beitrag: 09.09.2010, 00:27
  3. LibNoDave unter VB.Net ohne libnodave.net.dll
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 09.03.2010, 18:57
  4. Libnodave für Anfänger
    Von Waelder im Forum HMI
    Antworten: 2
    Letzter Beitrag: 08.02.2009, 14:31
  5. libnodave anfänger sucht hilfe
    Von chrisi01 im Forum Hochsprachen - OPC
    Antworten: 13
    Letzter Beitrag: 21.12.2007, 13:30

Lesezeichen

Berechtigungen

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