Jumat, 14 November 2008

OKE GAK SICH PUNYA SMS SERVER (5)

Pada pokok bahasan kali ini aku mau tulis tentang program VB buat bantu kamu komunikasi dengan device kamu (HP/modem GSM). Ini hanya Hyperterminal kecil buat debugging program kamu. Di dalamnya gak ada tuh library kirim sms gimana atau baca sms. Tools ini sifatnya umum dan terbuka. So, kamu bisa ketik AT Command sesuka kamu dan kamu bisa lihat langsung respons dari device di layar. yach... mirip2 hyperterminal deh.

Komponen yang aku pergunakan masih sama dengan penjelasan artikel aku sebelumnya. Aku masih pake MsComm kok! Aku masih suka memanfaatkan event MsComm_onComm untuk memunculkan respons dari device. Kali ini respons tersebut aku tempatkan di Textbox dan aku tampilkan apa adanya tanpa di olah terlebih dahulu. Aku tidak melakukan pengolahan regex atau concatenation... ciee... bule banget sich istilahnya... so, untuk pengolahan lebih lanjut sebaiknya kamu bikin program kamu sendiri yach..

Cara Pake Programnya,
1. klik menu "CommPort", udah itu klik "properties". Jendela baru yg muncul adalah Properties untuk device kamu. Kamu tentukan deh device kamu itu nempel di Com brapa, Trus Speednya, databit, parity, dan stopbit. Kalo dah kelar klik "OK".
2. Nah, di bagian ini kamu tinggal pake Hyperterminal kecil ini. Tapi sebelumnya koneksinya di sambung dulu. Caranya klik "CommPort" trus lanjutin klik "Port Open". Maka nyambung atau tidaknya ketauan dari status di bawah atau image bulat di sudut kanan atas. Kalo nyambung warnanya Hijau tapi kalau putus warnanya merah. Cara lain untuk konek dan putus yaitu langsung klik image bulatnya. Gitu deh... Inget yach konek gaknya ditentukan properties yang kamu masukin sebelumnya.
3. Kalo dah konek, kamu tinggal ketik AT commandnya seperti di hyperterminal. Dari sini cara kerjanya sama dengan hyperterminal.

Kamu coba-coba deh. Dari sini smoga ada gambaran gimana caranya bikin sendiri program SMS Server kamu. Smoga berhasil yach... Insya Allah aku akan tulis lagi untuk pembahasan lanjut. Tapi aku blom tahu dan blom mood sampe sekarang nih. hehehe...

Download File :

>>Download Hyperterminal Aku di sini nih
>>Password : sholat

Wass.

Arnie

Rabu, 12 November 2008

OKE GAK SICH PUNYA SMS SERVER (4)

Utak-Atik SMS Mode Teks Dengan Visual Basic

Pada bahasan yang lalu kita dah maen-maen dan berkenalan erat sama hyperterminal. Idenya kali ini adalah mungkin gak sich kalo kita ganti hyperterminal dengan program kita sendiri. Jadi kita gak perlu lagi deh ketik sintaks yang ngejelimet, berulang-ulang and nyusahin bikin pusing kepala di hyperterminal. So pasti pake Visual Basic dong... Aku coba untuk membedah sintaks yang penting2 aja yach. Kalo masalah parsing dkk kamu pasti bisa deh sendiri. Banyak loh literaturnya. Yang penting kan bisa nyambung antara vb dan device kamu, trus bisa baca sms, kirim sms and jangan lupa bisa juga hapus sms. Kalo kita persempit lagi, secara teknis yang kita butuhin kan cuma gimana cara koneksinya, trus cara kirim perintah ke device dan terakhir gimana cara nangkep respons yang dikirim device. tul gak? Nah masalah pemrograman database untuk menyimpan data sms dari device atau data sms ke device kamu pikirin sendiri yach. Kalo sempet di bahasan selanjutnya aku kupas juga deh. hehehe.

Visual Basic punya komponen yang kerjanya mirip hyperterminal. Namanya MsComm. Nah, gak perlu repot kan?

Kali ini kita pake MsComm untuk utak-atik smsnya. So, jgn lupa di project VB kamu masukin dulu yach komponen MsCommnya. dah itu baru deh kita bisa mulai coding.

Koneksi ke Device

Kamu harus tentuin dulu port dan baud rate, parity, dan kon?gurasi lain yang digunakan oleh device kamu.

Di dalam bahasa Visual Basic, kurang lebih kode programnya akan seperti di bawah ini:

MSComm1.CommPort = 3
MSComm1.Settings = “115200,N,8,1”
MSComm1.PortOpen = True

Artinya,
- Baris 1: "3" itu maksudnya kamu melakukan hubungan ke device yang ada di Com3. Nah karenanya kita harus tahu HP/modem GSm kamu itu nempelnya di mana? eh gak ding. Nempelnya terserah, mo di slot USB kek atau di Slot serial yang penting windows ngebacanya sebagai Com brapa? Cek aja di Phone/Modem Setting di Control Panel.
- Baris 2: “115200,N,8,1” maksudnya device kamu disuruh bekerja dengan baud rate 115200, parity = N, databit = 8, dan stop bit =1. Parameter2 ini kamu bisa contek di Phone/Modem Setting di Control Panel. Itu kalo kalo device kamu dah kebaca sama windows. hehehe.
- Baris 3: "True" itu maksudnya koneksi dibuka. Berhasil atau tidaknya kita lihat dari respons "OK" atau "ERROR" seperti di hyperterminal. Kalo pake MsComm cara nangkepnya pake property Input. Property Output digunakan untuk memberikan command/perintah kepada device, sedangkan property Input menghasilkan data dari buffer penerima.

