For Newbie

Tuesday, 13 September 2011

Accessing SMS with Delphi: Read SMS Using Borland Delphi 7 Exploit Comport Component

Accessing SMS with Delphi: Read SMS Using Borland Delphi 7 Exploit Comport Component (The Basic Concept)
 
This writing will discuss about reading SMS from mobile phone to Personal Computer (PC). Basically, Reading SMS from mobile phone to computer happen in Format Protocol Data Unit( PDU), so that in reading the SMS have to be changed the PDU Form into text Form toward data SMS which is read by Delphi program through serial communication  so that the data can be read directly by people.
Step by step to create Application Accessing SMS with Delphi: Read SMS Using Borland Delphi 7 Exploit Comport Component

To make program for reading the SMS please enter the following component in to Form 1.


No
Component Name Properties Value
Button1 Caption Clear
Button2 Caption Convert PDU to text
Button3 Caption Send To HP
Button4 Caption DisConnect
Button5 Caption Connect
Button6 Caption Set Serial
Edit1 Text ATE1
Memo1 - -
Memo2 - -
Memo3 - -
Comport1 - -
ComLED1 - -

Arrange in such away so that the visualization of the program become as follows:

Picture 1. Reading SMS Application Design using Delphi used Comport Component

Then type source code as follows:

No Component Event Source Code
1 Button1 OnClick Memo1.Clear;
memo2.Clear;
memo3.Clear;
2 Button2 OnClick var smsc, tipe, pengirim, bentuk, skema, tanggal, batas,
isi, s : string;
begin
s := copy(memo2.Text,1,Length(Memo2.Text)-0);
ConvertMSG( s, smsc, tipe, pengirim, bentuk, skema,
tanggal, batas, isi);
Memo3.Lines.Add(tanggal+';dari '+pengirim +': '+#13#10+ isi);
3 Button3 OnClick var str : string;
begin
str := Edit1.Text+#13#10;
Comport1.WriteStr(str);
4 Button4 OnClick ComPort1.Close;
5 Button5 OnClick ComPort1.Open;
6 Button6 OnClick ComPort1.ShowSetupDialog;
IMPORTANT
Don’t forget to :
type the code below in under implementation
const sOK = #13#10'OK';
sERROR = #13#10'ERROR';
function PDU2Text(pdudata: string): string;
var pdu,isi,hasilteks,huruf: string;
i: integer;
m,n,vgeser,sisa,c,d,e,f,panjang: byte;
hasil,dbiner: array[1..9000] of byte;
begin
if length(pdudata)=0 then begin
Result := '';
exit;
end;
pdu := copy(pdudata,3,length(pdudata));
isi:= '';
panjang := length(pdu) div 2;
for i := 1 to panjang do begin
huruf := copy(pdu, i*2 - 1, 2);
dbiner[i] := StrToInt('$' + huruf);
end;
m := 1;
vgeser := 0;
sisa := 0;
n := 1;
while n <= panjang do begin
c := dbiner[n];
d := c shl vgeser;
e := d or sisa;
f := e and $7F;
hasil[m] := f;
Inc(vgeser);
c := dbiner[n];
d := c shr (8-vgeser);
sisa := d;
inc(m);
inc(n);
if vgeser >= 7 then begin
hasil[m] := sisa and $7F;
inc(m);
sisa := 0;
vgeser := 0;
end;
end;
hasilteks := '';
for i := 1 to m - 1 do
hasilteks := hasilteks + chr(hasil[i]);
Result := hasilteks;
end;
procedure ConvertMSG(var datasms,smsc,tipe,pengirim,bentuk,
skema,tanggal,batas,isi: string);
var pdu: string;
p,i: integer;
begin
pdu := datasms;
smsc := '';
p := StrToInt('$' + copy(pdu, 1, 2)) - 1;
pdu := copy(pdu,5,length(pdu)-4);
for i := 1 to p do begin
smsc := smsc + pdu[i*2];
smsc := smsc + pdu[i*2-1];
end;
if smsc[length(smsc)] = 'F' then
smsc := copy(smsc, 1, length(smsc) - 1);
pdu := copy(pdu, p*2+1,length(pdu)-p*2);
tipe := copy(pdu, 1, 2);
pdu := copy(pdu, 3, length(pdu)-2);
pengirim := '';
p := StrToInt('$'+copy(pdu,1,2));
if p mod 2 = 1 then inc(p);
pdu := copy(pdu,5,length(pdu)-4);
for i := 1 to p div 2 do begin
pengirim := pengirim + pdu[i*2];
pengirim := pengirim + pdu[i*2-1];
end;
if pengirim[length(pengirim)] = 'F' then
pengirim := copy(pengirim, 1, length(pengirim) - 1);
pdu := copy(pdu,p+1,length(pdu)-p);
bentuk := copy(pdu,1,2);
pdu := copy(pdu, 3, length(pdu)-2);
skema := copy(pdu,1,2);
pdu := copy(pdu, 3, length(pdu)-2);
tanggal := pdu[6]+pdu[5] + '-' + pdu[4]+pdu[3] + '-' +
pdu[2]+pdu[1] + ' ' +
pdu[8]+pdu[7] + ':' + pdu[10]+pdu[9] + ':' +
pdu[12]+pdu[11];
pdu := copy(pdu, 13, length(pdu)-12);
batas := copy(pdu,1,2);
pdu := copy(pdu, 3, length(pdu)-2);
isi := PDU2Text(pdu);
end;

This is the result of application execution:







Now, try to read all SMS saved in hand phone by type AT Command AT+CMGL=3 and then Click  

Send to HP button
To read the SMS by this Delphi Application, Click on the Translate to Text this button also can be change by type Convert to Text (in the caption properties)

Reference :
www.bengkelprogram.com
Septian Herlan Permana (Student in Electrical Engineering Department , Yogyakarta State University)

 I hope this article can give benefit to the visitors, readers, developer and me. Thanks for visiting and availability for sharing this article by pressing 
Share this on Facebook
or just press like button under this posting

Share on Facebook
Share on Twitter
Share on Google+

Related : Accessing SMS with Delphi: Read SMS Using Borland Delphi 7 Exploit Comport Component