Kann mir jemand sagen wie man hier ein CRLF einfügt:

Ich muss nämlich zuerst
at+cpin="..."
ausführen und dann
at+cgdcont=1,"ip","pinternet.interkom.de"

Der Befehl gehört zum erweiterten Hayes AT BefehlssatzKaeru Gaman hat geschrieben:"at+"?
ist das sicher?
für mich klingt das, als solle es "@cpin" bedeuten...
Code: Alles auswählen
Procedure WriteModemString(Port, Text.s)
ProcedureReturn WriteSerialPortString(Port, Text, #PB_Ascii)
EndProcedure
Procedure.s ReadModemString(Port, Timeout)
Protected StartTime
Protected Result.s
Protected Buffer.b
Protected FoundCRLF
Result = ""
StartTime = ElapsedMilliseconds()
Repeat
If AvailableSerialPortInput(Port)
BytesRead = ReadSerialPortData(Port, @Buffer, 1)
Result + Chr(Buffer)
StartTime = ElapsedMilliseconds()
FoundCRLF = FindString(Result, #CRLF$, 1)
If FoundCRLF
Result = Left(Result, FoundCRLF - 1)
Break
EndIf
EndIf
If ElapsedMilliseconds() - StartTime > Timeout
Break
EndIf
ForEver
ProcedureReturn Result
EndProcedure
Procedure.s ModemCommand(Port, Text.s, Timeout)
Protected Result.s
WriteModemString(Port, Text)
Result = ReadModemString(Port, Timeout)
If Left(Text, Len(Result)) = Result
Result = ReadModemString(Port, Timeout)
EndIf
Result = Trim(Right(Result, Len(Result) - FindString(Result, ":", 1)))
ProcedureReturn Result
EndProcedure
Enumeration
#MODEM_PIN_NO_STATUS_RECEIVED
#MODEM_PIN_READY
#MODEM_PIN_NEED_PIN
#MODEM_PIN_NEED_PUK
#MODEM_PIN_NO_SIMCARD
EndEnumeration
#MODEM_TIMEOUT = 1000
Procedure OpenModem(PortName.s, Bauds, Parity, DataBits, StopBits, HandshakeMode)
Protected Port
Port = OpenSerialPort(#PB_Any, PortName, Bauds, Parity, DataBits, StopBits, HandshakeMode, 1024, 1024)
If IsSerialPort(Port) And Port <> 0
ModemCommand(Port, "ATZ" + #CRLF$, #MODEM_TIMEOUT)
ModemCommand(Port, "ATE1" + #CRLF$, #MODEM_TIMEOUT)
ProcedureReturn Port
EndIf
ProcedureReturn 0
EndProcedure
Procedure IsModem(Port)
ProcedureReturn IsSerialPort(Port)
EndProcedure
Procedure CloseModem(Port)
If IsSerialPort(Port) And Port <> 0
ModemCommand(Port, "ATZ" + #CRLF$, #MODEM_TIMEOUT)
ProcedureReturn CloseSerialPort(Port)
EndIf
EndProcedure
Procedure ModemGetPINStatus(Port)
Protected Text.s
Protected Result
Result = #MODEM_PIN_NO_STATUS_RECEIVED
If IsSerialPort(Port)
Text = UCase(ModemCommand(Port, "AT+CPIN?" + #CRLF$, #MODEM_TIMEOUT))
Select Text
Case "READY"
Result = #MODEM_PIN_READY
Case "SIM PIN"
Result = #MODEM_PIN_NEED_PIN
Case "SIM PUK"
Result = #MODEM_PIN_NEED_PUK
Case "ERROR"
Result = #MODEM_PIN_NO_SIMCARD
EndSelect
EndIf
ProcedureReturn Result
EndProcedure
Procedure ModemTryPIN(Port, PIN.s)
Protected Text.s
Protected Result
Result = 0
If IsSerialPort(Port)
Text = UCase(ModemCommand(Port, "AT+CPIN=" + #DQUOTE$ + PIN + #DQUOTE$ + #CRLF$, #MODEM_TIMEOUT))
If Text = "OK"
Result = 1
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Procedure ModemTryPUK(Port, PUK.s, PIN.s)
Protected Text.s
Protected Result
Result = 0
If IsSerialPort(Port)
Text = UCase(ModemCommand(Port, "AT+CPIN=" + #DQUOTE$ + PUK + #DQUOTE$ + "," + #DQUOTE$ + PIN + #DQUOTE$ + #CRLF$, #MODEM_TIMEOUT))
If Text = "OK"
Result = 1
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Define Port
Port = OpenModem("COM5", 921600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake)
If IsModem(Port)
Select ModemGetPINStatus(Port)
Case #MODEM_PIN_READY
MessageRequester("Error", "PIN was already entered.")
Case #MODEM_PIN_NEED_PIN
PIN.s = InputRequester("PIN needed", "Input your pin here:", "")
If PIN <> ""
If Not ModemTryPIN(Port, PIN)
MessageRequester("Error", "Wrong PIN")
EndIf
EndIf
Case #MODEM_PIN_NEED_PUK
PUK.s = InputRequester("PUK needed", "Input your puk here:", "")
PIN.s = InputRequester("New PIN number", "Input your new pin number here:", "")
If PUK <> ""
If Not ModemTryPUK(Port, PUK, PIN)
MessageRequester("Error", "Wrong PUK")
EndIf
EndIf
Case #MODEM_PIN_NO_SIMCARD
MessageRequester("Error", "No SIM-Card found.")
Default
MessageRequester("Error", "No Modem found.")
EndSelect
CloseModem(Port)
EndIf
Wenn ich mich recht erinnere an meine Probleme mit den Modems damals vor gefühlten 150 Jahren, dann meine ich war es oft notwendig, den Befehl "Warten auf Freizeichen" zu setzen (der entsprechende AT-Befehl weiss ich jetzt nicht mehr)DarkDragon hat geschrieben:... weil die Verbindung vorher schon abbricht.
Ich meinte eigentlich mehr den Verbindungsaufbau an sich bricht ab. Warten auf Freizeichen wäre eher direkt nach dem Verbindungsaufbau. Aber die Initialisierungsbefehle sollten bei mir schon vor allem kommen, bevor jeglicher Verbindungsbefehl gesendet wird.7x7 hat geschrieben:Wenn ich mich recht erinnere an meine Probleme mit den Modems damals vor gefühlten 150 Jahren, dann meine ich war es oft notwendig, den Befehl "Warten auf Freizeichen" zu setzen (der entsprechende AT-Befehl weiss ich jetzt nicht mehr)DarkDragon hat geschrieben:... weil die Verbindung vorher schon abbricht.