Mengirim AT Command ke Device

Tes Koneksi:
MSComm.Output = “AT” & Chr$(13)

Chr$(13) adalah Enter.

Masuk Mode Teks:
MSComm..Output = “AT+CMGF=1” & Chr$(13)

Kirim SMS:
MSComm.Output = “AT+CMGS=”6281316932077" & Chr$(13)
MSComm.Output = "Hello, welcome to our SMS tutorial" & Chr$(26)

"Chr$(26)" adalah Karakter "Ctrl+Z"

Terima SMS:
Untuk menerima SMS sama artinya dengan kita menangkap semua data yang masuk ke MsComm baik itu Telepon masuk, isi SMS, maupun respons "OK" dan "ERROR". Alhamdulillah MsComm memiliki event OnComm. Event ini mencatat semua data yang masuk ke MsComm. Nah pinter2nya kamu deh untuk parsing / memilah dan menyusun semua data yang masuk. Nah, untuk sms masuk:

MSComm.Output = “AT+CMGL=”ALL" & Chr$(13)

lalu ambil datanya di event OnComm seperti di bawah ini.

Private Sub MSComm_OnComm()
Dim stComChar As String * 1

Do
Loop Until MSComm.InBufferCount > 0
Do While MSComm.InBufferCount > 0
stComChar = MSComm.Input
tempBuffer = tempBuffer + stComChar
Loop

Debug.Print tempBuffer

End Sub

Kalo gak ada masalah, maka setiap kali SMS masuk (ataupun terjadi event lainnya seperti telpon masuk), maka event ini akan dijalankan dan program akan menuliskan isi dari data yang diterima. Sampe sini dulu yach. Ntar lanjut lagi pada pokok pembahasan yang lebih kompleks. Insya Allah...

OKE GAK SICH PUNYA SMS SERVER (3)

Utak-Atik SMS Mode Teks Dengan Hyperterminal

Pada bahasan terdahulu aku udah jelasin sekilas cara make hyperterminal untuk berkomunikasi dengan HP/modem kamu. Nah, topik kali ini aku pengen banget ngebantu temen-temen yang pengen koding VB tapi gak punya HP/Modem. Kayaknya gak masuk akal yach? tapi bisa kok. Idenya sich sederhana aja, aku kasihan banget sama temen aku yg lg bikin program SMS Server. Tahu gak, masak dia bela2in beli modem GSM hanya untuk coba2 bikin SMS Server. Yach minimal pinjem dulu kek ama yg udah punya HP/modem GSM. Kan mahal tahu gak! Kalo beli HP Nokia 5110 yg second aja sampe 200 ribu plus kabel bisa sampe 300 ribu tuh. Bagi sebagian orang sich duit segitu gak seberapa. tapi kan gak semua orang punya duit segitu. So, aku kasih contoh-contoh keluaran (output) yang di respon HP/Modem GSM atas input yang dikirim ke device tersebut. Yach, gak banyak sich.. Aku Pilihin yang penting2 aja menurut aku. Nah dari sini kamu bisa coba-coba program kamu secara offline. Yach, minimal pas dipake dengan device sesungguhnya kekurangan program kamu (Bug) gak banyak-banyak banget. Maaf ya, kali ini aku hanya ngebahas SMS dalam mode teks aja. Yang PDU ntar lain kali kalo ada waktu lagi. OK?

Hal-hal yang perlu kamu perhatiin sebelum memulai ngobrol dengan device kamu,
1. Pastiin SIM Card kamu tuh gak pake PIN. Kalo emang dah terlanjur pake PIN dan kepengen tetep pake PIN brarti kamu harus kirim perintah ke device kalo kamu dah masukin PIN yang valid. Perintahnya kira-kira gini nih :

AT+CPIN="PIN", isi PIN dengan PIN SIM Card kamu, ok?

2. Trus kamu harus tentuin Kamu baca SMS nya itu yang di HP/Modem atau yang di kartunya (SIM Card). Sintaksnya gini nih :

AT+CPMS="ME","SM","MT"

Maksudnya,
- ME: Tempat nyimpen SMS nya di Device
- SM: Tempat nyimpen SMS nya di SIM Card
- MT: Semua tempat nyimpen yg ada, baik di device maupun di kartu.
Tulisnya boleh salah satu atau semuanya... suka2 aja deh... Sesuain aja ama penjelasan di atas dan situasi kamu.

3. Pastiin juga kalo si kartu kamu tuh nomor SMS Centernya dah diset. Kalo belom, yaa kamu set dulu. Manual aja pake HP kamu. tahu kan tempatnya? itu lho di message setting... Nah kalo kamu mau set pake sintaks,

AT+CSCA="+85290000000",145
OK

Artinya,
- "+85290000000": Nomor di atas tuh no SMS Center. Contoh doang...
- 145: kode ini cuma format penulisan doang. Kalo kamu pake 145 brarti penulisannya pake tanda "+". Kalo di negara kita sich modelnya kayak "+6281300000" gitu deh... aku lupa SMS Center di Indonesia... hehehe. Nah kalo kamu gak mau pake tanda "+" alias botak cuma angka doang, so pasti kamu harus kasih angka 129. Atau biarin aja kosong kayak gini nih "AT+CSCA="+85290000000"".

