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