0% found this document useful (0 votes)
318 views

SMS Application Using VFP Via IrDA

This document summarizes an SMS application created in Visual FoxPro that allows sending and receiving SMS messages via an infrared (IrDA) connection to a mobile phone. The application uses an SMS object and includes interfaces to read stored SMS messages on the phone, send new messages, and display phone information like the manufacturer, model, and firmware.

Uploaded by

mahe
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
318 views

SMS Application Using VFP Via IrDA

This document summarizes an SMS application created in Visual FoxPro that allows sending and receiving SMS messages via an infrared (IrDA) connection to a mobile phone. The application uses an SMS object and includes interfaces to read stored SMS messages on the phone, send new messages, and display phone information like the manufacturer, model, and firmware.

Uploaded by

mahe
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

*!* SMS Application using VFP via IrDA *!* Created by : Handi Rusli *!* Member Of http://www.fox-id.com *!

* Komunitas Programmer FoxPro Indonesia LOCAL oForm as Form oForm = CREATEOBJECT("FormSMS") oForm.Show(1) RETURN DEFINE CLASS FormSMS AS form DataSession = 2 Height = 440 Width = 527 AutoCenter = .T. Caption = "SMS Application using Visual FoxPro" ADD OBJECT sms as mysms WITH Visible = .F. ADD OBJECT pageframe1 as mypageframe1 ADD OBJECT label1 AS myLabel WITH ; Caption = "Com Port :", ; Height = 17, ; Left = 67, ; Top = 126, ; Width = 60 ADD OBJECT label2 AS myLabel WITH ; FontBold = .T., ; FontName = "Verdana", ; FontSize = 10, ; Caption = "", ; Height = 18, ; Left = 7, ; Top = 416, ; Width = 512 *Caption = "http://www.fox-id.com (Komunitas Programmer FoxPro Indonesia)", ; ADD OBJECT label3 AS myLabel WITH ; Caption = "Baud Rate Settings :", ; Height = 17, ; Left = 13, ; Top = 153, ; Width = 114 ADD OBJECT label4 AS myLabel WITH ; Caption = "(9600,N,8,1) - Default Value", ; Height = 17, ; Left = 225, ; Top = 154, ; Width = 153 ADD OBJECT label5 AS myLabel WITH ; FontBold = .T., ; FontSize = 12, ; Caption = "Try sending SMS to this number, ", ; Height = 22, ; Left = 158, ;

Top = 378, ; Visible = .F., ; Width = 211, ; ForeColor = RGB(255,0,0) ADD OBJECT label6 AS myLabel WITH ; FontBold = .T., ; FontSize = 12, ; Caption = "OnComm Event will tell you that Incoming SMS received :D", ; Height = 22, ; Left = 4, ; Top = 398, ; Visible = .F., ; Width = 518, ; ForeColor = RGB(255,0,0) ADD OBJECT label7 AS myLabel WITH ; FontBold = .T., ; Caption = "* Tested using Nokia 6510 & Nokia 8310 Mobile Phone via IrDA with Windows XP", ; Height = 17, ; Left = 3, ; Top = 99, ; Width = 454, ; ForeColor = RGB(0,0,255) ADD OBJECT edit1 AS editbox WITH ; FontSize = 7, ; Height = 94, ; Left = 3, ; ReadOnly = .T., ; Top = 3, ; Width = 521 ADD OBJECT command1 AS commandbutton WITH ; Top = 138, ; Left = 396, ; Height = 27, ; Width = 108, ; Caption = "Connect" ADD OBJECT text1 AS textbox WITH ; Height = 23, ; InputMask = "##", ; Left = 133, ; Top = 124, ; Width = 30 ADD OBJECT text2 AS textbox WITH ; Height = 23, ; Left = 133, ; Top = 150, ; Width = 87

