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
#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 Version: 3.3.8.0
Date: 15.04.2013
Author: Marco Lecheler
Website: http://www.it-archiv.net
Script Function:
Dieses Script sendet SMS-Nachrichten via GSM GPRS Modem / LAN
Genauere Informationen auf http://www.it-archiv.net
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#include <CommMG.au3>
#include <Array.au3>
#include <File.au3>
; Abfragen ob Parameter mitgegeben (mind. 3)
If $CmdLine[0] > 2 Then
#region Parameter
; Parameter 1 entspricht dem COM-Port
$comport = $CmdLine[1]
; Parameter 2 entspricht der Telefonnummer (Empfänger)
$rufnummer = $CmdLine[2]
; Variable $msg beinhaltet den Text, welcher versendet wird
Global $msg
; 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
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)
$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
; Rückgabe in Log schreiben
_log(_CommGetString())
#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)
; at-Befehl senden
_CommSendString('AT' & @CR, 1)
; Rückgabe in Log schreiben
_log(_CommGetString())
#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
; Information für User geben
TrayTip("mSMSmodem", "SIM-PIN eingeben..", 2)
; PIN eingeben
_CommSendString('at+cpin="1234"' & @CR, 1)
; Rückgabe in Log schreiben
_log(_CommGetString())
#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)
; Modus setzen
_CommSendString('AT+CMGF=1' & @CR, 1)
; Rückgabe in Log schreiben
_log(_CommGetString())
#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)
; 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)
; Verfassen der 3. Zeile: Datum (Format: DD.MM.YYYY HH:MM
_CommSendString('Datum: ' & @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN, 1)
; Rückgabe in Log schreiben
_log(_CommGetString())
#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)
; STRG + Z senden
_CommSendByte(0x1A, 1)
; Rückgabe in Log schreiben
_log(_CommGetString())
#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")
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
EDit: Gelöst, While Schleife bis ok kommt drumgelegt