SMS GATEWAY

By : BlackOnta

http://onta-programing.blogspot.com

Desember 2009

1 | http://onta-programing.blogspot.com/

Yang akan di bahas:

Sepintas tentang SMS Gateway Persiapan      Yang dibutuhkan Persiapan Hadware Persiapan Library Instalasi Library Persiapan Project

Pengembangan 1. Database 2. Project Utama

Error dan Penanganannya

Tanya Jawab

Breaktime

2 | http://onta-programing.blogspot.com/

Pembukaan

Gak usah lama-lama baca pembukaan segala langsung ke halaman selanjutnya 

3 | http://onta-programing.blogspot.com/

Slesai. 2.SEPINTAS TENTANG SMS GATEWAY Cari Aja yah di Google hehe PERSIAPAN  Yang dibutuhkan Untuk membuat SMS Gateway ini ada beberapa hal yang harus dipersiapka. Lebih detail tentang Library. akan dibahas pada sub berikutnya. SUN JDK 1. antara lain: Hardware: 1. Konektor digunakan untuk menghubungkan HP dengan Komputer. 3. karena memang setelah beberapa kali membuat program 4 | http://onta-programing.  Persiapan Library Kalau kita ikuti referensi dari Developer SMSLib.com/ . Sambungkan HP Ke Komputer. HP sebagai modem.blogspot. Driver Modem/HP 4. maka akan banyak banget library yang kita harus persiapkan . melalui konektor. Adapun spesifikasi HP yang bias digunakan ada pada bagian akhir tutorial. Netbeans. saya gunakan Netbeans 6.5 atau yang terbaru Download aja di situsnya SUN. Library-Library.1 3. Komputer (Disaran kan yang High End ) 2.  Persiapan Hardware Persiapkan HP yang akan kita gunakan sebagai Modem (Jenis-jenis HP yang bisa digunakan ada pada bagian akhir tutorial). kemudian Jika Diminta Driver Instalkan Drivernya. Software: 1. tp tenang dengan blackonta selalu ada jalan yang mudah untuk membuat seuatu program . Konekstor Hp.

Java Communications Library 3. dan RxTx. MySQL Server 5.SMS Gateway. dan untuk databasenya kita membutukkan MySQL Driver (Sudah ada di netbeans). Extract File yang telah didownload. ternyata hanya beberapa Library aja yang kita perlukan. kita tinggal Extract lalu masukan di Project (dibahas pada bagian persiapan Project). Simple logging facade for Java (slf4j) 4.com/p/smslib/downloads/list. karena saya menggunakan Windows maka saya mendownload untuk yang windows. 2. Tidak Ada Perlakuan Khusus untuk SMSLib. Sejanjutnya ikuti langkah2 berikut: a. 1. SMSLib 2.blogspot. Temen-temen bisa Download Library terbaru ini di http://code. Maka temen-temen akan melihat file file sebagai berikut (Tergantung lib yang didownload linux or Windows): 5 | http://onta-programing. Java Communications Library Java Communications Library terdiri dari dua library.google. Ok library-library tersebut adalah sebagai berikut: 1.  Instalasi Library Ok.  Kita mulai dengan konfigurasi Java Comm. supaya tidak terjadi kesalahan-kesalahan yang tidak perlu. yaitu java comm. Atau temen-temen bisa menggunakan yang ada dalam source code yang disertakan di tutorial ini. Download sesuai Sistem Operasi yang temen-temen gunakan. selanjutnya kita akan melakukan Konfigurasi Librari-Library diatas.com/ . Langkah ini sangat penting untuk dillakukan dengan benar.

qbang. Kalau sudah bisa ikuti langkah2 mudah berikut: a. Copykan file ini ke DIR_INSTALASI_JDK/jre/lib/ext/ File javax.org/pub/rxtx/rxtx-2.properties.  Untuk Mendownload library RxTx temen2 bisa mampir di http://rxtx.comm.dll Copykan file ini ke DIR_INSTALASI_JDK/jre/bin/ c.jar.zip. Perhatikan saja file file ini (Sekali lagi saya gunakan library java comm.1-7-bins-r2.blogspot. Extract File yang telah didownload. Selesai untuk konfigurasi java comm.com/ . Copykan file ini ke DIR_INSTALASI_JDK /jre/lib/ File win32com. Maka temen-temen akan melihat file file sebagai berikut (Tergantung lib yang didownload linux or Windows): 6 | http://onta-programing..b. Untuk windows):    File comm.