4. Terakhir nih, kalo mau kirim perintah ke HP/modem, mbok ya di tes dulu koneksinya nyambung gak? So, always slalu kamu tes. kasih aja sintaks "AT". Trus responsnya harus "OK". Kalo "ERROR" brarti koneksi kamu benerin dulu dong... Untuk nyambungin Hyperterminal ke Device kamu dah aku bahas di tulisan sebelumnya. Baca yach. Yang Penting device kamu kebaca sama windows sebagai "Com1" atau "Com2" yg penting "Com" deh. Trus Settingnya jgn lupa juga. Kalo dah kebaca windows sich kamu gak perlu tentuin lagi karena otomatis. Tapi kalo untuk coding dengan visual basic kamu masih harus tentuin Baudrate, parity, Databit, sama Stop bitnya. Kalo dah smua tinggal "Open" atau "Connect".

Membaca SMS dari HP/Modem GSM

Untuk membaca SMS dari device coba kamu ketik di hyperterminal kayak gini nih :

AT
OK
AT+CMGF=1
OK
AT+CMGL="ALL"
+CMGL: 1,"REC READ","+85291234567",,"06/11/11,00:30:29+32"
Hello, welcome to our SMS tutorial.
+CMGL: 2,"REC READ","+85291234567",,"06/11/11,00:32:20+32"
A simple demo of SMS text messaging.

OK

Aku jelasin dulu yach baris per baris sintaks di atas,
- Baris 1: "AT" dikirim ke device untuk tes koneksi. Kalo jawaban pada baris 2 adalah "OK" artinya koneksi komputer ke device kamu tuh dah bener.
- Baris 3: "AT+CMGF=1" digunakan untuk memerintahkan device agar bekerja pada SMS Mode Teks. Kalo respon dari device pada baris 4 adalah "OK" brarti device siap bekerja pada SMS Mode teks. Tapi kalo hasilnya "ERROR" brarti device kamu gak support untuk SMS mode teks.
- Baris 5-9: "AT+CMGL="ALL"" dipake untuk mengeluarkan semua daftar SMS yang ada di device kamu. Nah kalo kamu liat jelas banget kan SMS nya itu ada dua. Ada nomor indeksnya juga yaitu "1" dan "2". yang pertama "Hello, welcome to our SMS tutorial." trus yang kedua "A simple demo of SMS text messaging.". "+85291234567" adalah nomor pengirimnya. trus "06/11/11,00:30:29+32" sama "06/11/11,00:32:20+32" itu waktu SMS itu diterima SMS Center. Angkanya agak aneh ya? "+32" itu maksudnya zona waktu SMSC. Zona waktunya itu GMT+8. Inget yach, pokoknya Zona waktunya 1/4 (seperempat) dari angka yang tertera. Nah kalo "REC READ" itu maksudnya SMS itu dah pernah dibaca. Bukan SMS baru.
- Baris 11: "OK" itu maksudnya perintah "AT+CMGL="ALL"" telah berhasil dieksekusi. Kamu harus perhatiin bener2 nih untuk setiap respon "OK" artinya sintaks berhasil. Kalo gagal "ERROR".

Mengirim SMS Ke HP/Modem GSM

Sintaks yang kamu ketik di hyperterminal kayak gini nih,

AT+CMGS="+85291234567",145
> It is easy to send text messages.
+CMGS: 12

OK

Penjelasannya,
- Baris 1: "+85291234567" adalah nomor tujuan, inget karena pake tanda "+" makanya ditambahin embel2 "145". Udah itu jgn lupa juga tekan enter supaya muncul prompt seperti pada baris 2. Itu artinya kamu siap ketik isi SMS kamu. Contohnya di sini "It is easy to send text messages.".
- Baris 2: Di sini ini isi SMS yg harus kamu ketik. Jangan lupa kalo dah kelar pencet Ctrl+z.
- Baris 3-5: "12" itu no referensi yg dikasih device kamu ke SMS yg kamu kirim. Trus di baris 5, "OK" itu brarti pesen kamu dah terkirim dari device. Kalo "ERROR" brarti gagal.

Menghapus SMS dari Storage HP/Device

Ini penting2 gak penting sich. Tapi kadang perlu juga dipikirin biar kepala kita botak kayak professor. hehehe. Device kamu kan akan penuh kalo terus-terusan nerima SMS. Trus kalo dah full gak bisa lagi deh terima SMS. Alias Pendiiiiiiing. Alias SMS Orang kagak sampe-sampe. So, kamu harus rajin ngapus tuh SMS yang pernah diterima. Kalo gak pernah ya gak usah. Soalnya itu brarti SMS di hP orang lain. Bukan HP kamu. hehehe. Kerajinan kaleee ngapus SMS di HP orang laen.. hihihi. Sintaks di Hyperterminal,

AT+CMGD=1
OK

Penjelasan,
- Baris 1: "AT+CMGD" itu perintah yang dikirim ke device untuk menghapus SMS. Sedangkan "1" maksudnya nomor indeks sms yang dihapus adalah indeks 1. Kalo mo ngapus banyak indeks boleh kok dalam satu perintah misalnya indeks 1,2,3,4,7,9. brarti perintahnya "AT+CMGD=1,2,3,4,7,9". Nomor indeks ini didapet waktu kamu kirim perintah untuk baca SMS pake sintaks "AT+CMGL".
- Baris 2: "OK" itu respons dari device kalo perintah tadi berhasil. Kalo gagal "ERROR".

