Tuesday, August 24, 2010

Teknik dasar menghubungkan VB6 dengan ODBC

VB6, walau sudah termasuk uzur, sampai dengan sekarang masih banyak digunakan. VB juga digunakan sebagai bahasa macro dalam software microsoft office. kemampuannya dalam berkoneksi dalam database lain juga patut dijadikan pertimbangan. berikut ini script sederhana menghubungkan VB6 dengan ODBC. saya menggunakan MySQL 6.0 dengan driver mysql-connector-odbc-3.51.27-win32 karena versi ini lebih stabil dari driver terbaru mysql-connector-odbc-5.1.6-win32. sampai dengan sekarang, pihak pengembang mysql masih menyempurnakan bug-bug yang terdapat dalam paket driver terbaru tersebut.


Dim con As ADODB.Connection
Dim rs As ADODB.Recordset

Set con = New ADODB.Connection
Set rs = New ADODB.Recordset

'DSN, UID, dan PWD diisi menyesuaikan dengan konfigurasi ODBC anda
con.ConnectionString = "DSN=kuliah;UID=root;PWD=cahjoesss"
con.Open

rs.Open "Select * from inbox ", con, adOpenDynamic, adLockOptimistic
rs.Close

Saturday, August 21, 2010

ketaketik seru...

seberapa cepat anda bisa mengetik...???
hmm, coba anda buka http://didats.simaya.net.id/ketaketik/
mini game buatan anak negeri ini memberikan hiburan segar ketika kepenatan sedang melanda.
saya pernah mencoba memainkan game ini, ternyata bisa bikin kita penasaran dan geregetan untuk mencoba dan mencoba lagi.
dan satu lagi, programmernya lagi butuh sponsor, mungkin anda tertarik...???

Mengirim Long SMS dengan Gammu

gammu menyediakan file gammu-smsd-inject.exe untuk mengirimkan sms panjang (lebih dari 160 karakter). sangat praktis digunakan. akan tetapi, beberapak kali saya coba hasilnya kurang memuaskan, karena butuh waktu yang lama untuk mengirimkan sms dengan cara ini. entah ini karena versi gammu yang saya gunakan (1.28.0) belum stabil atau memang seperti itu adanya.

setelah beberapa kali mengunjungi situs http://cihar.com/gammu/ dan http://en.wikipedia.org/wiki/Concatenated_SMS akhirnya saya mendapat petunjuk untuk mengirimkan sms panjang dengan metode memasukkan record ke dalam database gammu yang jauh lebih cepat.

caranya adalah memecah sms tersebut ke dalam variable array dan menginsert setiap value array tersebut ke dalam tabel inbox.

berikut script yang saya copy dari http://cihar.com/gammu/ :

INSERT INTO outbox (
    CreatorID,
    MultiPart,
    DestinationNumber,
    UDH,
    TextDecoded,
    Coding
) VALUES (
    'Gammu 1.23.91',
    'true',
    '123465',
    '050003D30201',
    'Mqukqirip ya konej eqniu rejropocejor hugiygydewl tfej nrupxujob
xuemymiyliralj.
Te tvyjuh qaxumur ibewfoiws zuucoz tdygu gelum L ejqigqesykl kya jdytbez',
    'Default_No_Compression'
)
 
INSERT INTO outbox_multipart (
    SequencePosition,
    UDH,
    Class,
    TextDecoded,
    ID,
    Coding
) VALUES (
    2,
    '050003D30202',
    'u xewz qisubevumxyzk ufuylehyzc. Nse xobq dfolizygqysj t
bvowsyhyhyemim ovutpapeaempye giuuwbib.', 
    ,
    'Default_No_Compression'
)

yang perlu kita perhatikan adalah field 'multipart' dan 'UDH'. kita perlu menyisipkan nilai 'true' ke dalam field 'multipart'. UDH (User Data Header) adalah berupa bilangan hexa yang menyimpan informasi mengenai pesan yang dikirim (panjang pesan, urutan pesan)

dari situs http://cihar.com/gammu/ didapat informasi bahwa UDH diawali oleh '050003', nilai dari 'D3' bisa diganti dengan bebas. kemudian 4 digit di belakang menyimpan informasi mengenai

banyaknya jumlah sms dan urutan sms.