*!* "For further information, you can visit http://www.forum.nokia.com "+CHR(013)+CHR(013)+; *!* "Best Regards, "+CHR(013)+CHR(013)+; *!* "Handi Rusli" thisform.text1.Value = thisform.sms.CommPort thisform.text2.Value = thisform.sms.settings ENDPROC PROCEDURE command1.Click IF this.Caption="Connect" =MESSAGEBOX("If you are using IrDA, make sure that IrDA Module has been activated in your Mobile Phone"+CHR(013)+; " and Virtual Infrared COM Port has been installed in your PC."+CHR(013)+CHR(013)+; "Press 'OK' if you are ready",48,"Warning") thisform.sms.PortOpen = .t. WITH thisform.pageframe1.page3 .text1.value = thisform.sms.ManufacturerInfo() .text2.value = thisform.sms.ModelInfo() .text3.value = thisform.sms.IMEIInfo() .edit1.value = thisform.sms.FirmwareInfo() ENDWITH thisform.pageframe1.page1.Activate this.Caption="Disconnect" WITH this.Parent STORE .f. to .text1.Enabled, .text2.enabled ENDWITH WITH thisform STORE .t. to .label5.visible,.label6.visible ENDWITH ELSE thisform.sms.PortOpen = .f. this.Caption="Connect" WITH this.Parent STORE .t. to .text1.Enabled, .text2.enabled ENDWITH WITH thisform.pageframe1.page3 STORE "" TO .text1.value,.text2.value,.text3.value,.edit1.value ENDWITH WITH thisform STORE .f. to .label5.visible,.label6.visible ENDWITH ENDIF ENDPROC

ENDDEFINE DEFINE CLASS mypageframe1 as PageFrame TabStyle = 1 Top = 179 Left = 0 Width = 528 Height = 196 ADD OBJECT page1 as mypage1 ADD OBJECT page2 as mypage2 ADD OBJECT page3 as mypage3 ENDDEFINE DEFINE CLASS mypage1 as Page FontBold = .T. Caption = "Read SMS" ADD OBJECT label1 AS myLabel WITH ; Caption = "Inbox No :", ; Height = 17, ; Left = 60, ; Top = 20, ; Width = 56 ADD OBJECT label2 AS myLabel WITH ; Caption = "Pengirim (Sender) :", ; Height = 17, ; Left = 8, ; Top = 46, ; Width = 109 ADD OBJECT label3 AS myLabel WITH ; Caption = "Sent Date :", ; Height = 17, ; Left = 60, ; Top = 69, ; Width = 57 ADD OBJECT label4 AS myLabel WITH ; Caption = "Sent Time :", ; Height = 17, ; Left = 53, ; Top = 92, ; Width = 64 ADD OBJECT label5 AS myLabel WITH ; Caption = "Pesan (Message) :", ; Height = 17, ; Left = 262, ; Top = 18, ; Width = 106 ADD OBJECT spinner1 AS spinner WITH ; Height = 24, ; InputMask = "##", ; KeyboardHighValue = 15, ; KeyboardLowValue = 1, ; Left = 119, ; SpinnerHighValue = 15.00, ; SpinnerLowValue = 1.00, ;

PROCEDURE text1.LostFocus thisform.sms.CommPort=this.Value ENDPROC

PROCEDURE Init PROCEDURE text2.LostFocus SET TALK OFF SET BELL OFF SET CENTURY ON *!* thisform.edit1.Value="This demo is only show how this technology interact with VFP"+CHR(013)+CHR(013)+; thisform.sms.Settings=ALLTRIM(this.Value) ENDPROC

Top = 19, ; Width = 43, ; Value = 1 ADD OBJECT text1 AS textbox WITH ; Height = 23, ; Left = 119, ; ReadOnly = .T., ; Top = 43, ; Width = 134

PROCEDURE command1.Click thisform.sms.deletesms(this.Parent.spinner1.Value) this.Parent.spinner1.InteractiveChange ENDPROC ENDDEFINE DEFINE CLASS mypage2 as Page

ELSE =MESSAGEBOX("Message has NOT been sent",16,"ERROR") ENDIF ENDPROC

Left = 171, ; ReadOnly = .T., ; Top = 68, ; Width = 286 ENDDEFINE

ENDDEFINE DEFINE CLASS myLabel as Label DEFINE CLASS mypage3 as Page FontBold = .T. Caption = "Mobile Phone Info" ADD OBJECT label1 AS myLabel WITH ; Caption = "Manufacturer Info :", ; Height = 17, ; Left = 66, ; Top = 24, ; Width = 102 ADD OBJECT label2 AS myLabel WITH ; Caption = "Model Info :", ; Height = 17, ; Left = 104, ; Top = 48, ; Width = 64 ADD OBJECT label3 AS myLabel WITH ; Caption = "Firmware Info :", ; Height = 17, ; Left = 85, ; Top = 94, ; Width = 83 ADD OBJECT label4 AS myLabel WITH ; Caption = "Serial Number :", ; Height = 17, ; Left = 80, ; Top = 71, ; Width = 88 ADD OBJECT text1 AS textbox WITH ; Height = 23, ; Left = 171, ; ReadOnly = .T., ; Top = 22, ; Width = 286 ADD OBJECT text2 AS textbox WITH ; Height = 23, ; Left = 171, ; ReadOnly = .T., ; Top = 45, ; Width = 286 ADD OBJECT edit1 AS editbox WITH ; Height = 53, ; Left = 171, ; ReadOnly = .T., ; Top = 91, ; Width = 286 ADD OBJECT text3 AS textbox WITH ; Height = 23, ; AutoSize = .T. BackStyle = 0 ENDDEFINE DEFINE CLASS mySMS as Container nTimeOut = 10 CommPort = 4 PortOpen = .f. Settings = "9600,N,8,1" myBuffer = "" Pengirim = "" UdahDiBaca = .t. TglKirim = "" JamKirim = "" Pesan = "" ADD OBJECT oSMS as myOLE PROCEDURE PortOpen_Assign LPARAMETERS newValue this.PortOpen = m.newValue IF this.PortOpen this.oSMS.Settings = this.Settings this.oSMS.InputLen = 0 this.oSMS.CommPort = this.CommPort this.oSMS.Handshaking = 3 && Setting Buffer ENDIF this.oSMS.PortOpen = this.PortOpen IF this.PortOpen *!* Memerintahkan HP/Modem untuk berjalan di Mode Teks this.SendReceiveData("AT+CMGF=1") *!* Memerintahkan HP/Modem untuk mem-"ByPass" SMS yg masuk langsung ke PC (tidak disimpan ke SIM Card) this.SendReceiveData("AT+CNMI=2,2") ENDIF ENDPROC PROCEDURE SendReceiveData LPARAMETERS cString,lRemoveATCommand IF PCOUNT()=1 lRemoveATCommand = .t. ENDIF LOCAL nWaktu as Long, lSendSMS as Boolean WITH this.oSMS STORE 0 TO .Rthreshold,.Sthreshold .InBufferCount = 0 IF ("AT+CMGS=" $ cString) lSendSMS = .t. ELSE lSendSMS = .f. ENDIF .Output = cString + CHR(13)

ADD OBJECT text2 AS textbox WITH ; Height = 23, ; Left = 119, ; ReadOnly = .T., ; Top = 66, ; Width = 134 ADD OBJECT text3 AS textbox WITH ; Height = 23, ; Left = 119, ; ReadOnly = .T., ; Top = 89, ; Width = 134 ADD OBJECT edit1 AS editbox WITH ; Height = 109, ; Left = 262, ; ReadOnly = .T., ; Top = 38, ; Width = 254 ADD OBJECT command1 AS commandbutton WITH ; Top = 116, ; Left = 138, ; Height = 27, ; Width = 84, ; Caption = "Delete" PROCEDURE Activate this.spinner1.InteractiveChange ENDPROC PROCEDURE spinner1.InteractiveChange IF thisform.sms.readsms(this.Value) WITH this.Parent .text1.Value = thisform.sms.pengirim .text2.Value = thisform.sms.tglkirim .text3.value = thisform.sms.jamkirim .edit1.value = thisform.sms.pesan ENDWITH this.Parent.command1.Enabled= .t. ELSE WITH this.Parent STORE "(Empty)" TO .text1.value,.text2.value,.text3.value,.edit1.value ENDWITH this.Parent.command1.Enabled= .F. ENDIF ENDPROC

