![]() |
SMS Senden über AT-Kommandos
arbeite wieder mal an meinen AT Commander projekt (Handyverwaltung über AT Kommandos) und hab Probleme beim senden von SMS
Delphi-Quellcode:
Das Log vom PortMon sieht so aus
procedure TForm1.SendSMSClick(Sender: TObject);
begin s := 'AT+CMGS=' + inttostr(Length(Edit8.Text) div 2-1); //PDU Länge senden SendCMD2; Memo5.Lines.Add(Result1); s := Edit8.Text+ #$1A; // enthält PDU SendCMD2; Memo5.Lines.Add(Result1); end; Zitat:
Ankommen tut aber nix Comport
Delphi-Quellcode:
function TForm1.SetupCOMPort: Boolean;
const RxBufferSize = 8192; TxBufferSize = 8192; var DCB: TDCB; Config: string; CommTimeouts: TCommTimeouts; begin Result := True; if not SetupComm(ComFile, RxBufferSize, TxBufferSize) then Result := False; if not GetCommState(ComFile, DCB) then Result := False; Config := 'baud=' + (iComBaud) + ' parity=n data=8 stop=1'; if not BuildCommDCB(@Config[1], DCB) then Result := False; if not SetCommState(ComFile, DCB) then Result := False; with CommTimeouts do begin PurgeCom(PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or PURGE_RXCLEAR); ReadIntervalTimeout := 20; ReadTotalTimeoutMultiplier := 1; ReadTotalTimeoutConstant := 200; WriteTotalTimeoutMultiplier := 0; WriteTotalTimeoutConstant := 0; {ReadIntervalTimeout := 15; ReadTotalTimeoutMultiplier := 0; ReadTotalTimeoutConstant := 1000; WriteTotalTimeoutMultiplier := 0; WriteTotalTimeoutConstant := 1000; } end; if not SetCommTimeouts(ComFile, CommTimeouts) then Result := False; PurgeCom(PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or PURGE_RXCLEAR); end; function TForm1.PurgeCom(mode:Dword): boolean; //function begin result := PurgeComm(ComFile,mode); end; Portmon Log Zitat:
|
Re: SMS Senden über AT-Kommandos
Zitat:
|
Re: SMS Senden über AT-Kommandos
Cr LF? damit kann ich grad nix anfangen
|
Re: SMS Senden über AT-Kommandos
CR: Carriage Return -> Wagenrücklauf.
LF: Line Feed -> Zeilenvorschub. Diese Ausdrücke kommen noch der Schreibmaschinentechnik. Um eine neue Zeile anzufangen, war es nötig den Wagen mit dem Papier an den Zeilenanfang zurückzufahren (Carriage return) und die Walze eine Zeile weiterzudrehen (Line feed). In der Computertechnik wurden daraus entsprechende Steuerzeichen. Allerdings Hand habt jedes Betriebssystem eine neue Zeile anders. Unter Windows ist ein CR und ein LF nötig. Unter Linux reicht ein LF und ein MAC OS nimmt ein CR, glaube ich. Deswegen ist es manchmal nötig Textdateien zu konvertieren, um die Zeilenumbrüche wieder herzustellen. Diese Steuerzeichen werden auch bei manchen Protokollen zur Steuerumng von Hardware benutzt, um eine Befehlszeile abzuschliessen. Du müsstest jetzt mal gucken, wie bei deinem Protokoll eine Befehlszeile angeschlossen werden muss. |
Re: SMS Senden über AT-Kommandos
Achso ihr meint
Delphi-Quellcode:
ist dabei aber auch ohne gehts net hatte ich schon versucht
#13 #10
Delphi-Quellcode:
Procedure TForm1.SENDcmd2;
var BytesWritten: DWORD; d: array[1..200] of Char; BytesRead: DWORD; i: Integer; begin s := s + #13#10; WriteFile(ComFile, s[1], Length(s), BytesWritten, nil); // Result1 := ''; if not ReadFile(ComFile, d, SizeOf(d), BytesRead, nil) then begin StatusBar.Panels[0].text:='Nicht Verbunden'; exit; end; s := ''; for i := 1 to BytesRead do s := s+d[I]; Result1 := s; end; |
Re: SMS Senden über AT-Kommandos
Nicht ohne. Entwerder CR und LF oder eben nur eins von beiden. Aber das sollte auch in den Protokoll-Spezifikationen stehen.
|
Re: SMS Senden über AT-Kommandos
Also bei denen Modems die Ich bisver vertüddelt hab war es immer #13#10 (also beides)
Schau mal unter google: send sms with at commands ---> ![]() Da gibts ein relativ gutes Tutorial welches du unter HyperTerminal durchspielen kannst und es dann mit Delphi probieren kannst. Und somit komm ich zu meiner 2. Frage: Hast du deine Kommandos schon mal mit dem Hyperterminal eingetippt währent Portmon lief um nen direkten Vergleich zu haben? :stupid: Mfg |
Re: SMS Senden über AT-Kommandos
nur eins verwenden bringt auch nix
mit dem Hyper Terminal komm ich gar nicht zurecht ich kann nicht einfach eintippen muss es reinkopieren dann dauert es ne halbe stunde bis ich da error stehen hab porteinstellungen nehme ich die selben |
Re: SMS Senden über AT-Kommandos
Probier mal den Code von mir und dann lad dir Docklight runter. Das ist ein 1A Spitzenklasse Terminalprogramm.
Mfg Tobi |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Es geht primär um Delphi. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz