at commands und Guthaben abfragen

  • Hallo, ich habe ein Skript, welches AT Kommandos an mein USB Nokia Modem sendet. Wenn ich nun mein Guthaben abfrage (AT+CUSD=1,"*101#",15), bekomme ich nur einen Leerstring zurück. Unter Putty bekomme ich aber mein aktuelles Guthaben angezeigt. Weiß jemand Rat & Hilfe.

    Zur Kommunikation benutze ich unter Autoit die CommMG.dll.

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=C:\Users\malecheler\Desktop\workdir\it\arc\favicon.ico
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Res_Comment=Tool versendet SMS via COM-Port
    #AutoIt3Wrapper_Res_Description=mSMSmodem - it-archiv.net
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=www.it-archiv.net
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.8.0
    Date: 15.04.2013
    Author: Marco Lecheler
    Website: http://www.it-archiv.net

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Dieses Script sendet SMS-Nachrichten via GSM GPRS Modem / LAN
    Genauere Informationen auf http://www.it-archiv.net

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <CommMG.au3>
    #include <Array.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Abfragen ob Parameter mitgegeben (mind. 3)
    If $CmdLine[0] > 2 Then
    #region Parameter

    [/autoit] [autoit][/autoit] [autoit]

    ; Parameter 1 entspricht dem COM-Port
    $comport = $CmdLine[1]

    [/autoit] [autoit][/autoit] [autoit]

    ; Parameter 2 entspricht der Telefonnummer (Empfänger)
    $rufnummer = $CmdLine[2]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Variable $msg beinhaltet den Text, welcher versendet wird
    Global $msg

    [/autoit] [autoit][/autoit] [autoit]

    ; Diese Schleife fasst alle kommenden Parameter in einer Variablen zusammen (Parameter 3 bis Parameter n)
    For $i = 3 To $CmdLine[0] Step 1
    ; Dieses if entfernt das erste Leerzeichen, dass sonst entstehen würde..
    If $i = 3 Then
    $msg = $CmdLine[3]
    Else
    $msg = $msg & ' ' & $CmdLine[$i]
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    #endregion Parameter

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region Setzen des COM-Port

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "COM Port wird gesetzt", 2)

    [/autoit] [autoit][/autoit] [autoit]

    $var = 0

    [/autoit] [autoit][/autoit] [autoit]

    ; COM-Port wird auf $comport gesetzt mit der Geschwindigkeit 9600
    _CommSetPort($comport, $var, 9600, 8, 0, 1, 0)
    If @error Then
    MsgBox(16, "mSMSmodem", "COM-Port ist belegt!" & @CRLF & "Bitte überprüfen." & @CRLF & @CRLF & "Programm wird geschlossen.")
    _log("COM-Port bereits belegt!")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion Setzen des COM-Port

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region Status prüfen

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "Status prüfen..", 4)

    [/autoit] [autoit][/autoit] [autoit]

    ; at-Befehl senden
    _CommSendString('AT' & @CR, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion Status prüfen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; at-Befehl senden
    _CommSendString('AT+CUSD=1,"*101#",15' & @CR, 1)
    ;_CommGetString()
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : _CommGetString() = ' & _CommGetString() & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    exit
    #region PIN eingeben

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "SIM-PIN eingeben..", 2)

    [/autoit] [autoit][/autoit] [autoit]

    ; PIN eingeben
    _CommSendString('at+cpin="1234"' & @CR, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion PIN eingeben

    [/autoit] [autoit][/autoit] [autoit]

    #region SMS-Modus setzen

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "Modus setzen..", 2)

    [/autoit] [autoit][/autoit] [autoit]

    ; Modus setzen
    _CommSendString('AT+CMGF=1' & @CR, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion SMS-Modus setzen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region SMS verfassen

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "SMS verfassen..", 2)

    [/autoit] [autoit][/autoit] [autoit]

    ; Befehl zum Verfassen der Nachricht
    _CommSendString('AT+CMGS="+' & $rufnummer & '",145' & @CR, 1)
    #cs
    ; Verfassen der 1. Zeile: --SERVER DOWN--
    _CommSendString('--SERVER DOWN--' & @CR, 1)
    #ce
    ; Verfassen der 2. Zeile: $msg (hier werden die Parameter 3-n eingesetzt)
    _CommSendString($msg & @CR, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Verfassen der 3. Zeile: Datum (Format: DD.MM.YYYY HH:MM
    _CommSendString('Datum: ' & @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion SMS verfassen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region SMS senden

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "SMS senden..", 2)

    [/autoit] [autoit][/autoit] [autoit]

    ; STRG + Z senden
    _CommSendByte(0x1A, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion SMS senden

    [/autoit] [autoit][/autoit] [autoit]

    Else
    ; Ausgabe einer Fehlermeldung, falls Parameter nicht richtig angegeben wurden
    MsgBox(16, "mSMSmodem", "Syntax-Error" & @CRLF & @CRLF & "Syntax: mSMSmodem.exe <com-port> <number without +> <SMS-Text>" & @CR & "Syntax-Example: mSMSmodem.exe 8 491234567 Server: server1")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _log($logtext)
    ; Funktion schreibt Ausgabe in Logdatei
    $loghandle = FileOpen(@ScriptDir & "\smslog.log", 1)
    _FileWriteLog($loghandle, $logtext)
    FileClose($loghandle)
    EndFunc ;==>_log

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    EDit: Gelöst, While Schleife bis ok kommt drumgelegt :D

    2 Mal editiert, zuletzt von fschaef (26. Juli 2014 um 20:12)


  • Schön für dich - und wie sollen wir dir helfen ohne Kenntnis des selbigen? :whistling:

    Sorry, hier, war eigentlich nur ne generelle Frage, ob einer so etwas schon parat hat.

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=C:\Users\malecheler\Desktop\workdir\it\arc\favicon.ico
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Res_Comment=Tool versendet SMS via COM-Port
    #AutoIt3Wrapper_Res_Description=mSMSmodem - it-archiv.net
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=www.it-archiv.net
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.8.0
    Date: 15.04.2013
    Author: Marco Lecheler
    Website: http://www.it-archiv.net

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Dieses Script sendet SMS-Nachrichten via GSM GPRS Modem / LAN
    Genauere Informationen auf http://www.it-archiv.net

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <CommMG.au3>
    #include <Array.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Abfragen ob Parameter mitgegeben (mind. 3)
    If $CmdLine[0] > 2 Then
    #region Parameter

    [/autoit] [autoit][/autoit] [autoit]

    ; Parameter 1 entspricht dem COM-Port
    $comport = $CmdLine[1]

    [/autoit] [autoit][/autoit] [autoit]

    ; Parameter 2 entspricht der Telefonnummer (Empfänger)
    $rufnummer = $CmdLine[2]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Variable $msg beinhaltet den Text, welcher versendet wird
    Global $msg

    [/autoit] [autoit][/autoit] [autoit]

    ; Diese Schleife fasst alle kommenden Parameter in einer Variablen zusammen (Parameter 3 bis Parameter n)
    For $i = 3 To $CmdLine[0] Step 1
    ; Dieses if entfernt das erste Leerzeichen, dass sonst entstehen würde..
    If $i = 3 Then
    $msg = $CmdLine[3]
    Else
    $msg = $msg & ' ' & $CmdLine[$i]
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    #endregion Parameter

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region Setzen des COM-Port

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "COM Port wird gesetzt", 2)

    [/autoit] [autoit][/autoit] [autoit]

    $var = 0

    [/autoit] [autoit][/autoit] [autoit]

    ; COM-Port wird auf $comport gesetzt mit der Geschwindigkeit 9600
    _CommSetPort($comport, $var, 9600, 8, 0, 1, 0)
    If @error Then
    MsgBox(16, "mSMSmodem", "COM-Port ist belegt!" & @CRLF & "Bitte überprüfen." & @CRLF & @CRLF & "Programm wird geschlossen.")
    _log("COM-Port bereits belegt!")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion Setzen des COM-Port

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region Status prüfen

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "Status prüfen..", 4)

    [/autoit] [autoit][/autoit] [autoit]

    ; at-Befehl senden
    _CommSendString('AT' & @CR, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion Status prüfen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; at-Befehl senden
    _CommSendString('AT+CUSD=1,"*101#",15' & @CR, 1)
    ;_CommGetString()
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : _CommGetString() = ' & _CommGetString() & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    exit
    #region PIN eingeben

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "SIM-PIN eingeben..", 2)

    [/autoit] [autoit][/autoit] [autoit]

    ; PIN eingeben
    _CommSendString('at+cpin="1234"' & @CR, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion PIN eingeben

    [/autoit] [autoit][/autoit] [autoit]

    #region SMS-Modus setzen

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "Modus setzen..", 2)

    [/autoit] [autoit][/autoit] [autoit]

    ; Modus setzen
    _CommSendString('AT+CMGF=1' & @CR, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion SMS-Modus setzen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region SMS verfassen

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "SMS verfassen..", 2)

    [/autoit] [autoit][/autoit] [autoit]

    ; Befehl zum Verfassen der Nachricht
    _CommSendString('AT+CMGS="+' & $rufnummer & '",145' & @CR, 1)
    #cs
    ; Verfassen der 1. Zeile: --SERVER DOWN--
    _CommSendString('--SERVER DOWN--' & @CR, 1)
    #ce
    ; Verfassen der 2. Zeile: $msg (hier werden die Parameter 3-n eingesetzt)
    _CommSendString($msg & @CR, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Verfassen der 3. Zeile: Datum (Format: DD.MM.YYYY HH:MM
    _CommSendString('Datum: ' & @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion SMS verfassen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region SMS senden

    [/autoit] [autoit][/autoit] [autoit]

    ; Information für User geben
    TrayTip("mSMSmodem", "SMS senden..", 2)

    [/autoit] [autoit][/autoit] [autoit]

    ; STRG + Z senden
    _CommSendByte(0x1A, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe in Log schreiben
    _log(_CommGetString())

    [/autoit] [autoit][/autoit] [autoit]

    #endregion SMS senden

    [/autoit] [autoit][/autoit] [autoit]

    Else
    ; Ausgabe einer Fehlermeldung, falls Parameter nicht richtig angegeben wurden
    MsgBox(16, "mSMSmodem", "Syntax-Error" & @CRLF & @CRLF & "Syntax: mSMSmodem.exe <com-port> <number without +> <SMS-Text>" & @CR & "Syntax-Example: mSMSmodem.exe 8 491234567 Server: server1")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _log($logtext)
    ; Funktion schreibt Ausgabe in Logdatei
    $loghandle = FileOpen(@ScriptDir & "\smslog.log", 1)
    _FileWriteLog($loghandle, $logtext)
    FileClose($loghandle)
    EndFunc ;==>_log

    [/autoit] [autoit][/autoit] [autoit][/autoit]
    • Offizieller Beitrag

    OK, dein Problem kann ich mangels Umgebung nicht näher untersuchen.
    Aber mal ein Tipp:

    Zitat von AutoIt Hilfe

    If you would like to see the entire commandline string passed to an AutoIt executable, then use $CmdLineRaw for the entire parameter string.

    Spart dir die Schleife um die Kommandos wieder zusammenzufügen. ;)