Membuat Sms Gateway Dengan Mscomm Dan Port Detection

22
Membuat SMS GATEWAY dengan MSCOMM dan PORT DETECTION 12:54 PM agus canova 3 comments Email This BlogThis! Share to Twitter Share to Facebook Sekilas tentang sms gateway Layanan pesan singkat atau Surat masa singkat (bahasa Inggris: Short Message Service disingkat SMS) adalah sebuah layanan yang dilaksanakan dengan sebuah telepon genggam untuk mengirim atau menerima pesan-pesan pendek. Pada mulanya SMS dirancang sebagai bagian daripada GSM, tetapi sekarang sudah didapatkan pada jaringan bergerak lainnya termasuk jaringan UMTS. Sebuah pesan SMS maksimal terdiri dari 140 bytes, dengan kata lain sebuah pesan bisa memuat 140 karakter 8-bit, 160 karakter 7-bit atau 70 karakter 16-bit untuk bahasa Jepang, bahasa Mandarin dan bahasa Korea yang memakai Hanzi (Aksara Kanji / Hanja). Selain 140 bytes ini ada data-data lain yang termasuk. Adapula beberapa metode untuk mengirim pesan yang lebih dari 140 bytes, tetapi seorang pengguna harus membayar lebih dari sekali. SMS bisa pula untuk mengirim gambar, suara dan film. SMS bentuk ini disebut MMS. Pesan-pesan SMS dikirim dari sebuah telepon genggam ke pusat pesan (SMSC dalam bahasa Inggris), di sini pesan disimpan dan mencoba mengirimnya selama beberapa kali. Setelah sebuah waktu yang telah ditentukan, biasanya 1 hari atau 2 hari, lalu pesan dihapus. Seorang pengguna bisa mendapatkan konfirmasi dari pusat pesan ini. SMS Gateway merupakan pintu gerbang bagi penyebaran Informasi dengan menggunakan SMS. Anda dapat menyebarkan pesan ke

description

tata cara membuat

Transcript of Membuat Sms Gateway Dengan Mscomm Dan Port Detection

Page 1: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

Membuat SMS GATEWAY dengan MSCOMM dan PORT DETECTION

12:54 PM agus canova 3 comments Email This BlogThis! Share to Twitter Share to Facebook

Sekilas tentang sms gatewayLayanan pesan singkat atau Surat masa singkat (bahasa Inggris: Short Message Service disingkat SMS) adalah sebuah layanan yang dilaksanakan dengan sebuah telepon genggam untuk mengirim atau menerima pesan-pesan pendek. Pada mulanya SMS dirancang sebagai bagian daripada GSM, tetapi sekarang sudah didapatkan pada jaringan bergerak lainnya termasuk jaringan UMTS.

Sebuah pesan SMS maksimal terdiri dari 140 bytes, dengan kata lain sebuah pesan bisa memuat 140 karakter 8-bit, 160 karakter 7-bit atau 70 karakter 16-bit untuk bahasa Jepang, bahasa Mandarin dan bahasa Korea yang memakai Hanzi (Aksara Kanji / Hanja). Selain 140 bytes ini ada data-data lain yang termasuk. Adapula beberapa metode untuk mengirim pesan yang lebih dari 140 bytes, tetapi seorang pengguna harus membayar lebih dari sekali.SMS bisa pula untuk mengirim gambar, suara dan film. SMS bentuk ini disebut MMS.Pesan-pesan SMS dikirim dari sebuah telepon genggam ke pusat pesan (SMSC dalam bahasa Inggris), di sini pesan disimpan dan mencoba mengirimnya selama beberapa kali. Setelah sebuah waktu yang telah ditentukan, biasanya 1 hari atau 2 hari, lalu pesan dihapus. Seorang pengguna bisa mendapatkan konfirmasi dari pusat pesan ini.

SMS Gateway merupakan pintu gerbang bagi penyebaran Informasi dengan menggunakan SMS. Anda dapat menyebarkan pesan ke ratusan nomor secara otomatis dan cepat yang langsung terhubung dengan database nomor-nomor ponsel saja tanpa harus mengetik ratusan nomor dan pesan di ponsel anda karena semua nomor akan diambil secara otomatis dari database tersebut. Selain itu, dengan adanya SMS Gateway anda dapat mengcustomisasi pesan-pesan yang ingin dikirim. Dengan menggunakan program tambahan yang dapat dibuat sendiri, pengirim pesan dapat lebih fleksibel dalam mengirim berita karena biasanya pesan yang ingin

Page 2: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

dikirim berbeda-beda untuk masing-masing penerimanya.

SMS Gateway adalah jenis sms dua arah. Menariknya bahwa semua tarif yang diberlakukan adalah tarif sms normal sesuai dengan apa yang diberlakukan oleh operator. Karena sifatnya yang dua arah, maka jenis sms ini sangat cocok digunakan sebagai SMS Center sebuah organisasi atau perusahaan dalam rangka meningkatkan kualitas komunikasi antara anggota komunitas organisasi atau pegawai di dalam perusahaan.

Selain itu, dengan adanya SMS Gateway, Anda dapat mengatur pesan-pesan yang ingin dikirim. Dengan menggunakan program tambahan yang dapat dibuat sendiri, pengiriman pesan dapat lebih fleksibel dalam mengirim berita karena biasanya pesan yang ingin dikirim berbeda-beda untuk masing-masing penerimanya (kustomisasi pesan).

Kebutuhan HardwareUntuk kebutuhan SMS Gateway tidak terlalu belebihan dan juga fleksibel karena bisa dibuat dengan :1. PC maupun Notebook. Yang mutlak dibutuhkan adalah sebuah komputer tentunya ada USB atau port serial COM2. Sebuah ponsel atau modem yang mendukung AT Command3. Kabel data (Kabel berantarmuka serial yang dapat menghubungi ponsel dengan PC) atau dapat munggunakan InfraRed dan piranti lunak sebagai SMS Gateway.

Untuk menggunakan InfraRed anda membutuhkan sebuah ponsel yang juga memiliki fasilitas tsb, tapi tidak dianjurkan untuk kebutuhan SMS gateway karena komunikasi dengan InfraRed tidak terlalu baik (jika tergeser gampang putus).

Kebutuhan SoftwareDisini penulis menggunakan bahasa pemrograman Visual Basic 6.0 dan untuk pengertian perintah yang dipakai menggunakan AT Command. AT Command adalah perintah-perintah yang digunakan dalam komunikasi dengan serial port. Dengan AT Command kita dapat mengetahui vendor dari Handphone yang digunakan, kekuatan sinyal, membaca pesan yang ada pada SIM Card, megirim pesan, mendeteksi pesan SMS baru yang masuk secara otomatis, menghapus pesan pada SIM Card dan masih banyak lagi.

Dalam program SMS Gateway yang akan kita buat nanti, tidak semua perintah AT Command digunakan. Kita hanya menggunakan beberapa perintah AT yang ada hubungannya dengan sistem kerja dari program SMS Gateway. Adapun perintah yang akan digunakan adalah sebagai berikut :

AT Command - Keterangan

Page 3: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

AT Mengecek apakah Handphone telah terhubungAT+CMGF Untuk menetapkan format mode dari terminalAT+CSCS Untuk menetapkan jenis encodingAT+CNMI Untuk mendeteksi pesan SMS baru masuk secara otomatisAT+CMGL Membuka daftar SMS yang ada pada SIM CardAT+CMGS Mengirim pesan SMSAT+CMGR Membaca pesan SMSAT+CMGD Menghapus pasan SMSATE1 Mengatur ECHOATV1 Mengatur input dan output berupa naskahAT+CGMI Mengecek Merek HPAT+CGMM Mengecek Seri HPAT+CGMR Mengecek Versi Keluaran HPAT+CBC Mengecek BateraiAT+CSQ Mengecek Kualitas SinyalAT+CCLK? Mengecek Jam (waktu) pada HPAT+CALM=< n > Mengecek Suara/dering HP saat di Telepon (ada Telepon Masuk)

‘n’ adalah adalah angka yang menunjukkan jenis dering0 = berdering1 dan 2 = Silent (Diam)

AT^SCID Mengecek ID SIM CARDAT+CGSN Mengecek Nomor IMEIAT+CLIP=1 Menampilkan nomor telepon pemanggilAT+CLCC Menampilkan nomor telepon yang sedang memanggilAT+COPN Menampilkan Nama Sumua Operator di duniaAT+COPS? Menampilkan nama operator dari SIM yang digunakanAT+CPBR=< n > Membaca nomor telepon yang disimpan pada buku telepon (SIM CARD)‘n’ adalah nomor urut penyimpananAT+CPMS=< md > Mengatur Memori dari HP‘md’ adalah memori yang digunakanME = Memori HPSM = Memori SIM CARD

Langkah-langkah pengcodingan:Nah sekarang buka Program Microsoft Visual Basic Anda dan ikuti langkah berikut ini:1. Buka aplikasi VB 6 anda dan pilih standard exe lalu open2. Tambahkan 1 modul dengan cara klik menu project - add module lalu tambahkan koding dibawah ini :

Page 4: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

Option Explicit

Public Function RemoveInternationalDiallingCode _(ByVal tTelNumber As String) As StringRemoveInternationalDiallingCode = "0" & Mid(tTelNumber, 4)End Function

Public Function GetSMSNum(ByVal tSMSNotification As String) As StringDim lCRPos As Long

lCRPos = InStrRev(tSMSNotification, vbCr)If lCRPos > 0 Then GetSMSNum = Mid(tSMSNotification, lCRPos - 2, 2)If Left(GetSMSNum, 1) = "," Then GetSMSNum = Right(GetSMSNum, 1)End Function

Public Function ReadSMS(comms As MSComm, _ByVal tSMSNum As String, tMessage As String, _tSender As String, tDate As String, _tTime As String, bRead As Boolean) As BooleanDim tChar As String * 1Dim i As LongDim tRead As StringDim lQuoteNum As LongDim tDateTime As StringDim tData As String

Const TIMEOUT = 10000On Error GoTo ErrHandler

tData = "AT+CMGR=" & tSMSNum & vbCrcomms.InBufferCount = 0comms.Output = tDatatData = ""

i = timeGetTimeDo While timeGetTime - i <= TIMEOUT And InStr(tData, "OK" & vbCrLf) = 0 And InStr(tData, "ERROR" & vbCrLf) = 0DoEventsIf comms.InBufferCount > 0 ThentChar = comms.InputtData = tData & tCharEnd IfLoop

Page 5: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

If InStr(tData, "ERROR") = 0 And tData <> "" ThenFor i = 1 To Len(tData)tChar = Mid(tData, i, 1)If tChar = """" Then lQuoteNum = lQuoteNum + 1If lQuoteNum = 1 And tChar <> """" Then tRead = tRead & tCharIf lQuoteNum = 3 And tChar <> """" Then tSender = tSender & tCharIf lQuoteNum = 5 And tChar <> """" Then tDateTime = tDateTime & tCharIf lQuoteNum = 6 And tChar <> """" Then tMessage = tMessage & tCharNext i

bRead = (tRead = "REC READ")tDate = Left(tDateTime, 8)tTime = Mid(tDateTime, 10, 8)tMessage = Mid(tMessage, 3)tMessage = Mid(tMessage, 1, InStr(tMessage, vbCr) - 1)ReadSMS = TrueEnd IfExit Function

ErrHandler:ReadSMS = FalseEnd Function

Public Function DeleteAllSMSes(comms As MSComm) As BooleanDim i As Long

For i = 1 To 15DeleteAllSMSes = InStr(TransmitAndReceiveData(comms, "AT+CMGD=" & i & vbCr), "OK")Next iEnd Function

Public Function DeleteSMS(comms As MSComm, ByVal lSMSNum As Long) As BooleanDeleteSMS = InStr(TransmitAndReceiveData(comms, "AT+CMGD=" & lSMSNum & vbCr), "OK")End Function

Public Function SendSMS(comms As MSComm, ByVal tSMSNum As String, ByVal tMessage As String) As BooleanSendSMS = InStr(TransmitAndReceiveData(comms, "AT+CMGS=" & """" & tSMSNum & """" & vbCr & tMessage & Chr(26)), "OK")End Function

Page 6: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

Public Function TestModem(comms As MSComm) As StringTestModem = TransmitAndReceiveData(comms, "AT")End Function

Public Function ManufacturerInfo(comms As MSComm) As StringManufacturerInfo = TransmitAndReceiveData(comms, "AT+CGMI")End Function

Public Function ModelInfo(comms As MSComm) As StringModelInfo = TransmitAndReceiveData(comms, "AT+CGMM")End Function

Public Function FirmwareInfo(comms As MSComm) As StringFirmwareInfo = TransmitAndReceiveData(comms, "AT+CGMR")End Function

Public Function IMEIInfo(comms As MSComm) As StringIMEIInfo = TransmitAndReceiveData(comms, "AT+CGSN")End Function

Public Function IMSIInfo(comms As MSComm) As StringIMSIInfo = TransmitAndReceiveData(comms, "AT+CIMI")End Function

Public Function EF_CCIDInfo(comms As MSComm) As StringEF_CCIDInfo = TransmitAndReceiveData(comms, "AT+CCID")End Function

Public Function NetworkRegStatus(comms As MSComm) As StringNetworkRegStatus = TransmitAndReceiveData(comms, "AT+CREG?")End Function

Public Function AvailablePLMNs(comms As MSComm) As StringAvailablePLMNs = TransmitAndReceiveData(comms, "AT+COPS?")End Function

Public Function NetworkFieldStrength(comms As MSComm) As StringNetworkFieldStrength = TransmitAndReceiveData(comms, "AT+CSQ")

Page 7: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

End Function

Public Function MainCellMainParams(comms As MSComm) As StringMainCellMainParams = TransmitAndReceiveData(comms, "AT+CCED=0")End Function

Public Function TransmitAndReceiveData(comms As MSComm, ByVal tData As String) As StringDim lTime As Long

Const TIMEOUT = 10000tData = tData & vbCr

With comms.InBufferCount = 0.Output = tDatatData = ""

lTime = timeGetTimetData = ""Do While timeGetTime - lTime <= TIMEOUT And InStr(tData, "OK") = 0 And InStr(tData, "ERROR" & vbCrLf) = 0DoEventsIf .InBufferCount > 0 Then tData = tData & .InputLoopEnd With

TransmitAndReceiveData = tDataEnd Function

4. Tambahkan komponen mscomm punyanya microsoft5. Set boudrate dan lainnya sesuai dengan setingan HP atau modem anda lalu pada form load isikan perintah inisialisasi modem/hp.6. Silahkan test send sms dengan menggunakan fungsi SendSMS dan silahkan coba-coba fungsi lainnya.7. Selamat mencoba.

Mendeteksi Port Modem Secara Otomatisuntuk mengetahui port modem Anda lakukan langkah di bawah ini:

Page 8: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

1. Klik tombol start (sebelah kiri bawah)2. Selanjutnya klik Settings >> Control Panel >> System3. Klik tab Hardware Klik tombol Device Manager4. Klik Node Ports (COM & LPT)5. Carilah di sana akan ada port modem Wavecom Anda.

Sungguh merepotkan sekali, setiap kali port modemnya berubah kita harus selalu mengulangi dan mengulangi langkah-langkah di atas. Mulai saat ini, tinggalkan cara di atas, dan beralihlah pada deteksi port modem secara otomatis.Adapun kode untuk mendeteksi port modem secara otomatis menggunakan VB6 adalah sebagai berikut: 

Deteksi port modem secara otomatisOption Explicit

Dim strBuffer As StringDim intPortNumber As String

Private Sub Command2_Click() On Error Resume Next Dim i As Integer For i = 1 To 20 If MSComm1.PortOpen Then MSComm1.PortOpen = False intPortNumber = i MSComm1.CommPort = i MSComm1.PortOpen = True MSComm1.Output = "AT" & vbCrLf Wait Me, 50 NextEnd Sub

Private Sub Form_Load() With MSComm1 .Settings = "115200,n,8,1" .Handshaking = comRTS .RTSEnable = True .DTREnable = True .RThreshold = 1 .SThreshold = 1 .InputMode = comInputModeText .InputLen = 0 End WithEnd Sub

Private Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen = True Then MSComm1.PortOpen = False EndEnd Sub

Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive

Page 9: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

strBuffer = strBuffer & MSComm1.Input End Select Do strBuffer = strBuffer & MSComm1.Input Loop While MSComm1.InBufferCount If InStr(1, strBuffer, "OK") > 0 Then Caption = "COM" & intPortNumber Text1.Text = intPortNumber End IfEnd Sub

Menambahkan Fitur Auto Reply

Adapun contoh kode VB6 membalas SMS otomatis adalah seperti di bawah ini: 

Option Explicit

Dim strBuffer As StringDim blnFirstLoad As Boolean

Private Sub Command1_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False With MSComm1 .PortOpen = True .Output = "AT+CMGS=" & Chr(34) & TxtNumber.Text & Chr(34) & vbCrLf .Output = TxtMessage.Text & Chr(26) End WithEnd Sub

Private Sub Form_Load() With MSComm1 .CommPort = 7 'port disesuaikan atau beri kode auto detect port modem .Settings = "115200,N,8,1" .Handshaking = comRTS .RTSEnable = True .DTREnable = True .RThreshold = 1 .SThreshold = 1 .NullDiscard = True .InputMode = comInputModeText .InputLen = 0 .PortOpen = True End WithEnd Sub

Private Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen = True Then

Page 10: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

MSComm1.PortOpen = False End IfEnd Sub

Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive strBuffer = strBuffer & MSComm1.Input Do strBuffer = strBuffer & MSComm1.Input Loop While MSComm1.InBufferCount If InStr(1, strBuffer, "+CMGR") Then If InStr(1, strBuffer, "OK") Then Text1.Text = strBuffer End If End If If InStr(1, strBuffer, "+CMTI") > 0 Then If Right(strBuffer, 1) = vbLf Then Dim s() As String s = Split(strBuffer, ",") Debug.Print s(UBound(s)) ReadSMSByIndex Trim$(s(UBound(s))) Delay 1 Command1_Click 'Auto reply strBuffer = "" End If End If End SelectEnd Sub

Private Sub ReadSMSByIndex(Index As Integer) strBuffer = "" MSComm1.Output = "AT+CMGR=" & Index & vbCrLf 'baca SMS yang berada di index ke-1End Sub

Private Sub Delay(ByVal HowLong As Date) Dim endDate As Date endDate = DateAdd("s", HowLong, Now) While endDate > Now DoEvents WendEnd Sub

Mengirim SMS Disertai Verifikasi Terkirim - VB Source Code

Option Explicit

Dim strBuffer As String

Page 11: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

Private Sub Command1_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False With MSComm1 .CommPort = 7 .Settings = "115200,N,8,1" .Handshaking = comRTS .RTSEnable = True .DTREnable = True .RThreshold = 1 .SThreshold = 1 .InputMode = comInputModeText .InputLen = 0 .PortOpen = True End With MSComm1.Output = "AT+CMGS=" & Chr(34) & TxtNumber.Text & Chr(34) & vbCrLf Delay 1 MSComm1.Output = TxtMessage.Text & Chr(26) If WaitForSuccess Then MsgBox "SMS telah terkirim", vbInformation + vbOKOnly Else MsgBox "SMS gagal terkirim", vbCritical, "SMS Gagal" End If End Sub

Private Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End IfEnd Sub

Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive strBuffer = strBuffer & MSComm1.Input End Select Debug.Print strBufferEnd Sub

Private Function WaitForSuccess() As Boolean Dim i As Integer Dim strInput As String Dim strPart As String Dim c As String, b As String For i = 1 To 5 Do Delay 1 c = strBuffer strBuffer = "" If c = "" Then Exit Do b = strInput & c Loop strPart = b

Page 12: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

strInput = strInput & strPart If InStr(1, strInput, vbCrLf & "OK" & vbCrLf) > 0 Then Exit For If strPart = "" Then Delay 1 End If Next WaitForSuccess = InStr(1, strInput, vbCrLf & "OK" & vbCrLf) > 0End Function

Private Sub Delay(ByVal HowLong As Date) Dim endDate As Date endDate = DateAdd("s", HowLong, Now) While endDate > Now DoEvents WendEnd Sub  

AT Command Tester Sederhana

Option Explicit

Dim strBuffer As String

Private Sub cmdSend_Click() txtResult.Text = "" txtProcess.Text = "" strBuffer = "" If UCase$(Left$(txtATCommand.Text, 2)) <> "AT" Then MSComm1.Output = txtATCommand.Text & Chr(26) Else MSComm1.Output = txtATCommand.Text & vbCrLf End IfEnd Sub

Private Sub Form_Load() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False With MSComm1 .CommPort = 7 .Settings = "115200,N,8,1" .Handshaking = comRTS .RTSEnable = True .DTREnable = True .RThreshold = 1 .SThreshold = 1 .InputMode = comInputModeText .InputLen = 0 .PortOpen = True End WithEnd Sub

Private Sub Form_Unload(Cancel As Integer)

Page 13: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End IfEnd Sub

Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive strBuffer = strBuffer & MSComm1.Input End Select txtProcess.Text = strBuffer txtProcess.SelStart = Len(txtProcess.Text) Do strBuffer = strBuffer & MSComm1.Input Loop While MSComm1.InBufferCount If InStr(1, strBuffer, "OK") > 0 Then txtResult.Text = strBuffer txtResult.SelStart = Len(txtResult.Text) ElseIf InStr(1, strBuffer, "ERROR") Then txtResult.Text = strBuffer strBuffer = "" End IfEnd Sub

 

 

 

Mengirim SMS Menggunakan Modem Wavecom - VB6 Code

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click() With MSComm1 .CommPort = 7 'Port disesuaikan terhadap modem Wavecom yang terdeteksi .Settings = "115200,n,8,1" .Handshaking = comRTS .RTSEnable = True .DTREnable = True .RThreshold = 1 .SThreshold = 1 .InputMode = comInputModeText .InputLen = 0 .PortOpen = True End With

Page 14: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

MSComm1.Output = "AT+CMGS=" & Chr(34) & TxtNumber.Text & Chr(34) & vbCrLf Sleep 1000 MSComm1.Output = TxtMessage.Text & Chr(26)End Sub

Menerima dan Menampilkan SMS Baru

Option Explicit

Dim strBuffer As String

Private Sub Form_Load() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False With MSComm1 .CommPort = 3 .Settings = "115200,N,8,1" .Handshaking = comRTS .RTSEnable = True .DTREnable = True .RThreshold = 1 .SThreshold = 1 .InputMode = comInputModeText .InputLen = 0 .PortOpen = True End WithEnd Sub

Private Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End IfEnd Sub

Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive strBuffer = strBuffer & MSComm1.Input Do strBuffer = strBuffer & MSComm1.Input Loop While MSComm1.InBufferCount If InStr(1, strBuffer, "+CMTI") > 0 Then If Right(strBuffer, 1) = vbLf Then Text1.Text = strBuffer End If End If

Page 15: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

End SelectEnd Sub

 

Sampai dengan kode di atas, apabila ada SMS baru, maka modem akan memberitahukan kepada kita dengan diawali "+CMTI" misalnya: +CMTI: "SM",11. SM artinya memory yang digunakan adalah SIM card, sedangkan angka 11 mewakili indeks dari SMS tersebut, jadi apabila kita ingin mengakses/membaca SMS tersebut harus menggunakan 11 sebagai indeksnya. Gantilah kode yang terdapat dalam event MSComm1_OnComm() diatas dengan kode dibawah ini, apabila Anda berkeinginan membaca isi SMS baru tersebut. 

 

Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive strBuffer = strBuffer & MSComm1.Input Do strBuffer = strBuffer & MSComm1.Input Loop While MSComm1.InBufferCount If InStr(1, strBuffer, "OK") > 0 Then Text1.Text = strBuffer Dim d() As String d = Split(strBuffer, vbCrLf) strBuffer = "" End If If InStr(1, strBuffer, "+CMTI") > 0 Then Do strBuffer = strBuffer & MSComm1.Input Loop While MSComm1.InBufferCount If Right(strBuffer, 1) = vbLf Then Text1.Text = strBuffer Dim s() As String s = Split(strBuffer, ",") ReadSMSByIndex Trim$(s(UBound(s))) End If End If End SelectEnd Sub

Private Sub ReadSMSByIndex(Index As Integer) strBuffer = "" MSComm1.Output = "AT+CMGR=" & Index & vbCrLf 'baca SMS yang berada di index ke-1End Sub

Setelah kita modifikasi, maka akan menghasilkan: 

+CMGR: "REC UNREAD","+6281315673456",,"12/06/26,01:43:51+28"Test SMS. Test SMS.

Page 16: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

OK

 

Lakukan parse (urai, pisah, memilih dan memilah) jika Anda terganggu dan tidak nyaman dengan perolehan response data yang selalu diawali dengan "+CMGR: "REC UNREAD" kemudian koma dan diakhiri dengan kata "OK". Terutama jika Anda bermaksud memasukan data tersebut ke dalam objek ListView atau MSHFlexgrid, dan lain-lain, demikian pula jika bermaksud menghubungkannya dengan database Access, SQLite, MySQL, atau database apa saja tergantung selera Anda, tidak ada paksaan dalam hal ini

Fungsi Wait Sleep Tanpa Windows API - VB6 Code

Perbedaan fungsi sleep kali ini dengan fungsi sleep sebelumnya adalah: Fungsi sleep menggunakan Sleep Kernel32.dll: 

Mem-freeze GUI (membekukan tampilan) Hitungan dalam millisecond

Fungsi sleep kali ini (lebih tepatnya delay time): 

Tidak mem-freeze GUI Hitungan dalam second

Adapun fungsi sleep atau wait tanpa fungsi API adalah sebagai berikut: 

Private Sub Sleep(ByVal HowLong As Date) Dim endDate As Date endDate = DateAdd("s", HowLong, Now) While endDate > Now DoEvents WendEnd Sub

Jika Anda mau bereksperimen maka buatlah kodenya seperti di bawah ini kemudian bandingkan antara fungsi sleep Kernel32.dll dengan fungsi sleep tanpa API.

Option Explicit

Page 17: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

'Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click() Label1.Caption = "Mulai menjalankan fungsi sleep atau wait" Label1.Refresh Sleep 5 'sleep/wait/hentikan eksekusi kode ke baris berikutnya selama 5 detik Label1.Caption = "Terhenti selama 5 detik"End Sub

Private Sub Command2_Click() Dim frm As New Form1 frm.ShowEnd Sub

Private Sub Timer1_Timer() Static i As Integer Caption = i i = i + 1End Sub

Private Sub Sleep(ByVal HowLong As Date) Dim endDate As Date endDate = DateAdd("s", HowLong, Now) While endDate > Now DoEvents WendEnd Sub

Demikianlah seputar fungsi sleep atau wait, menggunakan API dan tanpa menggunakan API.

Option Explicit

Private Function Sleep(mSecs As Long) As Double Dim Duration! Duration! = Timer + mSecs Do Until Timer > Duration! DoEvents LoopEnd Function

Private Sub Command1_Click() Sleep 0.9 MsgBox "Test"End Sub

SMS Gateway: Contoh Mengirim Kode USSD

Page 18: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

USSD merupakan singkatan dari Unstructured Supplementary Service Data. USSD

biasanya diawali dengan tanda bintang (*) dan diakhiri dengan tanda pagar

(#). Contoh USSD: 

*888#

*101#

*109*72348937857623#

Dibawah ini merupakan contoh mengirim kode USSD, yang digunakan untuk mengecek pulsa Simpati: 

Option Explicit

Dim strBuffer As String

Private Sub Command1_Click() Text1.Text = "" strBuffer = "" If MSComm1.PortOpen = True Then MSComm1.PbortOpen = False With MSComm1 .CommPort = 3 .Settings = "115200,N,8,1" .Handshaking = comRTS .RTSEnable = True .DTREnable = True .RThreshold = 1 .SThreshold = 1 .InputMode = comInputModeText .InputLen = 0 .PortOpen = True .Output = "AT+CUSD=1," & Chr(34) & "*888#" & Chr(34) & ",15" & vbCrLf End WithEnd Sub

Private Sub MSComm1_OnComm() strBuffer = strBuffer & MSComm1.Input Dim x As String If InStr(1, strBuffer, ",15") Then

Page 19: Membuat Sms Gateway Dengan Mscomm Dan Port Detection

Dim s() As String s = Split(strBuffer, vbCrLf) Dim i As Integer For i = 0 To UBound(s) If InStr(1, s(i), "+CUSD") Then x = s(i) End If Next End If If x <> "" Then s = Split(x, ",") Text1.Text = Mid$(s(1), 2, Len(s(1)) - 2) End IfEnd Sub

Maka hasilnya adalah seperti gambar di bawah ini:

sumber  : www.seven-technology.blogspot.com  , www. source-code-sms-gateway.blogspot.com