temen2 bisa mendownload Library ini di http://www. Ketika selesai di extract.com/ . 3. Copykan file rxtxParallel.jar /jre/lib/ext/ d. dari file2 yang banyak itu kita hanya memerlukan dua file koq.dll untuk modem parallel. Yang akan kita gunakan hanya dua file yaitu RXTXComm.html. tenang. Copykan file RXTXComm.5.6. dan slf4j-simple-1.jar dan file yang sesuai dengan Sistem Operasi Kita (Saya Pilih Windows). (rxtxParallel.b. Kita tinggal masukan dua library itu ke Project (dibahas pada bagian persiapan Project).org/download. namun ada beberapa hal yang harus diperhatikan. Wah buanyak bener ya hehe . a. Maka kita akam mendapatkan banyak file: b. yaitu slf4j-api-1.5. (Library library yang diperlukan sudah ada dalam source code)  Persiapan Project 7 | http://onta-programing. Simple logging facade for Java (slf4j) Untuk Simple logging facade for Java (slf4j) juga tidak ada perlakuan khusus hanya tinggal di extract saja.dll dan rxtxSerial. dan rxtxSerial. c. Selesai.6.blogspot.dll untuk Modem yang Serial) e.slf4j.dll ke ke DIR_INSTALASI_JDK DIR_INSTALASI_JDK/jre/bin/.

1. dan RxTx nya gak usah. Are You Ready to Rock? hehehe PENGEMBANGAN 1. Tambahkan juga library Mysql Connector. Pembuatan database pun bisa dilakukan dengan banyak cara. 6. 3. Akhirnya selesai juga proses persiapan. Kemudian Add Jar/Folder 4. dalam Tree Project ada Folder Libray.com/ . dan Simple logging facade for Java (slf4j). Ingat Cuma Library SMSLib. 7. Masukan Library2 yang kita perlukan. dan Simple logging facade for Java (slf4j). 5. Fyuh. dan Simple logging facade for Java (slf4j) yang diperlukan di folder core_library. untuk Java Comm. Klik Kanan. 2. (Kan udah di Copy-in ke Folder JRE). Tambahkan Library SMSLib. Database Banyak jalan menuju Mekah . Untuk Mempermudah saya sudah jadikan satu Library SMSLib. Buat Sebuah Project Baru di Netbeans. caranya.blogspot. 8 | http://onta-programing. dengan cara Klik Kanan Folder Library -> Add Library -> MySQL JDBC Driver. Bisa Langsung dari MySQL Console.

Supaya gak terlalu banyak tools.   Pastikan dalam Kompie kita udah terinstall MySQL Server. Pada Bagian Kiri Atas Pilih Bagian Service  Kemudian Pilih MsSQL (Connector/J driver) Kemudian Klik kanan dan pilih Connect Using. Ataupun Pake Netbeans.  Maka Akan Muncul Kotak Dialog Ini: 9 | http://onta-programing. saya tunjukan saja pake Netbeans Aja OK.blogspot. Pake SQLTools.Pake PhpMyAdmin.com/ .

Klik Kanan Kemudian pilih Connect. Klok Kanan Kembali Kemudian Pilih Execute Command 10 | http://onta-programing.blogspot.  Setelah terkoneksi.  Isikan Keterangan yang dimaksud. untuk password isikan sesuai dengan password MySQL Temen2 Jika sudah dilakukan maka akan ada tambahan pada panel service.com/ .

