API programmieren

Dieses Thema im Forum "C/C++" wurde erstellt von thomaland26, 11.05.2007.

  1. #1 thomaland26, 11.05.2007
    thomaland26

    thomaland26 Grünschnabel

    Dabei seit:
    11.05.2007
    Beiträge:
    9
    Zustimmungen:
    0
    hello,
    ich habe ein einfaches programm in C gechrieben um daten senden und empfangen vom peripheriegerät uber RS232. jetzt möchte ich ein API schreiben. es soll so funktionieren, wenn das gerät angeschlossen wird, muss automatisch ein fenster(editor, comand) öffnen, wo ich daten eingeben kann und daten vom gerät angezeigt wird. ich bin anfänger mit linux und C.kann jemand mir helfen? gibt es richtige bücher für API programmierung oder welche quellen wo man richtige information finden kann?

    System: Linux
    Programm: C
    Serielport: RS232

    Danke
    mfg
    Thoma
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Psyjo

    Psyjo Routinier

    Dabei seit:
    15.11.2005
    Beiträge:
    259
    Zustimmungen:
    0
    Ort:
    Hinter'm Berg
    Ich habe kürzlich eine Klasse in C++ geschrieben um ein Display am seriellen Port anzusprechen; Sowas könntest du für dich da auch schreiben.
    Mit dem Plug&Play ist das meines Wissens schon schwieriger - dafür müsstest du einen daemon haben der überprüft ob an dem Port was angeschlossen ist, da von dem Port kein Event ausgeht wenn was angeschlossen wird.

    MfG
    Psyjo
     
  4. #3 thomaland26, 11.05.2007
    thomaland26

    thomaland26 Grünschnabel

    Dabei seit:
    11.05.2007
    Beiträge:
    9
    Zustimmungen:
    0
    Api

    moin,
    was ist ein dämon? ist das auch ein programm?

    mfg
    thoma
     
  5. Psyjo

    Psyjo Routinier

    Dabei seit:
    15.11.2005
    Beiträge:
    259
    Zustimmungen:
    0
    Ort:
    Hinter'm Berg
    Auf deutsch heist sowas auch Dienst, ein Programm das im Hintergrund läuft, und in dem Fall immer überprüft ob da was am COM angeschlossen ist.
     
  6. #5 thomaland26, 11.05.2007
    thomaland26

    thomaland26 Grünschnabel

    Dabei seit:
    11.05.2007
    Beiträge:
    9
    Zustimmungen:
    0
    API Programierung

    moin
    Diese dämon muss ich auch selbst schreiben oder gibt es schon fertig zum herunterladen?
    mfg
    thoma
     
  7. #6 marcellus, 12.05.2007
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Ich bin mir jetzt gar nicht sicher, ob die serielle schnittstelle plug & play fähig ist, aber wenn ja sollte das mit udev funktionieren, du musst dir nur noch eine rule schreiben und alles sollte in butter sein.

    Bin mit bei den Einzelheiten jetzt auch nicht sicher, aber du findest sicher einiges dazu
     
  8. #7 thomaland26, 15.05.2007
    thomaland26

    thomaland26 Grünschnabel

    Dabei seit:
    11.05.2007
    Beiträge:
    9
    Zustimmungen:
    0
    hello,
    kann jemand helfen ein init programm unter linux zu schreiben.
    das heisst wenn ich computer starte soll ein programm ausfuhren.
    es soll in 'C ' sein
    mfg
    thoma
     
  9. Psyjo

    Psyjo Routinier

    Dabei seit:
    15.11.2005
    Beiträge:
    259
    Zustimmungen:
    0
    Ort:
    Hinter'm Berg
    Das Programm kannst du von init ausführen lassen;
    "local" muss dabei aber im Autostart sein:

    Code:
    echo "programm" >> /etc/conf.d/local.start
    rc-update add local default
    
    Das ist allerdings die Vorgehensweise bei Gentoo, wie du das bei anderen Distributionen machen musst kann ich die leider nicht sagen.

    MfG
    Psyjo
     
  10. #9 thomaland26, 21.05.2007
    thomaland26

    thomaland26 Grünschnabel

    Dabei seit:
    11.05.2007
    Beiträge:
    9
    Zustimmungen:
    0
    Hello,
    ich habe immer noch mein API geschaft. kann emand vielleicht ein Beispiel geben.ein programm für rs232 anzusprechen habe ich geschrieben. hier ist mein programm was ich geschrieben habe für rs232. für das programm brauche ich API.
    #include<stdio.h>
    #include<unistd.h>
    #include<fcntl.h>
    #include<termios.h>

    #define TERM_DEVICE "/dev/ttyS0"
    #define TERM_SPEED B9600

    /*
    int main()
    {
    int rs232();
    //printf("eingabe\n");
    return(0);
    }*/


    int main()
    {
    int eingabe =2;
    int fd, old_flags;
    ssize_t length;
    char buffer[16];
    struct termios term_attr;
    fd_set input_fdset;

    if ((fd = open(TERM_DEVICE, O_RDWR)) == -1)
    {
    perror("terminal: Can't open device"TERM_DEVICE);
    return(1);

    }
    printf("geöffnet...\n");

    /*RS232 Konfigurieren*/

    if (tcgetattr(fd, &term_attr) !=0)
    {
    perror("terminal: tcgetattr() failed");
    return(1);
    }
    printf("attribute gelesen...\n");

    term_attr.c_cflag = TERM_SPEED | CS8 | CRTSCTS | CREAD ;
    term_attr.c_iflag = 0;
    term_attr.c_oflag = OPOST | ONLCR ;
    term_attr.c_lflag = 0;

    if (tcsetattr(fd, TCSAFLUSH, &term_attr) !=0)
    {
    perror("terminal: tcsetattr() failed");
    }
    printf("atribute gesetzt...\n");

    /*Standared Eingabe anpassen*/

    if (tcgetattr(STDIN_FILENO, &term_attr) !=0)
    {
    perror("terminal: tcgetattr() failed");
    return(1);
    }
    printf("Eingabe\n");
    old_flags = term_attr.c_lflag;
    term_attr.c_lflag &= ~(ICANON );
    if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &term_attr) !=0)
    perror("terminal: tcsetattr()failed");
    /*Warteschleife: */
    while (eingabe)
    {

    FD_ZERO(&input_fdset);//
    FD_SET(STDIN_FILENO, &input_fdset);
    FD_SET(fd, &input_fdset);

    if (select(fd+1, &input_fdset, NULL, NULL, NULL)== -1)

    perror("terminal: select() failed");

    /*Zeichen von der Standardeingabe eingelesen und Serialeschnittstelle ausgegeben*/

    if (FD_ISSET(STDIN_FILENO, &input_fdset))
    {
    if ((length = read(STDIN_FILENO, buffer, 16))== -1)
    {
    perror("terminal:read() failed");
    }
    else
    if (buffer[0] == '\33')
    break;
    else

    write(fd, buffer,length);

    }

    /*Daten Ven der Serialeschnittstelle eingelesen und ausgegeben*/

    if (FD_ISSET(fd, &input_fdset))
    {
    if ((length = read(fd, buffer, 16)) == -1)
    perror("terminal: read() failed");
    else
    write(STDOUT_FILENO, buffer, length);

    }

    }
    term_attr.c_lflag = old_flags;
    if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &term_attr) != 0)
    perror("terminal: tcsetattr() failed");

    printf("Aborted.\n");
    close(fd);
    return(0);
    }

    danke mfg
    thoma
     
  11. #10 supersucker, 21.05.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    1.

    Code-Tags?!

    2.

    Eine Formatierung der Art

    Code:
    if (FD_ISSET(STDIN_FILENO, &input_fdset))
    {
    if ((length = read(STDIN_FILENO, buffer, 16))== -1)
    {
    perror("terminal:read() failed");
    }
    else
    if (buffer[0] == '\33')
    break;
    else
    
    write(fd, buffer,length);
    
    }
    ist nicht dein Ernst, oder?
     
  12. #11 thomaland26, 21.05.2007
    thomaland26

    thomaland26 Grünschnabel

    Dabei seit:
    11.05.2007
    Beiträge:
    9
    Zustimmungen:
    0
    hi,
    das ist aber ernst. das ist ein teil von meinem projekt.meinst du das programm falsch.aber das funktioniert schon.
     
  13. pinky

    pinky König

    Dabei seit:
    11.08.2004
    Beiträge:
    795
    Zustimmungen:
    0
    Also bin ich der einzige, der den Thread sehr verwirrend findet?

    Das fängt schon damit an, dass hier immer von einer API gesprochen wird. Die Beschreibung sieht dann aber so aus: "es soll so funktionieren, wenn das gerät angeschlossen wird, muss automatisch ein fenster(editor, comand) öffnen, wo ich daten eingeben kann und daten vom gerät angezeigt wird."

    Ich weiß nicht was thomaland26 schreiben will, aber eine API ist es nicht, von der Beschreibung her am ehesten wohl eine GUI zum ein-und auslesen von Daten am Serielport.
     
  14. #13 Havoc][, 21.05.2007
    Havoc][

    Havoc][ Debian && Gentoo'ler

    Dabei seit:
    27.07.2003
    Beiträge:
    898
    Zustimmungen:
    0
    Ort:
    GER/BaWü/Karlsruhe (bzw. GER/NRW/Siegen)
    @pinky,

    nein. Finde den Thread auch verwirrend.

    Ich denke das er sowohl die API für die Anbindung der RS232 Schnittstelle benötigt als auch die GUI für das ein - und ausgeben der Daten.

    @thomaland26
    Bitte spezifizier doch nochmal genau was du benötigst. Ausserdem können wir dir keinen Daemon schreiben. Denn dafür fehlen uns einfach Informationen. Und wir sind nicht dafür da, deine Arbeit zu tun ;-).

    btw. RS232 ist nicht Plug&Play fähig.

    Havoc][
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 thomaland26, 21.05.2007
    thomaland26

    thomaland26 Grünschnabel

    Dabei seit:
    11.05.2007
    Beiträge:
    9
    Zustimmungen:
    0
    ok. du hast falsch verstanden glaube ich. also, das Quelcode was ich geschickt habe ist ein programm um rs232 anzusprechen.das ist kein API.ich will zu diesem Quellcode Ein API schreiben. das heist, um diesem Quellcode zu kompilieren muss ich bestimmte code im linux eingeben(z.B gcc datei.c -o filename).nach dem kompilieren muss man bestimmte daten eingeben um die daten von rs232(peripheriegerät) auszugeben.
    jetzt muss ich ein API schreiben um diese Quellcode einfach zu kompilieren(ohne gcc datei.c -o filename),wie normal ein programm ausführt.und eingabe soll beliebig sein.beliebig heisst in diesem quellcode muss ich bestimmte code eingeben um die messdaten von peripheriegerät zu kriegen.statt diese code will ich durch Eingabe "messdaten" alle werte rauskriegen.ich denke dass ich gut erklärt habe.
    mfg
     
  17. #15 supersucker, 21.05.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Nein,

    ich meinte deinen Programmierstil!

    Das ist jetzt nicht böse gemeint, aber wenn du sowas bei uns abliefern würdest, hättest du 3 Tage später deine Kündigung.

    Dein Programm ist absolut unleserlich und enthält Strukturen die __bestenfalls__ fragwürdig sind.

    Ich würde dir dringend empfehlen zuerst einmal ein paar Tutorials über guten Programmierstil zu lesen, z.B. hier: klick mich
     
Thema:

API programmieren

Die Seite wird geladen...

API programmieren - Ähnliche Themen

  1. Kinderleicht: Roboter programmieren mit Open Roberta

    Kinderleicht: Roboter programmieren mit Open Roberta: Das Fraunhofer-Institut für Intelligente Analyse- und Informationssysteme (IAIS), Google und Lego haben das Programm »Open Roberta« gestartet....
  2. PyQT: Wie programmieren?

    PyQT: Wie programmieren?: Hallo, ich weis nicht, ob dieser Beitrag doppelt gepostet wurde, aber es gab da einen kleinen Fehler mit Tapatalk. Ich bin jetzt neu in Python...
  3. PyQT: Wie programmieren?

    PyQT: Wie programmieren?: Hallo, mit welchen Programm schreibe ich am besten in PyQT? Danke im Vorraus Lexi Sent from my iPad using Tapatalk - now Free
  4. Wer hat lust dieses App von Win in Linux zu Programmieren 256kb

    Wer hat lust dieses App von Win in Linux zu Programmieren 256kb: Hi zusammen, wäre es möglich das schnell mal in ein Debian Programm zu schreiben, ich habe keine ahnung vom Programmieren, ich benutze es schon...
  5. Grundlagen Websites programmieren

    Grundlagen Websites programmieren: Hi, ich hab vor längerer Zeit mal Angefangen mir ne Website zu programmieren, damals nur mit html und css. Hat zwar funktioniert, war aber...