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