Sekian Dulu yach.. Ntar aku lanjutin lagi gimana Kalo otomatis gak perlu ketik di hyperterminal alias pake Visual Basic. Aku ngantuk BGT. Jgn lupa kasih komentar biar aku tahu artikel ini penting gak sich buat kamu-kamu.

Senin, 10 November 2008

OKE GAK SICH PUNYA SMS SERVER (2)

Memahami Format data SMS

Format data SMS yang dikirim ke Operator atau sebaliknya yang kita terima dari Operator adalah dalam bentuk PDU (Protokol Data Unit). Operator di sini maksudnya Telkomsel, Indosat, Telkom, dkk. PDU Ini isinya adalah bilangan Heksadesimal. Tau kan? itu tuh bilangan yg pas SD dulu kita namain jam 16-an. Maksudnya bilangannya cuma sampe angka 15 trus nol lagi deh. Nah Penulisannya tuh terdiri dari 0, 1, 2 , 3, 4, 5 , 6 ,7 ,8 ,9 ,A ,B ,C ,D ,E ,F. Kok gak ada angka 10, 11, 13, 14, 15? kan bilangan 10 dah di pake angka satunya di awal setelah 0 begitu juga 0 dah dipake kan di awal deretan bilangan 16. so gak boleh dipake lagi... Gitu deh... Contohnya gini deh supaya ngerti dikit apa sich heksadesimal itu... Soalnya nanti kita harus terbiasa dengan bilangan ini untuk pembahasan selanjutnya. Kalo angka desimal 1000, maka bilangan heksadesimalnya tuh 3E8. Cara kutak-katiknya begini :

1000 dibagi 16 = 62 sisanya 8. trus lanjutin,
62 dibagi 16 = 3 sisanya 14,
3 dibagi 16 = 0 sisanya 3.

nah kan kita dapet konversinya jadi 3 14 8. Jangan lupa bilangan 16 tuh gak ada angka 10, 11, 12, 13, 14, 15. so, Kita ganti jadi 3E8. Gampang kan....

Format SMS yang kita buat pake program sebelum kirim ke device HP/modem sebenarnya bisa kita set ke mode teks gak perlu PDU. kalo berhasil maka device yang akan bantu kita untuk konversi secara otomatis SMS format PDU dari dan ke Operator. Kita tinggal kirim / terima SMS dari operator dalam bentuk teks. so, gak perlu repot deh bikin prosedur konversi PDU. Tetapi masalahnya adalah gak semua device HP/modem itu support mode teks. Nyebelin kan? Tapi jgn khawatir dan jgn bingung. Daripada cari2 device yg support mode teks atau nggak lebih baik kita pelajarin aja mode PDU. Soalnya semua device tuh pasti support mode ini. hehehe, soalnya emang format aslinya boooo...

Format PDU untuk kirim SMS dan Terima SMS itu beda bgt. Untuk Kirim SMS PDUnya terdiri dari 8 header sebagai berikut :

Format PDU Untuk SMS Kirim

1. Nomor SMS-Center (Operator)
2. Tipe SMS
3. Nomor Referensi SMS
4. Nomor HP Penerima
5. Bentuk SMS
6. Skema Encoding Data I/O
7. Jangka Waktu SMS sebelum expire
8. Isi SMSnya dong....
Trus ke delapan header tersebut digabung jadi satu.. Nah kalo berhasil berarti SMS siap dikirim deh ke Operator via Device HP/Modem. Gimana sich cara bikin 8 header tadi? Caranya gini nih... cieee sok pinter nih yee.. Gak kok... becanda... Caranya begini nih :

1. Nomor Operator
Header pertama ini terdiri dari 3 bagian sub header, yaitu :
- Jumlah pasangan heksadesimal Operator dalam bilangan heksa
- Kode Nasional/Internasional. Nasional kodenya 81 trus kalo internasional kodenya 91
- Nomor Operatornya. urutannya dibolak-balik dalam bilangan heksa. kalo gak ada pasangan sisa 1 maka dipasangin huruf F di depannya. Ada 2 cara bikinnya,
Cara 1 (Nasional) :
1. Telkomsel (0811000000) ----> 06818011000000
2. Satelindo (0816124) ----> 0581806121F4
3. Excelcom (0818445009) ----> 06818081440590
4. Indosat-M3 (0855000000) ----> 06818055000000, caranya :
Dengan cara pembagian 3 sub header di atas, untuk excelcom dengan nomor SMS-Center 0811000000 maka :
- Jumlah pasangan heksa 6 pasang, yaitu : 08, 11, 00, 00, 00 = 5 + 1 pasang, ditulis 06
- Kode nasional/Internasional = 81
- Nomor Operator dibolak-balik = 80-11-00-00-00.
Proses penggabungan menjadi 06818011000000
Cara 2 (Internasional) :
1. Telkomsel (62811000000) ----> 07912618010000F0
2. Satelindo (62816124) ----> 059126181642
3. Excelcom (62818445009) ----> 07912618485400F9
4. Indosat-M3 (62855000000) ----> 07912658050000F0, caranya :
0811000000 diubah menjadi 62811000000, sehingga :
- Jumlah pasangan heksa 7 pasang, yaitu : 62, 81, 10, 00, 00, F0 = 6 + 1 pasang, ditulis 07
- Kode nasional/Internasional = 91
- Nomor Operator dibolak-balik = 26-18-01-00-00-F0.
Proses penggabungan menjadi 07912618010000F0

2. Tipe SMS,
Tipe SMSnya SEND (kirim), so di set 1. Jadi bilangan heksanya ditulis 01

3. Nomor Referensi SMS,
Nomor referensi ini otomatis diset oleh device HP/Modem. Untuk kita dummy aja di tulis 00.

4. Nomor HP penerima,
Penulisan PDU Headernya mirip dengan point 1, yaitu :
- Jumlah bilangan desimal nomor tujuan dalam bilangan heksa.
- Kode Nasional/Internasional. Nasional ditulis 81, internasional ditulis 91.
- Nomor tujuan ditulis bolak-balik dalam pasangan heksa kalo sisa satu dipasangin dengan F didepannya. Contoh, untuk pengiriman ke nomor 6281316932077 PDUnya menjadi :
Cara 1 : (081316932077)
- Ada 12 angka, jadi ditulis 0C
- 81
- 80-31-61-39-02-77
Kalo digabungin menjadi 0C81803161390277
Cara 2 : 6281316932077
- ada 13 angka, jadi ditulis oD
- 91
- 26-18-13-96-23-70-F7
Kalo digabungin menjadi 0D91261813962370F7

5. Bentuk SMS,
SMS = 0, ditulis 00. Kalo telex=01 trus fax=02.

6. Skema Encoding Data I/O
Di pasaran rata2 menggunakan Skema 7 Bit. Apa tuh? Pokoknya tulis aja 00. Gak usah dipikirin. Urusan pabriknya tuh...

7. Jangka Waktu SMS Expire
Klo poin ini gak dipake artinya gak ada expire. Kalo mo dipake ada itung-itungan rumusnya. gak rumit2 amat kok... Biasanya ditulis dalam bilangan integer. Daftarnya,
- 0-143 ----> (INT +1) x 5 menit. Artinya antara 5 menit s.d 12 jam.
- 144-167 ----> 12 jam + (INT - 143) x 30 menit
- 197-255 ----> (INT - 192) x 1 minggu
yaahh, kalo pengen smsnya pasti sampe, kamu gak usah kasih limit waktunya... cepet atau lambat pasti sampe... Insya Allah.. :)

8. Isi SMS
Untuk isi SMS ini keliatannya susah... Tapi sebenernya gampang banget lho... Cuma cara penyajian literatur yang ada dan telah banyak beredar saat ini ngejelimet bgt bikin pusing yang bacanya. Makanya di tulisan ini aku kasih simplenya aja yach... Konversi isi SMS menjadi bilangan heksa itu prosesnya adalah konversi dari kode 7 bit menjadi kode 8 bit. Maksudnya kita punya bilangan biner (jam duaan) yang isinya cuma angka 0 dan 1 itu loh. kita bagi2 atau digrup-grupin atau dikelompok-kelompokin dari masing2 7 bit menjadi masing2 8 bit. Untuk membentuk kata atau huruf menjadi biner kode 7 bit gak usah pusing soalnya dah ada tabelnya resmi seperti di bawah ini.


Misalnya isi pesan kita adalah hello, maka kalo kita petakan ke kode 7 bit menjadi :

h ----> 110 1000 (inget yach baca dari bit 1 dulu trus tulis dari kiri berurut B7-B6-B5-B4-B3-B2-B1)
e ----> 110 0101
l ----> 110 1100
l ----> 110 1100
o ----> 110 1111

Trus kita ubah jadi kode 8 bit. ini gak pake tabel lho. cuma disusun masing2 jadi 8 bit... caranya gini nih... kita tulis deretan bitnya dari belakang yach...

hello ----> olleh ----> 1101111 1101100 1101100 1100101 1101000. Nah deretan ini kan tersusun masing2 7 bit. kita jadiin masing2 8 bit. Jadinya gini nih : 00000110 11111101 10011011 00110010 11101000. bit sisanya (yang paling depan) aku tambahin 5 bit angka 0 supaya jadi 8 bit. hehehe. yg penting nilainya gak berubah kan? Nah, udah itu baru deh kita konversi jadi heksa. Caranya gampang bgt. Setiap 8 bit itu mewakili 2 bilangan heksa. Jadi 1 bilangan heksa itu 4 bit. Jadinya gini deh (jgn lupa urutannya disusun lagi seperti semula dari olleh menjadi hello. hehehe),

1110 1000 ----> E 8
0011 0010 ----> 3 2
1001 1011 ----> 9 B
1111 1101 ----> F D
0000 0110 ----> 0 6

Hasil akhir menjadi E8329BFD06

Nah Jadi isi SMS hello dari ke delapan header kita gabungin, dalam arti Untuk mengirimkan kata “hello” ke nomor handphone 6281316932077 lewat SMS-Centre Telkomsel, tanpa membatasi jangka waktu valid, maka PDU lengkapnya adalah:

07912618010000F0,01,00,0D91261813962370F7,00,00,00,E8329BFD06 (Ntar nulisnya tanpa koma yach...)

Gampang kan..... Kita lanjutin lagi yuk untuk membahas format PDU SMS terimanya.


Format PDU Untuk SMS terima dari SMS-Center

Alhamdulillah ternyata PDU untuk SMS terima gak jauh beda bgt dengan SMS Kirim. So, kalo kamu dah ngerti konversi PDU untuk SMS kirim brarti untuk SMS terima gak ada masalah. Smoga. Amien. PDU SMS Terima terdiri dari 8 header juga, yaitu :

1. No SMS Center / Operator
2. Tipe SMS,
SMS Terima = 4 ditulis 04
3. Nomor HP Pengirim
4. Bentuk SMS
5. Skema Encoding
6. Tanggal dan Waktu SMS di SMS Center,
diwakilin 12 bilangan heksadesimal (6 pasang) formatnya yy/mm/dd hh:mm:ss (Jgn lupa dibolak-balik dulu yach. hehehe). Contoh : 201101903254 ----> 02-11-10-09-23-45 ----> 10 Nov 2002 09:23:45 WIB
7. Expired
8. Isi SMS

Arti dari PDU Berikut :

07912658050000F0040C9126581610739800002070225123800005E8329BFD06 ---->

07912658050000F0,04,0C91265816107398,00,00,207022512380,00,05E8329BFD06

Disesuaikan dengan bahasan 8 header tadi yach, menjadi :
1. SMS tersebut dikirim lewat SMS-Centre:62855000000
2. SMS tersebut merupakan SMS-Terima
3. SMS tersebut dikirim dari hadnphone dengan nomor Sim Card:628561013789
4. SMS tersebut diterima dalam bentuk SMS
5. SMS tersebut memiliki skema encoding 7 bit
6. SMS tersebut sampai di SMS-Centre pada tanggal 22-07-02, pukul: 15:32:08 Wib
7. SMS tersebut tidak memiliki batas waktu valid
8. SMS tersebut isinya adalah “hello”.

Sekian dulu bahasan kali ini. Selanjutnya kita akan bahas bagaimana berinteraksi dengan device HP/modem untuk mengirim dan menerima SMS dengan format PDU dengan komponen FBUS atau dengan menggunakan AT Command.

Download File :

>>Prosedur PDU to Text
>>Prosedur Text to PDU
>>Password : sholat

Wassalam,

Arnie

Rabu, 23 Juli 2008

Main-main Sama WebCam Yuk...

Webcam emang bukan barang baru bagi para chatter. Buat yang sering pake Yahoo Messenger, MSN, Skype, dll pasti asyik kalo bisa ngobrol sekaligus tatap muka. Gak cuma ngetik doang lho. Capee deh... :) paling gampang sich tinggal pake aja webcam di warnet biasanya dah lengkap tuh ada kamera trus headset + mic nya. tinggal pake deh. Tapi kalo komputer rumahan??? jgn harap deh bakalan lengkap... Cuma yang serius pengen chatting aja yang biasanya lengkap.

Kepengen gak sich kira2 kamu tahu gimana tuh Messenger2 bisa nampilin gambar kamu di aplikasi mereka??? Apalagi kalo kita bisa video chat. Wah seru kali yeee. Tapi untuk pokok bahasan kali ini aku cuma kepengen fokus dulu sama gimana caranya gabungin webcam di aplikasi kamu. Ntar kali yee untuk video Chat aku bikin topik baru lagi... Oke Bos???

Pada topik kali ini kita akan berhubungan dengan yang namanya Programming Video For Windows. Sebelum kita memulai, pastikan komputer kamu sudah ada webcamnya. trus kalo bisa dah diinstall juga drivernya. pokoknya kamu bisa lihat wajah kamu sendiri. alias dah dicoba dulu gitu loh.. Cara nyobanya, buka windows explorer (Windows XP yaa). trus lanjutkan klik webcam kamu di bawah drive. kalo gak salah deket2 sama My Network Places deh.. Kalo emang dah bener install drivernya pasti gambar kamu muncul deh... hihihi... lanjut ya..
Aplikasi kita kali ini memanfaatkan Win32 API nya windows XP. Melalui Win32 API ini kita capture gambar video kamu trus dimasukkan ke window aplikasi kamu. Ada beberapa langkah yang harus dilakukan untuk proses capturing ini :
1. Buat window untuk nampung cap
Pada proses ini kita manfaatkan capCreateCaptureWindowA function.
Waktu fungsi ini dipanggil handlenya tuh window baru trus kamu bisa bagusin deh window kamu dengan mengubah-ubah style paramaternya.

lwndC = capCreateCaptureWindowA("My Capture Window", WS_CHILD Or WS_VISIBLE, 0, 0, 160, 120, Me.hwnd, 0)

Ini cuma contoh aja. definisi fungsi, parameter dan konstantanya dah aku buatin di modul VB6.

2. Nyambungin Window yang tadi dah dibuat ke video drivernya
iya dong... kan supaya aplikasi tahu yang mo dicapture tuh webcam yang mana.. tul gak??? Perintahnya adalah :
SendMessage lwnd, WM_CAP_DRIVER_CONNECT, 0, 0. Tapi aku dah modif jadi gampang :

capDriverConnect lwnd, 0
  • passing String ke SendMessage :
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long

Declare Function SendMessageS Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As String) As Long
  • Passing Struktur ke SendMessage :
Dengan menggunakan fungsi Built in VARPTR() bisa diketahui lokasi struktur yang dipassing di memori. Cara gampangnya untuk capture parameter kayak gini deh...

Dim CAP_PARAMS As CAPTUREPARMS
capCaptureGetSetup lwndC, VarPtr(CAP_PARAMS), Len(CAP_PARAMS)
  • Proses Gambar dari Video Stream :