FontBold = .T. Caption = "Send SMS" ADD OBJECT label1 AS myLabel WITH ; Caption = "Recipient Number :", ; Height = 17, ; Left = 50, ; Top = 23, ; Width = 128 ADD OBJECT label2 AS myLabel WITH ; FontBold = .T., ; Caption = "* (Max. 160 Char(s))", ; Height = 17, ; Left = 167, ; Top = 105, ; Width = 149 ADD OBJECT label3 AS myLabel WITH ; Caption = "Message :", ; Height = 17, ; Left = 100, ; Top = 50, ; Width = 44 ADD OBJECT text1 AS textbox WITH ; Height = 23, ; Left = 167, ; Top = 21, ; Width = 132 ADD OBJECT edit1 AS editbox WITH ; Height = 55, ; Left = 167, ; MaxLength = 160, ; Top = 48, ; Width = 321 ADD OBJECT command1 AS commandbutton WITH ; Top = 127, ; Left = 220, ; Height = 27, ; Width = 84, ; Caption = "Send" PROCEDURE command1.Click IF thisform.sms.sendsms(ALLTRIM(this.Parent.teXT1.Value),ALLTRIM(this. Parent.ediT1.Value)) =MESSAGEBOX("Message has been sent",64,"SMS Application using VFP")

cString = "" nWaktu = SECONDS() + this.nTimeOut DO WHILE (nWaktu>SECONDS()) .and. ; IIF(lSendSMS,!(">" $ cString),(!("OK" $ cString) .and. !("ERROR" $ cString))) IF (.InBufferCount>0) cString = cString + .Input ENDIF ENDDO STORE 1 TO .Rthreshold,.Sthreshold ENDWITH IF lRemoveATCommand cString = SUBSTR(cString,AT(CHR(13),cString),RAT(CHR(13),cString,2)AT(CHR(13),cString)) ENDIF RETURN (cstring) ENDPROC PROCEDURE IMEIInfo RETURN STRTRAN(STRTRAN(this.SendReceiveData("AT+CGSN"),CHR(13),""),CH R(10),"") ENDPROC PROCEDURE ModelInfo RETURN STRTRAN(STRTRAN(this.SendReceiveData("AT+CGMM"),CHR(13),""),C HR(10),"") ENDPROC PROCEDURE ManufacturerInfo RETURN STRTRAN(STRTRAN(this.SendReceiveData("AT+CGMI"),CHR(13),""),CH R(10),"") ENDPROC PROCEDURE FirmwareInfo LOCAL cTemp as String cTemp = this.SendReceiveData("AT+CGMR") DO WHILE LEFT(cTemp,1)=CHR(13) cTemp = SUBSTR(cTemp,2) ENDDO DO WHILE LEFT(cTemp,1)=CHR(10) cTemp = SUBSTR(cTemp,2) ENDDO RETURN (cTemp) ENDPROC PROCEDURE NetworkFieldStrength RETURN (this.SendReceiveData("AT+CSQ")) ENDPROC PROCEDURE SendSMS LPARAMETERS tSMSNum, tMessage LOCAL cString cString = this.SendReceiveData("AT+CMGS=" + ["] + tSMSNum + ["],.f.) cString = this.SendReceiveData(tMessage + CHR(26),.f.) RETURN !("ERROR" $ cString) ENDPROC PROCEDURE DeleteSMS LPARAMETERS lSMSNum RETURN !("ERROR" $ this.SendReceiveData("AT+CMGD=" + TRANSFORM(lSMSNum) + CHR(13)))