'Test 'Test `tanggal_masuk`) VALUES pesan pesan 'D4F29C0E8297E761372806'.Dumping data for table `sms_masuk` -INSERT INTO `sms_masuk` `pdu_pesan`.blogspot. 'Motorola. `isi_pesan` varchar(255) NOT NULL. `encoding`. 1'. `id_gateway` varchar(20) NOT NULL. --. PRIMARY KEY . `no_pengirim` varchar(15) NOT NULL. 'ENC7BIT'. '2009-12-11'). `id_gateway`. (4. (`id_pesan`. (`id_pesan`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 `no_pengirim`. `isi_pesan`. (1. 'D4F29C0E8297E761374806'. `encoding` varchar(20) NOT NULL.  Kemudian Tekan Tombol Run SQL 11 | http://onta-programing. 2'. `pdu_pesan` varchar(255) NOT NULL. Kemudian Copy Patekan Kode Berikut (Atau ada dalam source Code): CREATE DATABASE sms_center. use sms_center.com/ . Setelah Itu Akan Muncul Sebuah Jendela Editor. '2009-12-11').COM3'. CREATE TABLE IF NOT EXISTS `sms_masuk` ( `id_pesan` int(10) unsigned NOT NULL auto_increment. 'Motorola. 'ENC7BIT'. '+0'.COM3'. '+0'. `tanggal_masuk` date NOT NULL.

smsgateway. b.ui Package ini digunakan untuk menampung Class-Class User Interface.image Package ini berfungsi untuk menampung image yang akan kita gunakan.blogspot. ovq. sekarang kita bisa buat Project Utama. Ok Selesai Sudah Persiapan Database.com/ . Setelah dibuat project kita akan terlihat kurang lebih seperti ini: 12 | http://onta-programing. lalu siap membuat Project Utamannya .smsgateway.service Package ini digunakan untuk menampung Class-Class Service SMS. Makan Cemilannya. Project Utama Kembali pada project yang telah kita buat pada persiapan project.smsgateway. c. berikut package yang saya buat: a. d.obj Package ini digunakan untuk menampung Class-Class Beans (Class yang mempunya method setter dan getter). 2. Yup Database Telah Selesai Dibuat dengan nama smscenter dan telah dibuat pula table sms_masuk. ovq. Sekarang buat buat 4 buah package. ovq. Minum Dulu Kopinya.smsgateway. ovq.

smsgateway. private int signal.com/ . } public String getManufacture() { return manufacture. private String simImsi.obj. Setelah itu buat Sebuah Class pada package ovq.Ok. private int baterai. public int getBaterai() { return baterai. private String serialNo. Lalu Ketikan Kode di bawah ini: package ovq. setelah Package kita buat.smsgateway. } public void setManufacture(String manufacture) { 13 | http://onta-programing.com> */ public class Status { private String manufacture.baterai = baterai. kemudian beri nama Status. /** * * @author taopik ridwan <blackonta@gmail. masukan image-image yang akan kita gunakan (Ada pada Folder Image di source code).obj. } public void setBaterai(int baterai) { this. private String model.blogspot.

/** * * @author taopik ridwan <blackonta@gmail.com/ . } } Clas ini merupakan Beans untuk status dari HP/Modem yang kita gunakan. } public String getSerialNo() { return serialNo.model = model. } public void setModel(String model) { this. } public String getSimImsi() { return simImsi.this.serialNo = serialNo.com> */ 14 | http://onta-programing. } public void setSimImsi(String simImsi) { this.blogspot.simImsi = simImsi. Selanjutnya buat sebuah Class pada package ovq.manufacture = manufacture. Dari namanya kita bisa mengetahui bahwa fungsi dari Class ini adala untuk membuat koneksi ke database.service.sql.smsgateway. } public int getSignal() { return signal.signal = signal.smsgateway. } public void setSignal(int signal) { this. Kemudian Ketikan Kode berkut: package ovq. } public void setSerialNo(String serialNo) { this. import java.Connection. Kemudian Beri nama MYSQLConnection.DriverManager. } public String getModel() { return model.service.sql. import java.

java.smslib.smslib.swing.blogspot.forName("com.Status.AGateway. } } Untuk username dan passwordnya sesuaikan dengan konfigurasi MySQLnya masing2. java.smslib.modem. org. javax. Class.smslib. String user = "root". org.com/ .IGatewayStatusNotification.ICallNotification. pass).IInboundMessageNotification. org. user.smsgateway. kemudian beri nama SMSReadService.newInstance(). /** * * @author taopik ridwan <blackonta@gmail. Karena semua aktifitas yang berhubungan dengan Aktifitas SMS Gateway di kerjakan Oleh Class Ini. koneksi = DriverManager.smslib. kita buat sebuah Class yang paling penting dari keseluruhan Program ini.modem. org.smslib. private JTextArea textArea.SerialModemGateway. String pass = "*".SQLException.obj.public class MYSQLConnection { public static Connection buatKoneksi() throws Exception{ String url = "jdbc:mysql://localhost/sms_center". Setelah itu.smsgateway. Connection koneksi = null. 15 | http://onta-programing.smslib.AGateway. org.JTextArea. org.Message.PreparedStatement. org. Kemudian Ketikan Kode Berikut: package ovq.smsgateway.Service.smslib.sql.service.InboundMessage.service.smslib. org.Protocols.ModemGateway.Driver").com> */ public class SMSReadService { //panel status private Status status = null.mysql.jdbc.smslib. return koneksi.getConnection(url. Buat Class pada package ovq.MessageTypes.GatewayStatuses. org.sql.sql.IPProtocols. org. ovq. import import import import import import import import import import import import import import import java.Connection.

this. gateway. //merk HP "C380").setSerialNo(gateway.textArea = textArea.status. JTextArea textArea) { this.service. } public void startService() throws Exception { PesanMasukHandler pesanMasuk = new PesanMasukHandler(). this.setCallNotification(panggilanMasuk).service. if(status != null ) { this. this.Service service.//Tipe HP gateway. gateway.setGatewayStatusNotification(statusGateway).koneksi = koneksi.status = status.getModel()).addGateway(gateway).service = new Service().getImsi()). //Port yang digunakan 57600. this.COM3". this. this.service. private Connection koneksi.status.setSignal(gateway.setModel(gateway. GatewayStatusHandler statusGateway = new GatewayStatusHandler().setIpProtocol(IPProtocols. this. 16 | http://onta-programing.service. } public void setStatus(Status status) { this.service. this.getSerialNo()). this. SerialModemGateway gateway = new SerialModemGateway ( "Motorola.status. //nama GAteway "COM3". gateway.getSignalLevel()). public SMSReadService( Connection koneksi.setInboundMessageNotification(pesanMasuk).setInbound(true).setProtocol(Protocols.status.setSimImsi(gateway.blogspot. this.startService().status.setOutbound(true). this.com/ .PDU). //baudrate "Motorola". PanggilanMasukHandler panggilanMasuk = new PanggilanMasukHandler().setManufacture(gateway.BINARY).getManufacturer()).setSimPin("0000"). gateway.

getSmscNumber() +"\n"+ pesanMasuk. prepare. prepare.STATUSREPORT) return. prepare.getGatewayId()).executeUpdate().append("\n-----------------------------"). String noHP) { } } class GatewayStatusHandler implements 17 | http://onta-programing.setBaterai(gateway.sql. } textArea. pesanMasuk. pesanMasuk.append("\nPesan Diterima:\n"+ pesanMasuk.?. pesanMasuk.setString(5.getText()).out. "+"+pesanMasuk. try { SMSReadService. MessageTypes tipePesan.?.setDate(6.?.getText()).getMpRefNo()).service.?)". System.println("Pesan Gagal Disimpan"). pesanMasuk.getMessage()).setString(2.setString(4.getPduUserData()). textArea. prepare. } catch (Exception e){ } } } class PanggilanMasukHandler implements ICallNotification { public void process( String idGateway.deleteMessage(pesanMasu k).this.out.getBatteryLevel()).println(ex.name()).setString(3.this.blogspot.?. try { String sql = "INSERT INTO sms_masuk VALUES (NULL.getEncoding(). } } class PesanMasukHandler implements IInboundMessageNotification { public void process( String idGateway.status. prepare.setString(1. } catch (SQLException ex) { System. prepare.getDate().prepareStatement(sql).com/ . prepare. InboundMessage pesanMasuk) { if(tipePesan == MessageTypes.?.Date(pesanMasuk. PreparedStatement prepare = koneksi.getTime())). new java.

sehingga program kita akan mulai memonitor sms yang masuk. Kemudian Method startService().com/ .?. Adapun isi dari Class PesanMasukHandler adalah: class PesanMasukHandler implements IInboundMessageNotification { public void process( String idGateway. = "INSERT INTO sms_masuk VALUES 18 | http://onta-programing.textArea = textArea.?.?. GatewayStatuses statusBaru) { } } } Penjelasan: Kita mulai dari Konstruktor Class SMSReadService public SMSReadService( Connection koneksi. this.STATUSREPORT) return. PesanMasukHandler Class ini adalah Class yang nantinya di jalankan ketika ada SMS yang masuk. Jadi jika ada pesan/SMS masuk.?)".blogspot. MessageTypes tipePesan. yaitu Connection. kemudian JTextArea. JTextArea textArea) { this. Method ini merfungsi untuk memulai Service. PesanMasukHandler pesanMasuk = new PesanMasukHandler(). GatewayStatuses statusLama. Maka PesanMasukHandler akan dijalankan. InboundMessage pesanMasuk) { if(tipePesan == MessageTypes. yang nantinya dibutuhkan ketika menyimpan SMS kedalam Database.?. yang dibutuhkan nanti ketika kita menampilkan Log SMS.koneksi = koneksi.IGatewayStatusNotification { public void process( String idGateway. try { String sql (NULL. } Konstuktor dari Class SMSReadService membutuhkan dua parameter.?.

setString(2. prepare.getDate(). prepare.getText()). textArea.PreparedStatement prepare = koneksi.append("\n-----------------------------"). "+"+pesanMasuk. } textArea. PanggilanMasukHandler panggilanMasuk = new PanggilanMasukHandler(). prepare. Dalam kode diatas Class PanggilanMasukHandler dan Class GatewayStatusHandler sebagai berikut: 19 | http://onta-programing.deleteMessage(pesanMasuk).Date(pesanMasuk. prepare. kemudian menampilkannya kedalam JTextArea.getGatewayId()). prepare.getText()).sql.getPduUserData()).com/ . } catch (SQLException ex) { System.blogspot. Sedangkan GatewayStatusHandler berfungsi sebagai Class yang menangani perubahan Status Gateway.service.getSmscNumber() +"\n"+ pesanMasuk.out.name()).println("Pesan Gagal Disimpan").setString(3. } catch (Exception e){ } } } Dalam kode diatas. System. prepare. pesanMasuk.getMpRefNo()).setString(4 pesanMasuk. jika ada pesan masuk maka program akan memasukan pesan kedalam database. try { SMSReadService. new java.getEncoding().setString(1.out.println(ex.getMessage()).this.executeUpdate(). PanggilanMasukHandler Berfungsi sebagai Class yang menangani jika terjadi penggilan masuk pada HP/Modem yang kita gunakan. prepare.setString(5. pesanMasuk. pesanMasuk. GatewayStatusHandler statusGateway = new GatewayStatusHandler().append("\nPesan Diterima:\n"+ pesanMasuk.setDate(6.getTime())).prepareStatement(sql).

Line pertama dari kode diatas adalah kita memanggil Class Service pada Library SMSLib. GatewayStatuses statusBaru) { } } Lho.com/ . "C380").blogspot. gateway. yupz benar. this. "COM3".setInbound(true).setSimPin("0000").setOutbound(true). jadi ketika terjari panggilan atau perubahan status Gateway. gateway. 57600. "Motorola".BINARY). SerialModemGateway gateway = new SerialModemGateway ( "Motorola.class PanggilanMasukHandler implements ICallNotification { public void process(String idGateway. GatewayStatuses statusLama.PDU). tidak akan ada reaksi apa2. untuk penanganan panggulan dan perubahan gateway kita biarkan kosong. gateway.service = new Service().setIpProtocol(IPProtocols. Ada dua pilihan   SerialModemGateway Berfungsi pada HP/Modem dengan tipe koneksi Serial IPModemGateway Berfungsi pada HP/Modem dengan tipe koneksi IP 20 | http://onta-programing. kemudian dilanjut dengan menginstansiasi Gateway. gateway.setProtocol(Protocols. gateway.COM3". String noHP) { } } class GatewayStatusHandler implements IGatewayStatusNotification { public void process( String idGateway. Class diatas kan kosong????.

setGatewayStatusNotification(statusGateway).addGateway(gateway).setManufacture(gateway. gateway.getManufacturer()). dan false untuk sebaliknya gateway.service. true jika kita ingin agar gateway menerima pesan masuk.startService(). this. dan false untuk sebaliknya.setSimImsi(gateway.service.status.service. Line pertama menambahkan gateway pada service. this. sehingga program dalam keadaan Stand By untuk menerima SMS.service.setOutbound(true).getImsi()). this. Kode yang terakhir: if (status != null ) { this.setSerialNo(gateway.com/ . gateway.html Kemudian Selanjutnya kita mengeset parameter-parameter pada gateway.setSignal(gateway.setBaterai(gateway. } 21 | http://onta-programing.getBatteryLevel()).status.getModel()). Penjelasan lebih lanjut mengenai parameternya bias temen2 lihat di postingan sebelumnya http://onta- programing.setCallNotification(panggilanMasuk). Mengeset Handler-Handler yang telah di instansiasi pada Service. this.getSignalLevel()). jika HP/Modem yang kita gunakan menggunakan pin.setSimPin("0000").setInboundMessageNotification(pesanMasuk). line kedua memulai service.getSerialNo()).Namun parameter untuk keduanya adalah sama.setInbound(true).status. this.status. this.setModel(gateway.com/2009/08/membuat-aplikasi-sms-gatewaysederhana.blogspot. this.service. this. this.status. true jika kita ingin agar gateway bisa mengirim pesan. Ganti 0000 dengan pin HP/Modem. this.blogspot.status.

Pembuatan GUI Dalam Tutorial Kali Ini Kita Akan membuat sebuah SMS Gateway Control Panel sebagai berikut: 22 | http://onta-programing.com/ .blogspot. Ok.Mengeset properties Status. kalau ada yang masih kurang jelas bisa Tanya jawab di Blog or di FB.

Pertama Kita Akan Buat Panel Indikator/Panel Status HP/Modem. Mengenai property yang lainnya lihat di Source code 6.ui. 3. Lalu Tambahkan Komponen-komponen sehingga tampak sebagai berikut: 4.com/ . baterai. Buat Sebuah Panel baru pada package ovq. serialNo. Ubah Variable name dari label lebe yang ditandai menjadi (Berurutan): signal. model.smsgateway.getSignal() +" % "). 2. . kemudian tambahkan kode 23 | http://onta-programing. 5. manufacture.setText(s. Beralih Ke mode Code berikut: public void setStatus(Status s){ signal. Beri Nama Panel tersebut dengan nama PanelIndikator. dan imsi.blogspot. 1.

tambahkan variable berikut: public static final int KONEKSI_ERROR = 0.setIcon(new ImageIcon(getClass() .baterai.setIcon(new ImageIcon(getClass() . 5.setText("Model : "+s.blogspot.setText("Modem Manufacture: "+ s. jLabel1. String s){ if(status == KONEKSI_ERROR ){ jLabel1. }else if(status == TERSAMBUNG ){ jLabel1. Selesai. jLabel1. Done.smsgateway.setText(s). Error dan penanganannya dibahas pada bagian error dan penanganannya.getModel()). Buat Sebuah Panel baru pada package ovq.getManufacture()). Done. model.setText(s.getResource("/ovq/smsgateway/image/mobile_phone. Selsesai. trus kita lanjutin .getSimImsi()). Ok. Lalu Tambahkan sebuah JLabel sehingga tampak sebagai berikut 4.ui. Error dan penanganannya dibahas pada bagian error dan penanganannya. makan lagi cemilannya.setIcon(new ImageIcon(getClass() .getSerialNo()). Selanjutnya kita akan membuat Panel Status Bar.setText("SIM IMSI : " + s. Minum lagi kopinya.setText("Serial No/IMEY: "+ s. manufacture. 2. public static final int TERSAMBUNG = 1. Beri Nama Panel tersebut dengan nama PanelStatus. imsi.com/ .getResource("/ovq/smsgateway/image/error. jLabel1.png"))). } 7. }else if(status == TERPUTUS ){ jLabel1.getBaterai() + " %").png"))). serialNo. Beralih Ke mode Code . public static final int TERPUTUS = 3.setText(s). 1. 24 | http://onta-programing. kemudian tambahkan kode berikut: public void setStatusKoneksi(int status. } } 6.setText(s).getResource("/ovq/smsgateway/image/mobile_phone_off. 3.png"))).

com/ . class TabelModel extends AbstractTableModel { String[] kolomHeader = { "Id SMS". Tambahkan sebuah JTable pada JDialog.length. 3. "Tanggal"}. "PDU"..ui. "Encoding". fireTableDataChanged().length. Beralih Ke mode Code . 1.blogspot. } public int getColumnCount() { return kolomHeader. public void addData(Object[][] obj){ data = obj. 5. tambahkan Kode berikut.smsgateway. } public int getRowCount() { return data. Buat Seuah JDialog pada package ovq. "No SMS". dan pilih BorderLayout. kemudian beri nama JDialog tersebut dengan nama DialogPesanMasuk. 2. sebagai model untul JTable."SMS". Object[][] data. 25 | http://onta-programing. 4. ubah variable namenya menjadi tabelPesan. Ubah Layout dari JDialog tersebur menjadi BorderLayout dengan Cara Klik Kanan Pada dialog. "Id Gtateway". kIta buat sebuah dialog untuk melihat pesan yang masuk.Sekarang. kemudian pilih Set Layout.

getString(4).koneksi = koneksi. res. data[p][3] = res.getRow(). ResultSet res = prepare. data[p][5] = res. columnIndex) { return data[rowIndex][columnIndex]. } } int 6. p++.getColumnModel(). res.prepareStatement(sql).blogspot.} public Object getValueAt(int rowIndex. data[p][4] = res. data[p][1] = res.addData(data). try { String sql = "SELECT * FROM sms_masuk".getString(5).getString(6).com/ .next()) { data[p][0] = res. = 26 | http://onta-programing.getColumn(0). tabelPesan.setPreferredWidth(2 5).getDate(7). Object[][] data = new Object[n][7].getColumnModel(). while (res.getString(2). data[p][2] = res. data[p][6] = res.getColumn(1). tabelPesan.getString(3).getColumn(2). PreparedStatement prepare koneksi.executeQuery().setModel(model). Lalu tambahkan variable berikut: public void setKoneksi(Connection koneksi){ this.setPreferredWidth(2 55). } TabelModel model = new TabelModel().beforeFirst(). tabelPesan.setPreferredWidth(5 5). int n = res. //modifikasi lebar kolom tabelPesan.last().getInt(1). model. int p = 0. } @Override public String getColumnName(int column) { return kolomHeader[column].getColumnModel().

Masih tersisa kopinya minum lagi deh hehe. 2. Jika temen2 mendapatkan pesan seperti ini saat men-drag PanelStatus dan PanelIndikator.getColumnModel().printStackTrace(). 1. Caranya Klik Kanan Pada Project. Ok.setPreferredWidth(5 5).smsgateway.getColumn(4). } catch (SQLException ex) { ex. tabelPesan. tabelPesan. Selesai. kemudian pilih Clean and Build 27 | http://onta-programing.com/ . 3.blogspot. 4. Buat sebuah JFrame pada package ovq. Error dan penanganannya dibahas pada bagian error dan penanganannya. Sekarang kita akan membuat GUI Utama.setPreferredWidth(5 5). tabelPesan. } } 7.getColumnModel().getColumn(5). kemudian beri nama JFrame tersebut dengan nama SMSGatewayView.getColumn(3).setPreferredWidth(5 5). Maka Lakukan Compile.setPreferredWidth(2 55).getColumnModel().getColumnModel().tabelPesan.getColumn(6). Kemudian Drag PanelStatus dan PanelIndikator yang telah kita buat sebelumnya ke JFrame.ui.

blogspot. 6. dan Satu Buah JTextArea. Kemudian tambahkan tiga buah JButton.5. untuk membuat lebih enak dilihat.com/ . Nah Sekarang Coba lagi lakukan langkah 2. Atur sehingga Frame tampak seperti berikut: 28 | http://onta-programing. tambahkan pula Sebuah JLabel Sebagai Header.

7. buttonKeluar.setStatus(status).buatKoneksi().setStatusKoneksi( PanelStatus.setStatus(status). } SMSReadService smsService = new SMSReadService(koneksi. }catch(Exception e){ panelStatus1. 29 | http://onta-programing. logArea).TERSAMBUNG. "Service tersedia"). panelStatus1. Kemudian Tambahkan Action Performed pada buttonStart: try{ koneksi = MYSQLConnection. "Error saat Koneksi ke database").setStatusKoneksi( PanelStatus.TERSAMBUNG.com/ . } 9. buttonLihatPesan. try { smsService.exit(0).setStatusKoneksi( PanelStatus. Rubah Variable Name dari Button menjadi buttonStart. smsService. 8. dan JTextArea menjadi logSMS. "Erros saat mulai Service").KONEKSI_ERROR. } catch (Exception ex) { panelStatus1. return. } if(koneksi == null){ return.startService panelIndikator1. Kemudian Tambahkan Action Performed pada buttonKeluar: System.blogspot.

showMessageDialog(this. Error dan penanganannya dibahas pada bagian error dan penanganannya. Dan kalau tidak ada eeror. maka kita bisa compile dan run. Sampai tahap ini program kita sudah jadi. return.blogspot.setKoneksi(koneksi). Kemudian Tambahkan Action Performed pada buttonLihatPesat: if(koneksi == null ){ JOptionPane. } DialogPesanMasuk dlgPesan = new DialogPesanMasuk(this. true). "Start Service terlebih dahulu!!").setVisible(true). dlgPesan. 11. dlgPesan. Screenshoot Sebelum Service di Start 30 | http://onta-programing.10. Selesai.com/ .

blogspot.Setelah Service di Start Jika melihat Pesan masuk Namun Service belum dilakukan start Dialog Pesan Masuk 31 | http://onta-programing.com/ .

Kalau diikuti dengan baik insya Allah gak ada Error. hehe 2. silahkan Komentar di Blog or do FB. Kalau Masih ada Error.blogspot.com/ . and Keep Moving Forward.Error dan Penanganannya Error yang mungkin terjadi dalam mengikuti turoal ini adalah sebagai berikut: 1. Tp Sebelum Ditutup Gak salah Kalo Baca dulu Breaktime nya. Selamat Berjuang. hehe 32 | http://onta-programing. Tanya Jawab Tanya jawabnya di Bolg aja ya ato di FB ----------------------Huhuy kuta sekarang punya aplikasi SMS Gateway Sendiri.

html 33 | http://onta-programing. tunggu 30 dtk dan walahhhhh anda mendapatkan 0.idrclickit.blogspot. gampangkan??? Sok atuh di klik aja linknya http://www.com/?r=blackonta Yang ini juga sama Cuma yang ini versi Indonesia https://www.com/ .com/register.neobux.neobux. kemudian Verifikasei keanggotaan temen2.01 Dolar.php/blackonta.html Okede. Kemudian Login dan Klik Ads Surf.idr-clickit. Caranya gampang tinggal klik disini http://www. Tp kalau nanti temen2 punya referral. klo diminta no rekening bank. Caranya sama. trus tingal Klik Deh.php/blackonta. maka temen2 juga dapat bagian. dan referalnya itu ngklik iklan. sok Diklik Juga yang ini https://www. isikan aja angka sembarang Ok.Breaktime Berikut ini daftar Pay Per Click Artinya Sekali Klik Dapat Uang.com/?r=blackonta Isikan keterangan yang diminta.com/register.

6681. C65. EagleTec: GSM modems. Sony Ericsson: K300i. 6822. WMOD2 Wismo. 6020. 6310. TC65t. C45. 6230. Samsung: D520. 6230i. GT48. Fastrack Supreme 10. 8250. M50. K700i. 6103. SIMCOM Ltd: SIMCOM_SIM100S.Daftar HP Yang bisa digunakan                  Billionton: PCMCIA PCGPRSQ-B. i320. W800. W810. Motorola: V3. M1306B. Fargo Maestro 20. SE K800i. Nokia: 6070. 30 (terminal). Ubinetics: GDC201. WM1080A. M65. 6210. 6800. TC35i. 34 | http://onta-programing. Multitech: Multimodem GPRS (SMSLib for Java can also drive the Multitech Multimodem via its IP port). Wavecom: M1206B. GC89. 6100. 6310i. Teltonika: ModemUSB. K750i. Siemens: MC35i. Sharp: GX30. 6810. 3220. 5140. W880i. WISMOQCDMA CDMA.blogspot. Janus: GSM864Q. 7210. 7250i. SE W850i. GX32. 6610. M55. Huawei: E220 (may require the forced setting of SMSC address). Z550a. C380.com/ . M35. ITengo: 3000. 8310. 5140i. W580i.

Sign up to vote on this title
UsefulNot useful