Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi SMS Server via COM TC35i (https://www.delphipraxis.net/161338-sms-server-via-com-tc35i.html)

Daniel91 29. Jun 2011 12:02

Delphi-Version: 2009

SMS Server via COM TC35i
 
Guten Tag und Hallo! :)

Einleitung:
Bei meinem derzeitigen Projekt handelt sich um ein Programm, mit der Aufgabe eines SMS Servers. Was macht dieser SMS Server? Er empfängt über Ethernet SMS Aufträge und schickt diese dann über eine COM Schnittstelle von
Async Prof. an ein TC35i von Siemens. Dies ist eine grobe Umschreibung, eines sehr komplexen Systems
mit Log Files, Zustandmaschinen, Zwischenspeichern etc. Leider macht mir diese Komplexität es auch unmöglich, Ausschnitte zu posten. Dies müsste aber in erster Linie weniger schlimm sein, es geht mir eher um eine Bestätigung einer Sache die mir aufgefallen ist.

Außerdem noch eine Info vorraus:
Das System ist in Delphi 2007 erstellt worden und ich habe es dann in
2009 neu aufgesetzt! Wärend des wechselns der Delphi Versionen hat sich Inhaltlich eines geändert und dies ist die Serielle Komponente.
################################################## ##

Da ich nun ziemlich nah am Problem bin, möchte ich dieses kurz Umschreiben.

Mein System besteht aus meinem PC, mit einer direkten seriellen Verbindung von 2-3 Meter zum TC35i. Außerdem hängt noch ein Adapter dazwischen welcher
es mir erlaubt mithören zu können. D.h. ich klicke mich mit meinem Laptop ein und lese die empfangenen und gesendeten Daten ab.

Der Inhalt den ich Sende besteht aus dem
at+csca -> Servicecenter
at+cmgf -> Textmode
Sowie dem Problembefehl des SMS Sendens! Dieser wird wie folgt abgesetzt:

at+cmgs="Handnummer",145<cr>Text<ctr+z>
cr = chr(13)
ctrl+z = chr(26)

Wenn dieser Befehl so an das TC35i gesendet wird, ist das auch kein Problem.
Denn es kommt wie es auch sollte auf meinem Handy eine SMS mit dem korrekten Text an.

Nun ist mit wärend des laufenden Betriebes ein Trend aufgefallen:
bei 100 SMS (ca. 1 Tag) werden 10 % zwar verschickt aber es werden
bei dem Text zeichen abgeschnitten. (Wo wir jetzt bei der eigentlichen Frage wären)

D.h. es kommen SMSen an mit Test als Text oder auch welche mit st oder nur t als Text. Ein Kollege von mir hatte bei einem anderem Programm, ein ähnliches Problem das Strings abgeschnitten wurden.

Daher jetzt die Frage, ist einem von euch irgentwas bekannt dazu? Kann mir jemand weiter helfen?

Was mich entgültig verwirrt ist, das wenn ich das ganze im Hyperterminal absetzte der selbe Trend entsteht.

Bei der Änderung kam außerdem folgendes Problem auf:
Die alte Komponente arbeitete mit SendData meine neue mit einem AnsiString:
SendString. Außerdem der noch der Hinweis, der Befehl wird zusammen gesetzt.
D.h. Handynummer und Text sind AnsiStrings.

Der absolute Knüller kommt aber erst :) wer dachte ist ja ganz simpel dein TC35i ist defekt -> Nein, leider nicht :(

Grund: Mit der alten Softwareversion unter 2007 mit der alten komponente funktioniert es dauerhaft sehr gut.

Ich für meinen Teil verzweifel langsam an dem Thema, weil es für mich
einfach nicht mehr Logisch ist. Evtl. gibt mir einer von euch einen Denkanstoß. Danke schonmal im vorraus dafür!

Ansonsten wenn ihr noch irgentwelche Infos benötigt, dann werd ich probieren diese natürlich zu bringen. Einfach hier danach fragen.

Daniel

chrisw 29. Jun 2011 12:10

AW: SMS Server via COM TC35i
 
Welche Komponente zur Ansteuerung der seriellen Schnittstelle nutzt du denn jetzt und welche hast du vorher genutzt ?

(Nutzt du jetzt Async Prof, oder hast du es vorher genutzt ?)

Chris

Daniel91 29. Jun 2011 12:20

AW: SMS Server via COM TC35i
 
Jetzt benutze ich die Async Prof. zu welcher ich verlinkt habe.
Vorher habe ich die Komponente : SerialPortNG benutzt. Finde dazu leider keinen Link.

SerialPortNG:
SendData(Data: pointer, Size: Cardinal)

AsyncPro:
PutString(AnsiString)
alternativ wäre hier noch PutChar(const C:AnsiChar)


Noch eine Info. Ich habe mit der alten Komponente unter 2009 ein
Testprogramm gemacht. Ergebnis: selbe Problem wie oben beschrieben.

-> Hääää Faktor².

chrisw 29. Jun 2011 12:44

AW: SMS Server via COM TC35i
 
Tut mir leid, da kann ich nicht weiterhelfen, ausser den klugen Spruch, nochmal die Parameter
zu überprüfen. (Baudrate, Databits, Stopbits, RTS/CTs ..)

Sorry

Christian

Daniel91 29. Jun 2011 12:53

AW: SMS Server via COM TC35i
 
Trotzdem danke dir... war auch einer meiner ersten Gedanken. Leider passt das alles.

user0815 29. Jun 2011 13:19

AW: SMS Server via COM TC35i
 
Hi,
versuch mal in Hyperterminal die SMS in 2 Teilen zu senden:

1) at+cmgs="Handnummer",145<cr>
2) Text<ctr+z>

Eigentlich müsste nach dem ersten Senden (1) eine Meldung ausgegeben werden, erst dann den zweiten Teil senden.
(zumindest ist es beim: 'Wavecom Fastrack Supreme 10 Quad Band Modem' so, ansonsten werden dort die ersten 8 Zeichen der SMS nicht übertragen)

TC35i_At_Command_Set.pdf
Auszug Seite 164: "After invoking the commands CMGW, CMGS, CMGC wait for the prompt ">" and then start to send text to the module..."

SvB 30. Jun 2011 06:53

AW: SMS Server via COM TC35i
 
Ich hätte folgende Idee: D2007 -> D2009 = Unicode ist dazu gekommen. Ich weiß jetzt nicht wo Du AsyncPro herbekommen hast, aber vielleicht stimmt da mit den Componenten etwas nicht. Da die letzte Version auf Sourceforge von AsyncPro auch schon etwas älter ist, kann ich mir das gut vorstellen. Ich arbeite Alternativ auch mit TComport und das funktioniert unter Unicode-Delphi sehr gut. Wenn ich das richtig überblickt habe, dann brauchst Du ja nicht viel für die Kommunikation über COM und der Umstellungsaufwand sollte sehr klein sein.
Ich würde mal in dieser Richtung ansetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz