Maka tanpa kata berpanjang lebar menunggu cacing berbulu, di bawah ini adalah kode VB6 yang mewakili tindakan dengan judul di atas:
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 With
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End 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
End Select
End SubSampai 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 Select
End Sub
Private Sub ReadSMSByIndex(Index As Integer)
strBuffer = ""
MSComm1.Output = "AT+CMGR=" & Index & vbCrLf 'baca SMS yang berada di index ke-1
End SubSetelah kita modifikasi, maka akan menghasilkan: +CMGR: "REC UNREAD","+6281315673456",,"12/06/26,01:43:51+28" Test SMS. Test SMS. OKLakukan 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.
Source : http://vb6-sourcecode-insert.blogspot.com/
gak fungsi mas, kok gk tampil pesan di text1nya padahal dia penampung strbuffernya
ReplyDeletebagus sekali artikel nya ,...terima kasih gan....udah puluhan tahun nyari kodenya, baru kali ini ketemu yang bener,....terima kasih gan....pahala nya nggak putus putus nih....
ReplyDeletetidak bisa menampilkan pesan di text-nya bozzz....
ReplyDeletecuma keluar +CMTI: "ME",0
SMS Integration using SMS API vb 6.0 is the best option for your business promotion or advertising. It is today’s easiest and fastest way to communicate with your customer on large scale. VB 6.0 SMS
ReplyDelete