ENDPROC OLEClass = "MSCommLib.MSComm.1" PROCEDURE ReadSMS LPARAMETERS tSMSNum LOCAL tChar, i, tRead, lQuoteNum, tDateTime, tData, balik TRY tData = "AT+CMGR=" + TRANSFORM(tSMSNum) + CHR(13) WITH this.oSMS STORE 0 TO .Rthreshold,.Sthreshold .InBufferCount = 0 .Output = tData ENDWITH tData = "" i = SECONDS() + this.nTimeOut DO WHILE (i > SECONDS()) .and. !("OK" $ tData) .and. !("ERROR" $ tData) IF (this.oSMS.InBufferCount > 0) tChar = this.oSMS.Input tData = tData + tChar ENDIF ENDDO STORE 1 TO this.oSMS.Rthreshold, this.oSMS.Sthreshold IF !EMPTY(tData) .and. !("ERROR" $ tData) lQuoteNum = 0 STORE "" TO tRead, tSender, tDateTime, tMessage FOR i = 1 To LEN(tData) tChar = SUBSTR(tData, i, 1) IF tChar = ["] lQuoteNum = lQuoteNum + 1 ENDIF IF (lQuoteNum = 1) .and. !(tChar=["]) tRead = tRead + tChar ENDIF IF (lQuoteNum = 3) .and. !(tChar=["]) tSender = tSender + tChar ENDIF IF (lQuoteNum = 5) .and. !(tChar=["]) tDateTime = tDateTime + tChar ENDIF IF (lQuoteNum = 6) .and. !(tChar=["]) tMessage = tMessage + tChar ENDIF ENDFOR this.UdahDiBaca = (tRead = "REC READ") this.Pengirim = tSender this.TglKirim = LEFT(tDateTime, 8) this.JamKirim = SUBSTR(tDateTime,10,8) tMessage = RIGHT(tMessage,LEN(tMessage)-2) this.Pesan = SUBSTR(tMessage, 1, AT(CHR(13),tMessage) - 1) balik = .t. ENDIF CATCH balik = .f. ENDTRY RETURN (balik) ENDPROC ENDDEFINE DEFINE CLASS myOLE as OLEControl PROCEDURE OnComm IF (this.CommEvent = 2) .and. (this.InBufferCount>0) this.parent.myBuffer = this.Input IF !EMPTY(this.parent.myBuffer) .and. !("ERROR" $ this.parent.myBuffer) lQuoteNum = 0 STORE "" TO tSender, tDateTime, tMessage FOR i = 1 To LEN(this.parent.myBuffer) tChar = SUBSTR(this.parent.myBuffer, i, 1) IF tChar = ["] lQuoteNum = lQuoteNum + 1 ENDIF IF (lQuoteNum = 1) .and. !(tChar=["]) tSender = tSender + tChar ENDIF IF (lQuoteNum = 3) .and. !(tChar=["]) tDateTime = tDateTime + tChar ENDIF IF (lQuoteNum = 4) .and. !(tChar=["]) tMessage = tMessage + tChar ENDIF ENDFOR WITH this.parent .UdahDiBaca = .f. .Pengirim = tSender .TglKirim = LEFT(tDateTime, 8) .JamKirim = SUBSTR(tDateTime,10,8) .Pesan = ALLTRIM(tMessage) =MESSAGEBOX("Sender : "+.Pengirim+CHR(013)+; "Date : "+.tglkirim+CHR(013)+; "Time : "+.jamkirim+CHR(013)+; "Message : "+.pesan,64,"Incoming SMS Received !!",5000) ENDWITH ENDIF ENDIF ENDPROC ENDDEFINE

You might also like