Borland C++ und Linx



  • Hi Leute!

    Ich hab ein Problem mit dem Borland C++ 6 und Linux. Wir haben ein Projekt zu machen. Wir wollen Spannungswerte in Borland einlesen und diese Werte weiter an einen Linux Rechner weiterleiten! Unsere Datenbank ist mit MySQL (MyPHPAdmin) geschrieben worden. Mein Kollege von mir kann von seinem Windows Rechner auf mein Linux Rechner zugreifen und meine Datenbank erkennen und mir Werte auf die Datenbank senden. Aber wir haben Probleme beim "Borland C++ 6 die eingelesene Werte" in Datenbank zu schicken. Wir wissen nicht wie man die mysql connection befehle programmieren sollen. Wir haben einige Befehle gesehen und sie auch angwendet aber sie funktionieren nicht oder können gar nicht erkannt werden. Ich bitte um Hilfe und Antwort! Meine Mail adresse lautet drade_lee@gmx.net !!!!

    LG Drade_Lee



  • Wie "funktionieren nicht"? Versuch das Problem mal konkret zu beschreiben: wmfrs

    Ansonsten http://dev.mysql.com/doc/refman/5.0/en/apis.html



  • Ok dann versuch ich noch tiefer rein zu gehen. Hier steht der Code den ich verwende.Nur die Befehle zum Öffnen der Verbindung zwischen C-Programm und Datenbank sind nicht wirklich jene die zum Erfolg führen. Ich habe es auch unter anderem mit Opendatabase probiert aber da bin ich auch gescheitert und einen funktionierende Befehl um die Werte dann in die Datenbank zu schreiben hab ich auch nicht gefunden.Welchen befehl brauche ich da, und wie ist da die genaue Syntax. Nochmal zur Erklärung: Der Windows Rechner kann auf mein Linux Rechner zugreifen. Die Datenbank wurde mit MySQL (MyphpAdmin) geschrieben. Unter der Command window kann mein Kollege auf meine Datenbank zugreifen. Nun haben wir das Problem beim Werteübertragung auf mein Linuxrechner. Der unten stehende Code ist der Code wo die Werte vom einen 12 BIT ADC LABJACK auf den Windows Rechner eingelesen wird.

    #include <conio.h>
    #include <stdio.h>
    #include <wtypes.h>
    #include <sql.h>
    #include <DBLogDlg.hpp>

    //#include <iostream.h>
    //include <dbconnect.h>//"C:\Dokumente und Einstellungen\Balthazor\Desktop\Borland\CBuilder6\Include\dbconnect.h"
    //#include "C:\Dokumente und Einstellungen\Balthazor\Desktop\mysql++1_7_1win32_borland_1_1\mysql\include\mysql\mysql.h"

    //Zuerst werden die Strukturen definiert, die das selbe Format haben,
    //wie die Funktionen des Prototypens

    typedef long (CALLBACK *EAnalogIn)(long*,
    long,long,long,long*,float*);
    //EAnalogIn: Liest die Spannung von einem analogen Eingang ein.
    typedef long (CALLBACK *AISample)(long*,long,long*,long,
    long,long,long*,long*,long,long*,float*);
    // AISample: Liest die Spannungen von 1, 2oder 4 analogen Eingangen.

    int main()
    { typedef INT32 SQLResult;
    //SQLConnect('localhost','root');
    SQLResult pConnection ->connect ( proj1, root, PW) = 0;

    for(;; ) //Leerlaufschleife
    { //Definition der Variable um die DLL-Datei zu laden
    HINSTANCE hDLLInstance;

    //Definition der Variablen die später verwendet werden
    EAnalogIn m_pEAnalogIn;
    AISample m_pAISample;

    //Nun wird versucht die DLL-Datei zu laden
    if (hDLLInstance = LoadLibrary("ljackuw.dll"))
    {
    //Bei erfolgreichen Laden werden folgen Funktionen durchgeführt
    m_pEAnalogIn = (EAnalogIn)::GetProcAddress(hDLLInstance,"EAnalogIn"); //Pointer der Funktion EAnalogIn
    m_pAISample = (AISample)::GetProcAddress(hDLLInstance,"AISample"); //Pointer der Funktion AISample

    }
    else //Falls der Treiber nicht installiert wurde kommt folgende Fehlermeldung
    {
    printf("\nFailed to load DLL\n");
    getchar();
    return 0;
    }

    /*m_pEAnalogIn hält einen Pointer zu der m_pEAnalogIn Funktion. Der Compiler
    erkennt automatisch m_pEAnalogIn als Pointer einer Funktion und ruft
    die Funktion mit den Parametern auf. Wenn wir eine neue Variable vom Typ
    tEAnalogIn erstellen und geben "pNewVar = m_pEAnalogIn" ein, so kann der
    Compiler die Funktion nicht aufrufen, da er diese nicht erkennt. */

    long errorcode; //Ein LabJack spezifischer Error-Code, 0 bedeutet kein Fehler 2 bedeutet,
    // dass keine LabJAck-Einheit angeschlossen ist.
    long idnum=-1; //idnum = Local ID, Serien Nummer, oder -1 für das Gerät,
    //das als erstes gefunden wird.
    long stateIO=0; //stateIO= Ausgang für IO0-IO3.Hat aber keine Auswirkung,
    //falls IO als Eingang konfiguriert wird, da eine andere Funktion verwendet werden
    //muss, die den Ausgang defeniert.
    long numCh=4; //numChannels = Anzahl der analogen Eingängen die zu lesen sind(1,2,3 oder 4).
    long channels[4]; // channels = Pointer zeigt auf ein Array von einem Kanal mit
    //dem niedrigensten numchannel Element.Jeder Kanal kann einfach oder differentiel verwendet werden.
    // 0-7 für einfach und 8-11 für differentiel.
    long gains[4]={0,0}; //gains= Pointer zeigt auf ein Array von einem Kanal
    //mit dem niedrigensten numChannel Element. Gain-Befahle sind 0=1, 1=2, ... , 7=20.
    //Diese Applikation ist nur für differentielle Anwendungen verfügbar
    long ov=0; //ov=overVoltage = Wenn >0, wurde eine Überspannung an einem der Eingängen entdeckt.
    float voltages[4]={0}; //voltages = Pointer zu dem Array, das die eingelesenen Spannung zurückgibt.

    //Lesen der 8 analogen Eingängen mittels AISample
    channels[0]=0;
    channels[1]=1;
    channels[2]=2;
    channels[3]=3;
    errorcode = m_pAISample(&idnum,0,&stateIO,0,1,4,channels,gains,0,&ov,voltages);
    printf("\nAISample error = %d\n",errorcode);

    // mysql_query("insert into 'emg_ua'('zahl','age','startzeit','werte','endzeit')Values(5,44,328432843,rand()%100,3242131234123)");

    printf("AI0 = %2.2f V\n",voltages[0]);
    printf("AI1 = %2.2f V\n",voltages[1]);
    printf("AI2 = %2.2f V\n",voltages[2]);
    printf("AI3 = %2.2f V\n",voltages[3]);

    }


Anmelden zum Antworten