Pertanyaannya adalah bagaimana cara ngambil / capture gambar dari video yang lagi muter / play atau streaming. ribet kan? Udah ada sih fungsinya... namanya Fungsi Call Back. Untuk proses frame2 ketika Mode Preview kamu pake aja capSetCallbackonFrame. Trus kalo pada saat mode Capturenya kamu pake capSetCallbackOnVideoStream. Contohnya

capSetCallbackOnFrame lwndC, AddressOf MyFrameCallback

MyFrameCallback, Itu fungsi yang setiap kali pasti dipanggil kalo ada frame baru yang diterima dari video drivernya. Trus kamu tangkep handlenya yang didefinisikan sebagai VIDEOHDR.
Type VIDEOHDR

lpData As Long '// address of video buffer
dwBufferLength As Long '// size, in bytes, of the Data buffer
dwBytesUsed As Long '// see below
dwTimeCaptured As Long '// see below
dwUser As Long '// user-specific data
dwFlags As Long '// see below
dwReserved(3) As Long '// reserved; do not use

End Type
dimana lpData adalah data aktual dari devicenya. Berikut ini contoh fungsinya yang dah siap dipake.
Function MyFrameCallback(ByVal lwnd As Long, ByVal lpVHdr As Long) As Long

Debug.Print "FrameCallBack"

Dim VideoHeader As VIDEOHDR
Dim VideoData() As Byte

'//Fill VideoHeader with data at lpVHdr
RtlMoveMemory VarPtr(VideoHeader), lpVHdr, Len(VideoHeader)

'// Make room for data
ReDim VideoData(VideoHeader.dwBytesUsed)

'//Copy data into the array
RtlMoveMemory VarPtr(VideoData(0)), VideoHeader.lpData, VideoHeader.dwBytesUsed

Debug.Print VideoHeader.dwBytesUsed
Debug.Print VideoData

End Function
RtlMoveMemory, itu juga harus dideklarasikan dulu lho... kayak gini nih contohnya :

Declare Sub RtlMoveMemory Lib "kernel32" (ByVal hpvDest As Long, ByVal hpvSource As Long, ByVal cbCopy As Long)

Udahan dulu yach... Aku punya source code lengkap untuk webcam sederhana ini... Jgn lupa kasih komentar yg bagus2 yach... Aku kan capek dah nulis lho! hihihi....

Download File :

>>Webcam-Simple
>>Webcam-Advanced
>>Password : sholat

Wass,

Arnie

OKE GAK SICH PUNYA SMS SERVER (1)

SMS Server??? iya, emang aku kepengen dan gregetan bikin sms server. Aku dah banyak nyoba yang gratisan. Softwarenya lho yang gratis (kayak bengkelprogram.com)... Sourcecodenya sich gak dikasih. ada juga yang kasih komponen activex / OCX (kayak www.softwarecave.com) nya tapi cuma khusus buat nokia. Gimana dong kalo pake HP yang lain, misalnya siemens, motorola atau GSM/GPRS modem atau CDMA modem??? kan report bikinnya kalo protokol atau bahasa komunikasinya beda2. tul gak???
Banyak orang yang bilang SMS Gateway yang bener, bukan SMS Server. tapi kalo aku lebih cocok pake SMS Server. soalnya aku kepingin bikin Server/Komputer buat nampung sms yang datang. sukur-sukur kalo aku bisa jawab otomatis ke si pengirimnya. Sedangkan kalo SMS Gateway...?? ya namanya juga gateway otomatis Servernya sebagai gatewaynya dari SMS dong. Link komunikasinya tidak hanya dengan modem/HP tapi juga pake yg namanya http/smpp, dll. lebih kompleks kan??? please deh.,..

Banyak temen2ku yang tanya apakah bisa server kirim dan terima sms nya beda jalur, misalnya kirim pake HP trus terimanya pake Modem GSM/CDMA. ide bagus tuh. aku bilang yaa bisa aja. malahan tidak terbatas jumlahnya. Pokoknya selama windows masih bisa ngenalin device kamu sebagai COM Port artinya gak masalah. Mau lewat serial kek atau USB kek terserah. Permasalahannya adalah gimana caranya Server bisa baca sms dan kirim sms melalui device?? Brarti kita harus tahu cara komunikasinya bagaimana... Hampir semua device yang ada di pasaran baik HP maupun GSM/CDMA Modem itu support AT Command. So, kita mulai blajar apa itu AT Command?? Untuk literatur AT Command ini kamu cari aja di internet yach... banyak kok.. Kalo dah dapet, kita langsung praktek...

Apa aja yang perlu disiapin dulu nih. So pasti kamu harus punya HP/Modem GSM/CDMA trus disambungin deh ke komputer kamu. Misalnya kamu pake Modem GSM Huawei punya. Kalo emang ada drivernya mbok ya diinstall dulu biar windows bisa baca modem kamu. Coba tes deh windows kamu dah ngebaca device kamu blom??? Caranya masuk (Control Panel) ke trus pilih (Phone&Modem Options). Trus kamu pilih tab (modem) (Kalo gak ada kamu isi dulu lokasi kamu dan kode wilayah kamu trus klik OK). Nah di dalamnya ada daftar device kamu deh. yang perlu kamu perhatikan adalah device kamu terdaftar di COM Brapa??? Kalo gak ada, please deh di trus detect deh device kamu. Kalo gak ada juga brarti kamu kudu install drivernya. Nah selanjutnya coba kamu buka Hyperterminal kamu di (Start)(All Programs)(Accessories)(Communications)(Hyperterminal)

