- Beranda
- Komunitas
- Tech
- Programmer Forum
[ASK] Mengirim USSD ke Modem Pool dengan Java dan AT Commands


TS
Veonicarin
[ASK] Mengirim USSD ke Modem Pool dengan Java dan AT Commands
Hallo gans, saya mau tanya ada yang pernah mainan AT Command dan Java buat mengirim kode USSD? saya ingin membuat program sms dan ussd, untuk yang sms sudah working dan sekarang tinggal yang ussd, untuk source codenya :
Spoiler for Gsm.java:
Code:
import com.fazecast.jSerialComm.SerialPort;
import com.fazecast.jSerialComm.SerialPortDataListener;
import com.fazecast.jSerialComm.SerialPortEvent;
import com.google.common.base.Splitter;
import java.util.logging.Logger;
public class Gsm {
private SerialPort serialPort;
private Logger logger;
private String result;
public boolean initialize(String port) {
logger = Logger.getLogger("SP1");
logger.info("Application start");
serialPort = SerialPort.getCommPort(port);
if (serialPort.openPort()) {
logger.info("Port "" + serialPort.getSystemPortName() + "" was opened");
serialPort.addDataListener(new SerialPortDataListener() {
@Override
public int getListeningEvents() {
return SerialPort.LISTENING_EVENT_DATA_AVAILABLE;
}
@Override
public void serialEvent(SerialPortEvent event) {
logger.info("receiving data");
byte[] msg = new byte[serialPort.bytesAvailable()];
serialPort.readBytes(msg, msg.length);
String res = new String(msg);
result = res;
}
});
return true;
} else {
logger.warning("Failed to open port "" + serialPort.getSystemPortName() + "", application stopped.");
return false;
}
}
/**
* Execute USSD command
*
* @param ussd : the USSD command
* @return String contains the response
*/
public String executeUSSD(String ussd) {
String cmd = "AT+CUSD=1,"" + ussd + "",15\r\n";
result = "";
serialPort.writeBytes((cmd).getBytes(), cmd.getBytes().length);
while (result.equals("")) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (result.contains("ERROR")) {
return result;
}
while (result.contains("OK")) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
String str = "";
if (result.contains("CUSD")) {
str = result.substring(12, result.length() - 6);
//String[] arr = str.split("(?<=\\G....)");
Iterable<String> arr = Splitter.fixedLength(4).split(str);
str = "";
for (String s : arr) {
int hexVal = Integer.parseInt(s, 16);
str += (char) hexVal;
}
}
return str;
}
}
Spoiler for Main.java:
Code:
import gnu.io.CommPortIdentifier;
import gnu.io.NRSerialPort;
import gnu.io.SerialPort;
import java.util.Enumeration;
public class Main {
static Enumeration portList;
static CommPortIdentifier portId;
static SerialPort serialPort;
public static void main(String args[]) throws Exception {
// Check Available ports
String port = "";
for(String s:NRSerialPort.getAvailableSerialPorts()){
System.out.println("Availible port: "+s);
port=s;
}
int baudRate = 115200;
NRSerialPort serial = new NRSerialPort(port, baudRate);
System.out.println("Serial Connect : " + serial.connect());
System.out.println("Serial is Connected : " + serial.isConnected());
System.out.println("=============================================");
// send USSD
Gsm gsmUSSD = new Gsm();
System.out.println(gsmUSSD.initialize("COM14"));
System.out.println(gsmUSSD.executeUSSD("*363#"));
// send SMS
//USBModem gsmSMS = new USBModem("COM14", 115200);
//gsmSMS.sendSMS("+62xxx", "coba send sms dari java....");
}
}
Diubah oleh Veonicarin 07-08-2020 08:42
0
530
Kutip
1
Balasan


Komentar yang asik ya
Urutan
Terbaru
Terlama


Komentar yang asik ya
Komunitas Pilihan