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 |