Kamu isi deh misalnya huawei trus tekan OK.










Nah pas di sini kamu harus pilih device kamu di Com Barapa... Kalo emang dah bener muncul deh cursor kamu di Hyperterminal. Artinya Hyperterminal siap kirim AT Command kamu ke device. Coba deh ketik AT. harusnya keluar pesen OK. trus coba deh ketik AT+CGMI. kluar pesen apa hayo???

Coba kamu main di mode text. Caranya ketik AT+CMGF=1. hasilnya harus OK lho. kalo gak brarti device kamu gak support mode text. Udah itu coba kamu lanjutkan dengan :
1. Untuk baca SMS coba kamu ketik AT+CMGL="All". Tuh kan muncul semua daftar sms di device kamu. hihihi.
2. Untuk kirim SMS coba kamu ketik

AT
AT+CMGF=1
AT+CMGS=08xxxxxxx
> testing kirim

Setiap baris pada contoh perintah di atas diakhiri dengan penekanan tombol enter, kecuali untuk baris pengirisan pesan, yang diakhiri dengan CTRL + Z. AT command umumnya ditulis pake huruf besar, tetapi banyak modem GSM dan ponsel yang ngebolehin AT command dalam huruf besar maupun huruf kecil.

Setelah berhasil menjalankan AT command pada HyperTerminal, maka kamu dah siap untuk melangkah lebih lanjut, yaitu menuliskan kode program pada bahasa pemrograman favorit kamu untuk bikin sebuah SMS Server. Kalo aku pake VB6. Pokoknya kode program yang mo dibikin itu intinya menuliskan AT command di dalam aplikasi kamu, yaaa kayak yang kamu tulis tadi di HyperTerminal. OK!!!

Sampe sini dulu yach... Ntar lanjut lagi.. JGN Lupa kirim komentar dong... hihihi.

Selasa, 22 Juli 2008

Yuk Kita Bikin Billing Warnet Sendiri (1)

Banyak Lho warnet-warnet bertebaran di jakarta khususnya di sekitar kampus atau kos-kosan mahasiswa/i. di bandung apalagi. wuihhh buaaanyak banget deh... Blom lagi pada perang tarif 3000/jam. Kita sebagai pelanggan diuntungin banget deh... hehehe... maklum kantong aku gak tebel2 banget.. alias Tongpes.. Gak Punya duit. Ide bikin billing warnet itu begini nih,
Setiap warnet pasti membutuhkan sarana untuk mencatat transaksinya setiap hari yang tidak mungkin dilakukan secara manual. Blom lagi tangan2 jahil operator yang sering ngutilin uang si majikan warnet ditambah lagi pelanggan warnetnya yang pengennya pake lama tapi bayar maunya dikit. Kejadian deh pelanggan ngeboongin operator warnet. hehehe. Saat ini banyak bermunculan software-software billing warnet yang dapat mencatat semua transaksi warnet mulai dari jasa penggunaan internet, scan, print, atau bahkan hingga minuman ringan yang mendukung usaha warnet. Di samping itu, software tersebut juga memberikan fitur-fitur beraneka ragam mulai dari yang berhubungan dengan sistem operasinya, hingga laporan keuangan warnet itu sendiri. Namun harga software billing warnet yang ditawarkan begitu beragam dan cukup mahal.
Kita bisa juga kok bikin sendiri software billing warnet. Gampang kok... cieee... Kalo buat di satu komputer aja sich emang gampang... pake excel juga kelar (Yang excel ini juga boleh kok dijadikan pokok bahasan. Tapi gak di sini yach. Tunggu aja di postingan aku yang lain.. OKE!!!). Yang aku maksud di sini bikinnya untuk smua komputer. So, si operator bisa mengendalikan client, mengobok-obok client, trus ya ngeprint tagihan pemakaian internet si client juga dong...
Yang paling asyik dan menantang..... eng ing eng.... Gimana caranya client gak bisa ngakalin operatornya... seru kan... Makanya ayo kita bikin deh programnya. Orang-orang bilang sich program ini termasuk jenis Client-Server. Untuk memulainya apa aja yang kamu butuhkan???
1. Pengetahuan cara menggunakan Visual basic
2. Pengetahuan Tentang windows Registry
3. Pengetahuan tentang Winsock
4. Pengetahuan tentang Perhitungan waktu dan harga per jam

segitu dulu deh... aku capek hari ini...
Note :
kalo dah jadi kamu bisa jualan seperti situs Billing warnet yang cukup terkenal di http://www.billingexplorer.com.

Peraturan & Tata tertib

Bismillahirrohmanirrohiim, Assalamu'alaikum wr. wb,

Sourcecode yang aku sharing di sini dijelaskan terlebih dahulu alurnya disertai pembahasannya dan sifatnya GRATIS dengan syarat :

1. Kamu-kamu smua kasih komentar
2. Setiap pembuatan program dengan sourcecode dari BLOG aku dan sifatnya komersil WAJIB dan KUDU menyertakan NAMA dan BLOG aku lho!
3. Kamu-kamu jangan lupa isi Polling blog aku yach...

NB :
Donasi :
Rek mandiri No. 117-0005202486.
Arniaty Arsyad
















Wassalam,

Arnie