[Oracle] c und oracle-db

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Oracle] c und oracle-db

    hallo,
    ich habe eine applikation mit php und oracleSQL geschrieben.

    jetzt soll über eine i/o karte daten erfasst werden und in diese oracle datenbank geschrieben werden.
    ich habe dabei gleich an c/c++ gedacht.
    oder hat jemand nen anderen vorschlag, wie es noch gehen könnte.

    es sollen aber von mehreren pcs in die datenbank geschrieben werden, also sollte eine konfigurationsdatei noch eingelesen werden.

    jetzt wollte ich noch fragen ob ihr evtl ein tutorial oä zu empfehlen habt, und evtl. noch ein script bspl. wie ich eine connection herstellen kann.

    vielen dank

    blunaluder
    www.flyer4fun.de

  • #2
    du brauchst aufjedenfall einen oracle client auf den einzelnen rechner.

    Ich habe so etwas ähnliches schon mal mit VB umgesetzt.

    erstell dir mal eine datei mit der endung udl

    da kannste dir ein connection string erzeugen lassen
    Beziehung? Klar habe ich mit Beziehungen zu tun ... ich bin Datenbankprogrammierer :-D

    Kommentar


    • #3
      hallo, also kann ich nicht einfach über ein c-script in die datenbank schreiben?

      ich informiere mich jetzt mal über die erstellung einer udl datei. danke

      ----------

      ok ich glaube jetzt verstanden zu haben, also soll ich sozusagen eine udl datei erzeugen, die mir die connection parameter übergibt, dann lese ich noch einer weitere datei ein, die mir den jeweiligen pc aufzeigt und dann schreibe ich die i/o-karten daten in meiner datenbank.

      aber für was ich den oracle client noch brauche ist mir gerade unklar.
      Zuletzt geändert von blunaluder; 22.11.2005, 11:56.
      www.flyer4fun.de

      Kommentar


      • #4
        Um welche i/o karten handelt es sich da? und wie sind diese am PC angeschlossen, COM, USB?

        Ich würde da mit C++/MFC arbeiten, wenn ich zwischen VB und C++ enscheiden könnte, da man mit C++ einiges mehr machen kann und bei manchen Anwendungen das 40fache Speed in Vergleich zu VB hat.

        Infos: http://www.linux-magazin.de/Artikel/...le/oracle.html

        Kommentar


        • #5
          ich hab mir eine i/o karte für den einbau im pc (bisher) entschieden.
          denn ich muss ein signal das von einer waage kommt erfassen..

          warscheinlich ein beckhoff...

          dieses digitale waagen-signal soll dann über mein programm erkannt werden und in die datenbank eingetragen werden.

          thx für den link
          www.flyer4fun.de

          Kommentar


          • #6
            Hmm, meinst du eine PCI Karte? Die Firma Beckhoff stellt Libs und Dlls zur Verfügung mit denen du über z.B. ein C++ Programm auf dei Werte zugreifen kannst. Die auszulesen ist kinderleicht (hab schon was mit einem externen Beckhoffkontroller gemacht). Die Werte in eine DB zu speichern wirst du dann auch sicherlich hinkriegen, wobei du die Messwerte auch mit tab getrennt in eine Textdatei speichern kannst und diese sachen dann per Exec auswerten, dann würdest du dir die Arbeit mit einer DB ersparen. Kommt natürlich auf Datenaufkommen an...

            Kommentar


            • #7
              super, danke dir! so in der art hab ich mir das schon gedacht. exel kommt nicht in frage, wäre dann noch eine lizenz zu kaufen, datenbanksystem läuft inzwischen bei mir.

              wenn du lust hast, kannst du mir ja dazu mal ein programmauszug schicken, das würde mich sehr freuen, ich fange diese woche noch damit an. wäre n super ding
              www.flyer4fun.de

              Kommentar


              • #8
                Hier findest du die PDF mit C++ Beispielen:
                ftp://ftp.beckhoff.com/Document/Soft...1/TcAdsDll.pdf

                Da ist auch ein Beispiel, wei man Daten arrays auslesen kann. Ich würde auf jeden Fall mit Arrays arbeiten, damit du nicht ständig für 1 Messwert den ganzen Ethernet Frame ausnutzt.

                Ich poste mal meinen PLC-Code, mit dem ich die Daten einlese:

                Code:
                PROGRAM MAIN
                VAR
                	M_IN		AT%IB0:	WORD;		(*Mess-Signal Eingang*)
                	CS_IN		AT%IB2:	BOOL;		(*Clock Signal Eingang*)
                	limitvar:	INT:=1000;	 	(*Array Skalierung*)
                	Messwerte_arr_1: ARRAY [0..999] OF WORD;			(*Temp Array der mit Messwerten gefüllt wird*)
                	Messwerte_arr_2:  ARRAY [0..999] OF WORD;			(*Array der Messwerten  für die Weiterleitung auf den PC*)
                	Messwerte_arr_out:  ARRAY [0..999] OF WORD;
                	Mess_nummer:	ARRAY [0..999] OF DWORD;
                
                	zeiger:	WORD:= 0; (*Zeiger  um das Array zu addressieren*)
                	counter: DWORD:=0; (*Zählt die Messungen*)
                	arr_toggl_bit:	BOOL;	(* Toggle Bit um zwischen Arrays zu  wählen*)
                	BSY_Flag  AT %MD0: BOOL; (*BSY Flag "Merker", wird vom PC rückgesetzt.*)
                	FallingEdge: 	F_TRIG;	(*Auf die fallende Ecke Takten*)
                
                END_VAR
                -------------------------------------------------------------------
                FallingEdge( CLK := CS_IN );(*Reagiert auf die fallende Flanke des CS_IN Signals*)
                
                IF FallingEdge.Q  THEN
                	IF arr_toggl_bit = FALSE THEN
                	Messwerte_arr_1[zeiger]	:= M_IN; (* Schreibt den Messwert in den Temp Array*)
                	END_IF;
                	IF arr_toggl_bit = TRUE  THEN
                	Messwerte_arr_2[zeiger]	:= M_IN; (* Schreibt den Messwert in den Temp Array*)
                	END_IF;
                
                	Mess_nummer[zeiger]	:= counter;	(*Nummeriert die Messung*)
                	zeiger := zeiger+1;	(*erhöht die Arrayadresse*)
                	counter := counter+1;(* Erhöhr die Countervariable mit jedem Abtastwert für die Überwachung*)
                END_IF
                
                IF	zeiger = limitvar THEN
                
                	IF arr_toggl_bit = FALSE  AND  BSY_FLAG <> TRUE THEN
                	Messwerte_arr_out :=Messwerte_arr_1;
                	END_IF;
                
                	IF arr_toggl_bit = TRUE AND  BSY_FLAG <> TRUE THEN
                	Messwerte_arr_out :=Messwerte_arr_2;
                	END_IF;
                
                	arr_toggl_bit			:= NOT arr_toggl_bit;
                	zeiger :=0;
                
                	IF BSY_Flag = FALSE THEN
                	BSY_FLAG			:= 1;	(*Wird vom PC rückgesetzt*)
                	END_IF
                
                END_IF
                C-Code ist in der PDF ziemlich verständlich erklärt. Ich glaube, damit kommst du auch gut klar.

                MFG

                Kommentar

                Lädt...
                X