Binär-Wrapper für ISDN



  • Hi @ll !!!

    Ich soll für einen Kunden ein Programm machen , dass Verbindungsdaten von einer ISDN - Telefonanlage einliest. Diese sollen dann verarbeitet werden und in einer HTML - Statistik aufbereitet werden , so dass sie immer abgerufen und gedruckt werden können.
    Ich habe schon im Manual von der ISDN - Anlage gelesen wie man es macht dass sie die Daten über spezielle Anschlüsse ausgibt ( es war auch ein Kabel mit dem ich die Anlage an einen von den Alten Maus-Anschlüssen klemmen kann dabei ). Die Web - Statistik ist auch nicht das Problem. Nur eine Sache an der ich verzweifle nämlihc Wie erstelle ich in C ++ eine Verbindung zur ISDN - Anlage her???

    ich habe mir dass so überlegt , das ich die Statistik in PHP generiere. Nur mit PHP glaube ich nicht dass ich eine Verbindung zur ISDN - Anlage kriege ,deswegen will ich da einen Wrapper in C++ schreiben. Der muss eigentlich nix machen als die Binärdaten annehmen und in eine SQL-Table posten (BLOB). Dann verarbeite ich sie weiter in PHP weil PHP für sowas besser geeignet ist und nicht so viele Fehler auftreten können (non-zero-terminated strings oder wie das heißt und vor allem buffer-overflows) denn das programm soll ja ganz lange im Dauerbetrieb laufen ohne abzustürzen. Dann kann ich auch gleich über eine Template-Engine die Stats erzeugen.
    Das ganze soll dann unter BSD auf einem Mini-Computer (der ist nur ein zehntel so groß wie ein PC) laufen.

    Ach ja, und noch eine Frage: gibt es in C ++ eine Funktion die binärdaten richtig escaped, damit sie in die DB geschrieben werdne können ohne das query-errors kommen!!!

    Vielen Dank schon mal im Vorrauß.



  • Hört sich so an als möchtest du wissen wie man von C++ aus auf die COM-Schnittstelle zugreifen kann. Das ist keine Funktionalität von C++, sondern von der C++-Schnittstelle des Betriebssystems das du verwendest.
    🙂



  • Wieso geht das nicht?

    Es gibt doch viele Programme die auf die alte Maus - Schnittstelle zugreifen ! Früher müssen das ja mindestens die Maustreiber gewesen sein. Welche Sprache muss ich denn verwenden um auf die Schnittstelle zuzugreifen ???

    Wenn du sagst das nur das Betriebssystem darauf zugreifen kann, soll ich dann ein Shell Skript schreiben dass die Daten an mein Programm weiterleitet? Also so wie

    cat /dev/com0 > meinprogramm.cpp
    

    (ich weis nicht genau wie der parallele com - port in Linux heißt)



  • Gemeint war die [url=http://de.wikipedia.org/wiki/Programmierschnittstelle]API[/cpp] des Betriebssystems.

    BTW, dein Shellskript leitet nichts um, dass macht die Pipe (|), sondern schreibt den Kram aus /dev/com0 in die Datei meinprogramm.cpp



  • Dieser Thread wurde von Moderator/in davie aus dem Forum C++ in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • .filmor schrieb:

    Gemeint war die API des Betriebssystems.

    BTW, dein Shellskript leitet nichts um, dass macht die Pipe (|), sondern schreibt den Kram aus /dev/com0 in die Datei meinprogramm.cpp

    Ich habe mir jetzt den Wiki - Eintrag durchgelesen. Ich habe dann auch in der Linux API gesucht aber ich habe dort keine FUnktion ausfindig machen können mit der ich den COM - Port einlesen kann. Ich glaube ich brauche die ABI - Binärschnittstelle denn ich will ja genau die Binären Daten haben. Wo finde ich Docs dazu? Bei Google hab ich nix gefunden? Oder kann jemand vielleicht ein kleines Beispiel geben wie ich mit der Binärschnittstelle Daten vom COM - Port einlese?

    Ich glaube es ist einfacher das ganze über das Shellskript zu lenken. Aber mit welcher Linux - API - Funktino kann ich die Daten aus der Pipe einlesen ??? Wenn ich es so aufrufe:

    cat /dev/ttyS0 | isdnwrppr.cpp
    


  • Da solltest du auf jeden Fall nicht die CPP verwenden, sondern dein fertiges Programm 😉

    cat /dev/ttyS0 | isdnwrppr.exe
    

    Und zweitens wird bei dieser Schreibweise afaik die Ausgabe des cat-Befehls als Standard-Eingabe deines Programms verwendet (stdin bzw. cin).



  • Schau mal in die FAQ.



  • Hallo.

    Ich konnte dort nichts finden zum Thema ISDN?

    Sitze übrigens immer noch an dem Problem aber schreibe jetzt erstmal das Web-Frontend.



  • wenn ich jetzt nicht falsch liege, solltest du dir erst über die begrifflichkeiten klar werden, die du verwendest, denn die isdn anlage ist über einen seriellen com port an den computer angeschlossen. du möchtest nun die anlage steuern. soll heissen du müsstest afaik nur die /dev/tty* (je nach com port wo die anlage hängt) öffnen und die entsprechenden steuerbefehle an die anlage senden, dann die antwort auswerten. die funktionen zum öffnen, schließen, schreiben und lesen könnten da sein fopen(), fclose(), write(), read() und konsorten.

    was du aber an die anlage schicken musst, weiss kein compiler das musst du selber wissen bzw das kann dir der hersteller deiner isdn anlage sagen (wenn du ihn nach der richtigen sache fragst)

    nur um eine html tabelle zu erzeugen mysql, php und eine template engine zusätzlich zum programm zu benutzen halte ich für überflüssigst, kostet alles nur platz, der bei einem "mini computer" (ich denke mal du meinst einen embedded pc, siehe mein 1. satz) recht knapp bemessn ist üblicherweise. investier da einfach mal ein paar stunden in das programm und u hast eins das schneller läuft, weniger speicher benötigt, dazu noch unter 100kB auf der festplatte benutzt. und stell dir vor, auch ohne mysql und php kann man stabile anwendungen erstellen 🙂



  • LukazZ schrieb:

    Hallo.

    Ich konnte dort nichts finden zum Thema ISDN?

    Sitze übrigens immer noch an dem Problem aber schreibe jetzt erstmal das Web-Frontend.

    Nö, da steht aber wie du mit der seriellen Schnittstelle arbeitest und danach hattest du ja zu letzt gefragt.



  • schon mal danke für die antworten 👍

    Ich mus gar keine stuerbefehle an die anlage senden. ich muss nur eine bestimmte nummer am telefon eingeben , dann schickt die immer die daten über den parallelen ausgang wenn einer anruft oder angerufen wird.

    Und ob das Programm viel platz brauch oder nicht ist nicht so wichtig. Speicherplatz und cpu kostet ja nicht vile... und wenn es zu wenig wird nehme ich einfach einen etwas größeren mini-pc. zahlen tut schließlich der kunde 😃

    Ich habe das mal probiert mit fopen , aber er liefert keine binärdaten sondern NULL und in errno haut er mir immer den EACCESS rein. muss ich vielleicht die parallel-shell in die fstab eintragen!? oder kann ich aus dem programm raus irgendwie root-rechte anfrodern?



  • LukazZ schrieb:

    Ich mus gar keine stuerbefehle an die anlage senden. ich muss nur eine bestimmte nummer am telefon eingeben , dann schickt die immer die daten über den parallelen ausgang wenn einer anruft oder angerufen wird.

    komisch gestern war es noch der com-port (also ein serieller)

    LukazZ schrieb:

    Und ob das Programm viel platz brauch oder nicht ist nicht so wichtig. Speicherplatz und cpu kostet ja nicht vile... und wenn es zu wenig wird nehme ich einfach einen etwas größeren mini-pc. zahlen tut schließlich der kunde 😃

    servicewüste deutschland... tut mir leid aber ich krieg beisowas grad hass... leute die sagen sie wäre "spezialisten", tönen was von c++ und linux rum, schiessen mit mücken auf elefanten... und dann "zahlt doch der kunde". falls dir unser kapitalistisches system von angebopt und nachfrage nicht bekannt ist, er muss nicht zahlen...

    LukazZ schrieb:

    Ich habe das mal probiert mit fopen , aber er liefert keine binärdaten sondern NULL und in errno haut er mir immer den EACCESS rein. muss ich vielleicht die parallel-shell in die fstab eintragen!? oder kann ich aus dem programm raus irgendwie root-rechte anfrodern?

    bittewas?!
    was is eine parallel-shell?
    und was soll die in der fstab?
    hat deine isdn anlage etwa ein dateisystem?
    und was willst du mit root rechten? du machst mir angst... du willst ein userspace programm sinnloserweise als root laufen lassen?

    tut mir leid wenn ich jetzt geflamed habe (sorry @ mods)



  • Ob das jetzt der COM-Port oder der serielle Anschluss ist ist doch egal - die sind ja vom prinzip her das selbe und werden in linux auch nicht unterschieden.

    [quote=fallen]und dann "zahlt doch der kunde". falls dir unser kapitalistisches system von angebopt und nachfrage nicht bekannt ist, er muss nicht zahlen... [/quote]
    der kunde ist ein guter bekannter von meinem vater und daher habe ich auch den auftrag. er hat gesagt das er mir matterial zahlt und wenn ich sage er soll das nehmen dann macht er das auch hoffe ich zumindest 😃 . er ist nämlich auch der meinung dass qualität eben seinen preis hat.

    [quote=fallen]was is eine parallel-shell?
    und was soll die in der fstab?
    hat deine isdn anlage etwa ein dateisystem?
    und was willst du mit root rechten? du machst mir angst... du willst ein userspace programm sinnloserweise als root laufen lassen? [/quote]
    parallel-shell ist die shell von dem parallelen port (tty ist unter linux immer eine shell!!!)
    ja, die anlage schickt ja binärdaten über das kabel und die kommen in linux ja in form der datei /dev/ttyS0 an - also muß da ja ein dateisystem vorliegen sonst währen die daten ja in irgendeinem stream oder neztwerk protokoll.
    und root-rechte brauche ich ja wenn der normale user keinen zugriff kriegt (EACES fehler) weil der root hat ja überall zugriff. sicherheitstechnisch ist das auch unbedenklich denn das liegt ja sicher im keller und da kommt keiner ran - außer die telekom wenn einer manipolierte isdn-daten sendet aber das kann man quais auscschließen.

    Ich denke ich werde es so realisieren - schon mal vielen dank für die hifle!

    eine frage bleibt jedoch noch - wie kriege ich die binärdaten sicher in die mysql-tabelle. es könnten ja bytes auftreten die in mysql query-fehler erzeugen. auserdem könnte die packetgröße überschritten werden - avber die kann ich am server ja hochstellen?? gibt es eine escape-funktion für binärdaten? für strings kenne ich diese schon! oder muss ich die selbst schreiben - wnen ja : wie?!?!?!


Anmelden zum Antworten