[Java] SMS Gateway dengan Modem Zoglab Q2687RD
Baru-baru ini gw dapet kerjaan untuk membuat suatu sistem notifikasi yang terhubung dengan modem SMS, kebetulan modem yang dipakai adalah modem dengan merk Zoglab seri Q2687RD. Awalnya gw pikir menggunakan metode konvensional, menggunaan 7bit sms gateway ala-ala skripsi jaman gw masih kuliah, dan ternyata rada berbeda format AT Command-nya.
Oh ya, sebelumnya ini adalah wujud modemnya. Sekilas agak aneh, karena ada colokan power dibelakangnya tapi waktu membeli engga dapet kabel powernya. Ternyata powernya bisa lewat kabel USB.
Oke, berikut adalah class java yang gw gunakan untuk testing sending SMS, kebetulan gw menggunakan library RXTXcomm.jar.
package com.edw.commportchecker; import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import java.io.OutputStream; import java.util.Enumeration; public class Main { private OutputStream outputStream; private SerialPort serialPort; private void doSomething() throws Exception { Enumeration portList = CommPortIdentifier.getPortIdentifiers(); System.out.println(portList.hasMoreElements()); while (portList.hasMoreElements()) { CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == 1) { System.out.println("connecting to " + portId.getName()); } // kebetulan modem kedetect sebagai COM3 if (portId.getName().equalsIgnoreCase("COM3")) { this.serialPort = ((SerialPort) portId.open("SMSGateway", 2000)); } } this.serialPort.setSerialPortParams(9600, 8, 1, 0); this.serialPort.setFlowControlMode(0); this.outputStream = this.serialPort.getOutputStream(); System.out.println("sending"); // gunakan prefix +62, contoh : +62856727xxxx // agak aneh nih, sebelumnya tanpa prefix "+" jalan, tapi ditengah jalan tiba2 jadi ga jalan T_T String nomerHp = ""; // content sms yang akan dikirim String contentSMS = "ini isi sms-nya"; sendToStream("AT\r"); sendToStream("AT+CMGF=1\r"); sendToStream("AT+CMGS=\""+nomerHp+"\"\r\n"); sendToStream(contentSMS); sendToStream("\032"); System.out.println("finish"); System.exit(1); } private void sendToStream(String content) throws Exception { System.out.println(">" + content); this.outputStream.write(content.getBytes()); this.outputStream.flush(); Object o = new Object(); synchronized ( o ) { o.wait(1500L); } } public static void main(String[] args) { Main main = new Main(); try { main.doSomething(); } catch (Exception e) { e.printStackTrace(); } } }
No Comments