Introduction
STK refers to SIM Tookit or SIM Tool Kit.
SAT refers to SIM Application Toolkit
Both terms are interchangeable.
Java Sample Code
Declaring variables
static Variant vMOBITEK; static boolean bMOBITEK; static int iMOBITEK; static String sMOBITEK; //construct objects for each class in "MobitekSTK6.dll" static ActiveXComponent Modem = new ActiveXComponent ("MobitekSTK6.Modem"); static ActiveXComponent STKAPI = new ActiveXComponent ("MobitekSTK6.SIMToolKit"); static ActiveXComponent SMS = new ActiveXComponent ("MobitekSTK6.SMS");
To send SMS in java
public static void sendMessage() //SV: to send SMS; maximum 160 characters { //########### turn delivery status report on ####################### //call API to turn delivery status report on vMOBITEK = SMS.invoke("DeliveryReportOn"); //the return value of "DeliveryReportOn" is a boolean bMOBITEK = vMOBITEK.getBoolean(); //AQ : therefore assign bMOBITEK as return value of "DeliveryReportOn" if (bMOBITEK) { System.out.println("Delivery status report is turned on."); } else { System.out.println("Delivery status report is NOT turned on!"); } //########### end: turn delivery status report on ####################### //------------------ send SMS ---------------------------------------- //set value of property; //"ToNumber" is the recipient's number; SMS.setProperty("ToNumber", "0176096718"); //"ToMessage" is the SMS to be send to the recipient; maximum 160 characters SMS.setProperty("ToMessage", "Hello from JAVA with SMS API version 7. Test no. 6"); //AQ : call API to send new message vMOBITEK = SMS.invoke("SendSMS"); //AQ : the return value of "SendSMS" is a boolean bMOBITEK = vMOBITEK.getBoolean(); //AQ : therefore assign bMOBITEK as return value of "SendSMS" if (bMOBITEK) { System.out.println("Message sent!"); //try 3 times for (int i=1; i<=3; i++) { try { //AQ : call API to get delivery report vMOBITEK = SMS.invoke("GetDeliveryReport"); //AQ : the return value of "GetDeliveryReport" is a boolean //AQ : therefore assign bMOBITEK as return value of "GetDeliveryReport" bMOBITEK = vMOBITEK.getBoolean(); if (bMOBITEK) { //when "GetDelIveryStatusReport = True", then get value of properties int DRStatus = SMS.getPropertyAsInt("DRStatus"); String DRMNRecipient = SMS.getPropertyAsString("DRMNRecipient"); String DRMsgRef = SMS.getPropertyAsString("DRMsgRef"); String DRFDate = SMS.getPropertyAsString("DRFDate"); String DRFTime = SMS.getPropertyAsString("DRFTime"); String DRRDate = SMS.getPropertyAsString("DRRDate"); String DRRTime = SMS.getPropertyAsString("DRRTime"); if (DRStatus == 1) { //System.out.println("The status of your outgoing SMS with reference number, " + DRMsgRef + ", is " + DRStatus + "."); System.out.println("The status of your outgoing SMS with reference number, " + DRMsgRef + ", is delivered."); System.out.println("Your outgoing SMS was received by the SMS Centre on " + DRRDate + ", at " + DRRTime + ", and was successfully delivered to " + DRMNRecipient + ", on " + DRFDate + ", at " + DRFTime + "."); } else if (DRStatus == 0) { //System.out.println("The status of your outgoing SMS with reference number, " + DRMsgRef + ", is " + DRStatus + "."); System.out.println("The status of your outgoing SMS with reference number, " + DRMsgRef + ", is not delivered."); System.out.println("Your outgoing SMS was received by the SMS Centre on " + DRRDate + ", at " + DRRTime + ", and was NOT successfully delivered to " + DRMNRecipient + "."); } else if (DRStatus == 2) { //System.out.println("The status of your outgoing SMS with reference number, " + DRMsgRef + ", is " + DRStatus + "."); System.out.println("The status of your outgoing SMS with reference number, " + DRMsgRef + ", is unknown."); System.out.println("Your outgoing SMS was received by the SMS Centre on " + DRRDate + ", at " + DRRTime + ", and NO status is available."); } break; } else { System.out.println("No delivery status report available!"); } //SV: wait for 5 seconds before looping; delivery report from GSM network takes time Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } else { System.out.println("Message NOT sent!"); } //------------------ end: send SMS ---------------------------------------- }
To Read SMS in java
public static void readMessage() { //AQ : readMessage() function is for modem to read incoming message from the sender //------------------------------------------- read SMS ------------------------------------------- //call API to read incoming SMS vMOBITEK = SMS.invoke("ReadSMS"); //AQ : the return value of "ReadSMS" is a boolean, therefore assign bMOBITEK as return value of "ReadSMS" bMOBITEK = vMOBITEK.getBoolean(); //if there is new SMS, then get property if (bMOBITEK) { //property "MN" is the sender's mobile number String InNumber = SMS.getPropertyAsString("MN"); //property "MSG" is the sender's message String InMessage = SMS.getPropertyAsString("MSG"); //property "SCTS" time of the message received by SMS Centre String InTime = SMS.getPropertyAsString("SCTS"); System.out.println("Incoming SMS Read \n From: " + InNumber + "\n Message: "+ InMessage + "\n Time: " + InTime ); } else { System.out.println("No incoming SMS!"); } //---------------------------------------- end: read SMS ----------------------------------------- }
More Information
- MOBITEK Q24 STK Modem Hub
- MOBITEK STK API
- Java Sample Code for MOBITEK STK API version 6.2 — InputRequest() and InputSubmit()
- Using MOBITEK STK API version 6.2 with Java
- How to Send and Read SMS in Java with MOBITEK SMS API v. 9
- List of Customers of MOBITEK STK API and MOBITEK Q24 STK MODEM
- Does MOBITEK STK API Support Android OS?