Fax/Modem über RS232 ansteuern



  • Hi,

    Ich hab ein kleines Schulprojekt, mit dem Ziel das z.B. ein Text der in einer Konsole eingegeben wurde, per Fax/Modem das an meiner RS232 schnittstelle angeschlossen ist einen Fax zu schicken.

    Ich habe es endlich soweit geschafft den Comport ansteuern zu können, sprich lesen oder schreiben, was ne ziemliche hürde war, aber endlich gepackt habe. Also ich kann nun Text nachrichten zwischen 2 PC über RS232 austauschen *stolz* 😃

    Meine 1. Frage:
    Wie funktioniert das nun mit den AT-Kommandos?
    Muss ich einen String an das Fax/Modem schicken wo das AT-Kommando drinsteht und die Textnachricht, oder muss zuerst nur ein AT-Kommando zum einwählen geschickt werden und dann ein 2tes Kommando mit dem Text?

    Beispiel: "ATD[Faxnummer] [Text]" als ein String oder wie?

    Ich verstehe nicht ganz wie ich mit diesen Kommandos umgehen muss.

    2. Frage:
    Ist es unsinnig das lesen und schreiben auf den Comport per Thread zu machen?
    Also getrennt und nicht beides in einer schlaufe.
    Ich dachte z.B. für den fall das plötzlich das Senden nicht mehr funktioniert, aber das lesen weiterhin läuft, da durch thread getrennt ist.

    Ich programmiere das in C und mit Linux.

    Über hilfe oder Denkanstoss wär ich very amused.

    MfG sf666

    PS: Google und die Suchfunktion wurden schon benutzt, dennoch hab ich nichts gefunden das mir geholfen hat, kann natürlich sein das ich nach falschen Begriffen gesucht habe.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI 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.



  • Zu Deiner ersten Frage: Die AT-Kommandos sind kein "echter" Standard. Sie unterscheiden sich je nach Modem-Hersteller. Ein bestimmter Satz an grundlegenden Befehlen sollte jedoch immer funktionieren, zu Beispiel der Verbindungsaufbau mit

    ATDT [i]Telefonnummer[/i]\r\n
    

    So wie ich das verstehe, möchtest Du allerdings keine normale Datenverbindung aufbauen, sondern ein Fax versenden. Das ist etwas komplizierter, zumal Du die zu sendende Grafik erst einmal ins G3-Format umwandeln musst. (Text lässt sich meines Wissens nicht direkt übertragen, sondern muss erst in eine Grafik umgewandelt werden.)

    Zu der zweiten Frage: Ich würde auf keinen Fall mit Threads arbeiten, sondern mit der Funktion select(), die mit Angabe eines Timeouts auf Daten wartet. Nach Erreichen des Timeouts kannst Du dann erneut warten, oder Daten senden, je nach dem, was Dein Programm machen soll.


Log in to reply