capi4linux
-
Hi!
Hat hier einer Erfahrungen mit capi4linux?
Ich hab da nämlich ein grundsätzliches Problem: Ich verstehe nicht, wie ich eine Message mitunsigned capi20_put_message (unsigned ApplID, unsigned char *Msg);
sende (oder mit get_message empfange).
Wie genau muss ich Msg übergeben, wenn ich z.B. eine Verbindung initieren will.
Kann mit vielleicht jemand ein kurzes Beispiel geben?Danke, und frohe Weihnachten!
MFG fsd.
-
Eine Doku wie Msg aufgebaut sein muss, findest Du unter www.capi.org.
Beispielsourcen gibts u.a. bei AVM ftp://ftp.avm.de/develper/capi-adk/.Sehr empfehlenswert für Einsteiger ist die Seite von Peter Zwosta http://home.t-online.de/home/Peter.Zwosta/
Hier findest Du Links und Beispielsourcen.
-
Hi!
Danke für die Links!
Ich hatte die capi-doku bereits gefunden, werde daraus aber nicht schlau.
Ich guck mir jetzt mal die Beispiel-sourcen an.MFG fsd.
-
Hi!
Hab ich auch eine Möglichkeit auf capi zuzugreifen, wenn ich nicht root bin?
Der sagt mir dann immer 1009 capi not installed. Als root funktioniert's.
(User ist in dialout)Gibt's da eine Möglichkeit, die mein System nicht völlig unsicher macht?
Danke und frohe Weihnachten!
MFG fsd.
-
Hallo zusammen,
ich bin dabei das erstemal mit C zu programmieren, und dann auch noch unter Linux (SuSE 9.0 prof). Als Einführungsliteratur nutze ich 'C-Programmierung unter Linux' und die hier angebotenen Tutorials. Der von mir genutzte Compiler ist der unter linux mitgelieferte gcc.
So, jetzt aber zu meinem Problem: Ich möchte/soll eine Anwendung schreiben, die einen Anruf (isdn) von einem anderen Computer entgegennimmt und die gesendeten Daten auswertet (Rechner1 ruft Rechner2 an und übergibt Datenstrom. Nach Übergabe beendet Rechner1 die Verbindung). Auf meinem Testrechner (Rechner1) ist eine FritzCard (usb) installiert und die Programme die mit capi zusammenhängen (avmfritzcapi, capi4linux, capisuite, kisdnwatch, km_fritzcapi, capi4hylfax) habe ich auch installiert. Die gleiche Installation habe ich auf einem anderen Rechner (Rechner2), mit dem Unterschied das hier eine FritzCard PCI drinsteckt. Die Dokumentationen, die oben angegeben sind habe ich mir runtergeladen und durchgearbeitet (soweit man das als C-Neuling kann). Auch habe ich versucht den Quellcode,der als Beispiel zum Runterladen bereitsteht zu verstehen.Die Anwendung die ich zuerst gschrieben habe hatte folgenden Quellcode:
#include <stdio.h> #include <sys/types.h> #include <linux/capi.h> #include <capi20.h> //laut Doku Common-ISDN-API Version 2.0 - Part II Seite 133 main() { unsigned Ausgabe = 0; unsigned App_ID=0; AppID=capi20_register(2,7,2048,&App_ID); printf("Ausgabe %u", Ausgabe); capi20_release(AppID); }
wenn ich dieses Program mit dem gcc -o test test.c compiliere dann bekomme ich folgende Fehlermeldung:
In file included from /usr/include/linux/kernelcapi.h:13, from /usr/include/linux/capi.h:18, from test.c:3: /usr/include/linux/list.h:563:2: Warnung: #warning "don't include kernel headers in userspace" /tmp/ccG3OGLT.o(.text+0x2c): In function `main': : undefined reference to `capi20_register' /tmp/ccG3OGLT.o(.text+0x50): In function `main': : undefined reference to `capi20_release' collect2: ld returned 1 exit status
wo mache ich den Fehler? die capi20.h ist vorhanden.
Danach habe ich folgenden Quellcode getestet:
#include <stdio.h> #include <sys/types.h> #include <linux/capi.h> #include <capi20.h> main() { if (!capi20_isinstalled()) { printf ("\nError: ISDN-driver not installed\n"); return 0;} }
Die Fehlermeldung beim compilieren:
In file included from /usr/include/linux/kernelcapi.h:13, from /usr/include/linux/capi.h:18, from test.c:3: /usr/include/linux/list.h:563:2: Warnung: #warning "don't include kernel headers in userspace" /tmp/ccOM347N.o(.text+0x11): In function `main': : undefined reference to `capi20_isinstalled' collect2: ld returned 1 exit status
Sorry für den vielen Text, aber ich weiss jetzt einfach nicht weiter, bzw. seh den Wald vor lauter Bäumen nicht.
Gibt es vielleicht ein Tutorial? -- ich habe keins gefunden --
Damke und Gruß im Voraus,
der suchende[edit=kingruedi] sfds [/edit]
-
du musst die Library noch linken. Den Header einbinden, reicht nicht.
-
Hallo kingruedi,
erstmal danke für die Antwort.
Laut Doku von avm.org sollte die capi20.h mit#include <capi20.h>
eingebunden werden und ich bin davon ausgegangen, dass sie sich dann so verhält wie mit der stdio.h u.a. Nach deinem Rat habe ich erstmal'ne Weile rumprobiert, bis ich dann die capi20.c und capi20.h aus dem Internet geladen und compiliert habe. Eingbunden habe ich sie dann mit
#include "capi20.h"
Hurra, dann hat es geklappt mit dem Linken. Bekomme zwar beim Ausführen die Meldung dass der ISDN-Treiber nicht istalliert ist, darum kümmere ich mich aber nächste Woche.
Gruß,
dersuchende
-
Hallo, habe noch eine Frage:
kennt jemand ein Tutorial für die capi-Programmierung unter Linux das einem die Grundlagen etwas erklärt, z.B Telefonnummer wählen, Anruf annehmen, Daten senden, usw? Wie gesagt ich habe schon gesucht, bin aber nicht fündig geworden oder habe es übersehen.
Danke und Gruß,
dersuchende
-
Hast du mal nachgeguckt welche Recht auf /dev/capi20 sind könnte der Grund dafür sein das du die meldung capi not installed kriegst
MFG eiskalt
-
rw-rw----
rwx für alle möchte ich eigentlich nicht geben. Wie muessten denn die Rechte lauten? Ich habe zwar mal gesucht, aber keine Anhaltspunkte gefunden.
Für Infos wäre ich dankbar.
-
probiers doch spasseshalber malt mit 777(rwxrwxrwx) kannstes ja rückgängig machen wenns trotzdem net klappt. ich bilde mir ein das x gebraucht wird bin mir aber nicht ganz sicher ich hab bei mir rwxrwx--- auf /dev/capi20
MFG eiskalt