dari contoh di atas, 4 digit terakhir UDH tertulis 02xx. 02 adalah jumlah panjang sms yang dikirim, kemudian nilai

xx adalah urutan dari sms tersebut.

jadi kita bisa mengartikan kode '050003D30202' di atas sebagai pesan lanjutan kedua dari

'050003D30201'

lalu, bagaimana kita mengimplementasikan ke dalam VB 6?

saya ingin mengirimkan pesan 'mengirimkan sms panjang dengan gammu, butuh beberapa penyesuaian agar

bisa terkirim dengan sempurna. berikut ini script sederhana untuk melakukannya. pecah sms masing-masing

sepanjang 153 karakter kemudian insert ke database gammu'

semisal sms tersebut saya simpan dalam variabel pesan.

hitung jumlah panjang pesan dengan cara :

panjang_isi = len(pesan)
If panjang_isi > 160 Then 
 banyak_sms = (panjang_isi \ 153) + 1
 Else
         banyak_sms = 1     
End If 

cari nilai ID pada tabel sentitems gammu dengan script (sesuaikan dengan kondisi koneksi anda) :

rs.Open "select max(ID) as NumID from sentitems", con, adOpenDynamic, adLockOptimistic
NumID = rs.Fields("NumID") + 1
rs.Close

generate kode UDH dengan script :

ReDim ArraySMS(banyak_sms)
For i = 1 To banyak_sms
If i = 1 Then
ArraySMS(i - 1) = Left(panjang_isi_text, 153)
isi_UDH = "050003D3" & Format(banyak_sms, "00") & Format(i, "00")
rs.Open "select * from outbox", con, adOpenDynamic, adLockOptimistic
rs.AddNew
rs!DestinationNumber = no_tujuan
rs!TextDecoded = ArraySMS(i - 1)
rs!UDH = isi_UDH
rs!ID = NumID
rs!MultiPart = "true"
rs!CreatorID = "Cahjoe"
rs.Update
rs.Close
Else
ArraySMS(i - 1) = Mid(panjang_isi_text, ((i - 1) * 153) + 1, 153)
isi_UDH = "050003D3" & Format(banyak_sms, "00") & Format(i, "00")
rs.Open "select * from outbox_multipart", con, adOpenDynamic, adLockOptimistic
rs.AddNew
rs!UDH = isi_UDH
rs!TextDecoded = ArraySMS(i - 1)
rs!ID = NumID
rs!SequencePosition = i
rs.Update
rs.Close
End If
Next

selamat mencoba...

:)

Monday, August 16, 2010

Premier League Tayang di Global & TPI, horeee...!!!


alhamdulillah, setelah menunggu kepastian sampai detik2 akhir laga perdana premiere league, akhirnya bisa juga nonton siaran premiere league dari tv swasta tanpa bayar... hehehe...
dan untungnya lagi, tidak hanya untuk 1 tahun, tapi 3 tahun ke depan, kita bisa nonton premiere league secara gratis...!!!
wow, keren...
tengkyu MNC...

Membuat autorespond pada Gammu

software SMS Gateway populer saat ini, Gammu, yang bisa didownload dengan gratis pada situs resminya di http://wammu.eu/ memiliki sejumlah fitur menarik yang bisa kita manfaatkan. saya ingin menulis sedikit pengalaman pribadi tentang masalah ini.
pada file smsdrc, terdapat script :

# Script to be executed when new message has been received
runonreceive =

kita bisa isikan program executable apapun di sana.
misalkan kita akan mengeksekusi perintah coba.exe di folder c:\, kita cukup ketikkan :

runonreceive = C:/coba.exe

silakan save, lalu jalankan servis gammu-smsd anda.
setiap ada sms masuk, gammu akan secara otomasi menjalankan file coba.exe tersebut.
apabila tidak terjadi apapun, hapus semua file extract dari gammu, extract dan setting ulang gammu dari awal. saya juga mengalami masalah seperti itu dan ketika saya hapus dan setting ulang, script tersebut berjalan dengan lancar.

selamat mencoba

Thursday, August 5, 2010

SMS Gateway menggunakan Gammu

saya ingin membagi pengalaman mengkonfigure salah satu software sms gateway gratis yang paling populer saat ini, Gammu.
Gammu menjadi begitu populer karena fleksibilitasnya, bisa berjalan di platform windows based, maupun linux based. Gammu bisa didownload secara cuma-cuma dari situs http://wammu.eu/download/ lengkap beserta dokumentasi serta daftar dari hardware yang didukung oleh Gammu. sampai dengan saat saya menulis artikel ini, versi terbaru dari Gammu adalah versi 1.28.0.
dalam artikel ini, saya menggunakan modem huawei e180.
berikut langkah-langkah instalasinya :

ekstrak installer gammu yang telah didownload ke folder yang anda suka, saya lebih memilih ke c:\gammu\ karena kemudahan aksesnya. sebagai informasi, ketika saya menggunakan file gammua yang executable, sering kali file gammurc tidak dikenali gammu. jadi saya sarankan untuk mendownload file gammu yang dikompres saja dari situsnya.

cek dimana modem anda terhubung ke komputer pada menu device manager. cari dimana port yang digunakan modem anda. dalam kasus ini, modem saya terhubung dengan COM4.


copy file gammurc dan smsdrc dari folder share\doc\gammu\examples\config ke folder bin\
edit file gammurc yang telah dicopy tadi. sesuaikan dengan konfigurasi modem anda :

[gammu]

device = com4:
connection = at115200
; Do not use model configuration unless you really need it
;model = 6110
;synchronizetime = yes
;logfile = gammulog
;logformat = textall
;use_locking = yes
;gammuloc = locfile
;startinfo = yes
;gammucoding = utf8
;usephonedb = yes

untuk mengisi opsi connection, silakan lihat di http://wammu.eu/phones/ sesuaikan dengan modem yang anda gunakan.

cek status terhubung tidaknya modem anda dengan gammu dengan mengetikkan perintah :
c:\gammu\bin>gammu identify

apabila terhubung dengan benar, akan muncul spesifikasi modem yang anda gunakan.
jika terjadi error, silakan dicek lagi konfigurasi file gammurc anda

apabila sudah, silakan create database di mysql. apabila belum, silakan download di http://dev.mysql.com/ akan lebih baik jika anda mendownload lengkap dengan MySQL Workbench (untuk instalasi workbench, membutuhkan dotnet 2.0 dan 3.5) sebagai manager native dari mysql. install mysql sesuai dengan konfigurasi yang anda inginkan. buat data base baru dengan nama terserah anda (saya misalkan database ini dengan nama 'sapk'). buka file mysql.sql di folder C:\gammu\share\doc\gammu\examples\sql dan jalankan di workbench anda. apabila terjadi error pada script mysql.sql, buka file tersebut, cari script `TextDecoded` text NOT NULL default '', pada masing-masing inisialisasi tabel inbox, outbox, sentitem dan hilangkan perintah default '', sehingga menjad berikut ini `TextDecoded` text NOT NULL, lalu jalankan script tersebut lagi di workbench anda.

buka file smsdrc di folder c:\gammu\bin\
sesuaikan dengan konfigurasi modem dan database anda :

device = com4:
#model = 6110
connection = at115200
#synchronizetime = yes
#logfile = gammulog # this is not used at all in SMSD mode
#logformat = textall
#use_locking = yes
#gammuloc = gammu.us
#startinfo = yes

[smsd]
service = MYSQL
PIN = 4321 #isikan PIN SIM Card anda, bila tidak ada, beri tanda '#' di depan PIN
logfile = smsdlog
debuglevel = 0
#phoneid = MyPhone1
commtimeout = 10
sendtimeout = 10
#receivefrequency = 0

user = root #sesuaikan dengan user mysql anda
password = cahjoesss #sesuaikan dengan password mysql anda
pc = localhost
database = sapk #sesuaikan dengan database mysql yang baru anda buat tadi

simpan file tersebut

debug file smsdrc tersebut dengan perintah :
c:\gammu\bin>gammu-smsd -c

apabila tidak terjadi pesan error, install service sms daemon dengan perintah :
c:\gammu\bin>gammu-smsd -c smsdrc -i

lalu start service sms daemon tersebut dengan perintah :
c:\gammu\bin>gammu-smsd -c smsdrc -s

catatan : untuk men stop service, ganti opsi -s dengan -k
untuk menguninstall service, gunakan perintah gammu-smsd -u