📄 commportmodem.java~112~
字号:
package keti2;
import java.awt.*;
import java.io.*;
import javax.comm.*;
import java.util.*;
import java.util.StringTokenizer;
import java.lang.CharSequence;
import sun.io.*;
import java.lang.Integer;
/**
* Subclasses CommPortOpen and adds send/expect handling for dealing
* with Hayes-type modems.
*
*/
public class CommPortModem extends CommPortOpen {
/** The last line read from the serial port. */
protected String response;
QueueLink recesms=new QueueLink();
QueueLink smsindex=new QueueLink();
Boolean HasNewsms;
/** A flag to control debugging output. */
protected boolean debug = true;
public CommPortModem(Frame f)
throws IOException, NoSuchPortException,PortInUseException,
UnsupportedCommOperationException {
super(f);
}
/** Send a line to a PC-style modem. Send \r\n, regardless of
* what platform we're on, instead of using println( ).
*/
public void WritePort(String s) throws IOException {
if (debug) {
System.out.print(">>> ");
System.out.print(s);
System.out.println( "");
}
os.print(s);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// nothing to do
}
os.flush();
/*make truely write into the port*/
// Expect the modem to echo the command.
//if (!expect(s)) {
//System.err.println("WARNING: Modem did not echo command.");
//}
// The modem sends an extra blank line by way of a prompt.
// Here we read and discard it.
//String junk = is.readLine( );
//if (junk.length( ) != 0) {
//System.err.print("Warning unexpected response: ");
//System.err.println(junk);
//}
}//end WritePort
/** Read a line, saving it in "response".
* @return true if the expected String is contained in the
response, false if not.
*/
public String ReadPort() throws IOException {
byte[] buffer= new byte[40000];
String smsget=new String();
String []sms=new String[40];
//String []index=new String[40];
for(int l=1;l<40;l++)
sms[l]="";
try {
Thread.sleep(10500);
}
catch (InterruptedException e) {
//nothing to do
}
is.read(buffer);
smsget=new String(buffer);
response=smsget;
response=response.trim();
StringTokenizer stringtokenizer=new StringTokenizer(response);
// System.out.print(response);
int i=stringtokenizer.countTokens();
if(i>=5)
{
String s2 = new String();
s2 = stringtokenizer.nextToken();
s2 = stringtokenizer.nextToken();
s2 = stringtokenizer.nextToken();
s2 = stringtokenizer.nextToken();
int j = 4;
int k = 1;
int h = 0;
while (j <= i) {
do {
if (j < i) {
s2 = stringtokenizer.nextToken();
if (h != k) {
//index[k] = s2;
System.out.print("\n");
System.out.print(s2);
System.out.print("\n");
//index[k] = index[k].substring(0, index[k].length() - 5);
// System.out.print(index[k]);
System.out.print("\n");
h++;
}
if(!s2.equals("OK"))
sms[k] = sms[k] + s2;
}
j++;
}
while ( (j < i) && (!s2.equals("+CMGL:")));
k++;
} //end while
//System.out.print(k);
for (int m = 1; m <= k; m++)
sms[m] = sms[m].trim();
if (k > 3) {
for (int m = 1; m <= k - 3; m++) {
sms[m] = sms[m].trim();
sms[m] = sms[m].substring(0, sms[m].length() - 6);
recesms.Enqueue(sms[m]);
//smsindex.Enqueue(index[m]);
}
sms[k - 2]= sms[k - 2].trim();
//sms[k - 2] = sms[k - 2].substring(0, sms[k - 2].length() - 2);
recesms.Enqueue(sms[k - 2]);
//smsindex.Enqueue(index[k - 2]);
}
else if (k == 3)
{
sms[k - 2].trim();
// sms[k - 2] = sms[k - 2].substring(0, sms[k - 2].length() - 2);
recesms.Enqueue(sms[k - 2]);
//smsindex.Enqueue(index[k - 2]);
}//endelseif(k==3)
else
{
System.out.print("\n");
System.out.print("NO SMS COME here\n");
}//end else
}//endif
if (debug) {
System.out.print("\n");
}
return sms[1];
}
public String read()throws IOException{
String smsget=new String();
byte[] buffer= new byte[400];
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// nothing to do
}
is.read(buffer);
smsget=new String(buffer);
response=smsget;
response=response.trim();
return response;
}
public String readshort()throws IOException{
String smsget=new String();
byte[] buffer= new byte[400];
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// nothing to do
}
is.read(buffer);
smsget=new String(buffer);
response=smsget;
response=response.trim();
return response;
}
public int getGSMresponse()
{
int i=0;
int nGSMState;
String test=new String();
System.out.print(response);
StringTokenizer stringtokenizer1=new StringTokenizer(response);
i=stringtokenizer1.countTokens();
nGSMState=3;//gsm_wait
while(stringtokenizer1.hasMoreTokens())
{
test=stringtokenizer1.nextToken();
if((test.length()>=5)&&(test.substring(0,5).equals("ERROR")))
nGSMState=2;
}
if(test.equals("OK")) nGSMState=1;//gsm_ok
//else if(test.equals("+CMS ERROR")) nGSMState=2;//gsm_err
System.out.print("\n");
return nGSMState;
}
}//end class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -