⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 application1.java

📁 使用java实现的计算机自主发短信到手机。 运行界面上
💻 JAVA
字号:
package keti2;

import javax.swing.UIManager;

import java.awt.*;
import java.io.*;
import javax.comm.*;
import java.util.*;
import java.lang.*;
import java.util.StringTokenizer;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class Application1 {
  boolean packFrame = false;
  static String[] s = new String[30];
  String[] smsbuffer = new String[256];
  protected static String pnum;
  protected static String chinesesms;
  int m = 1;
  Vector cell = new Vector();
  Frame1 frame = new Frame1();

  //Construct the application
  public Application1() {

    //Validate frames that have preset sizes
    //Pack frames that have useful preferred size info, e.g. from their layout
    if (packFrame) {
      frame.pack();
    }
    else {
      frame.validate();
    }
    //Center the window
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    frame.setLocation( (screenSize.width - frameSize.width) / 2,
                      (screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
  }

  //Main method
  public static void main(String[] args) throws IOException,
      NoSuchPortException, PortInUseException,
      UnsupportedCommOperationException {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch (Exception e) {
      e.printStackTrace();
    }
    int time1 = 0;
    int nState;
    //1---stBeginRest 开始休息/延时
    //2---stContinueRest 继续休息/延时
    //3---stSendMessageRequest 发出发送短消息命令
    //4---stSendMessageResponse 等待发送短消息命令反馈
    //5---stSendMessageWaitIdle 发送短消息失败,等待GSM就绪
    //6---stReadMessageRequest 发送读取短消息列表的命令
    //7---stReadMessageResponse 等待读取短消息命令反馈(读取短消息列表到缓冲区)
    //8---stDeleteMessageRequest 发送删除短消息命令
    //9---stDeleteMessageResponse 等待删除短消息命令反馈
    //10--stDeleteMessageWaitIdle 删除短消息失败,等待GSM就绪
    //11--stExitThread           退出
    int nGSMState; //gsm的状态
    //1--gsm_ok
    //2--gsm_err
    //3--gsm_wait
    int nMsg = 0; // 收到短消息条数
    int nDelete = 0; // 目前正在删除的短消息编号
    int tmorg = 0;
    int tmnow = 0; //上次和现在的时间,计算超时用
    Date timenow = new Date();

    System.out.print("\n");
    QueueLink receivelink = new QueueLink();
    Application1 rapp = new Application1();
    ReceiveSMS rjob = new ReceiveSMS();

    nState = rapp.frame.nState; //1---stBeginRest 开始休息/延时
    while (nState != 11) {

      switch (nState) {
        case 1:
          Date timenow1 = new Date();
          System.out.print("State=stBeginRest\n");
          tmorg = timenow1.getMinutes() * 60 + timenow1.getSeconds();
          nState = 2; //stContinueRest

          break;
        case 2:
          Date timenow2 = new Date();
          System.out.print("State=stContinueRest\n");
          try {
            Thread.sleep(100);
          }
          catch (InterruptedException e) {
            // nothing to do
          }
          tmnow = timenow2.getMinutes() * 60 + timenow2.getSeconds();
          System.out.print(tmnow);
          if (rapp.frame.sendsms.total >= 1) {
            nState = 3;
          }
          else if (tmnow - tmorg >= 3) {
            nState = 6;
          }
          break;
        case 3:
          Date timenow3 = new Date();
          System.out.print("State=stSendMessageRequest\n");
          //发送短消息
          String sendsms = rapp.frame.sendsms.DeQueue();
          String sendphone = rapp.frame.sendphone.DeQueue();
          rjob.sendChineseSMS(sendphone, true, sendsms);
          tmorg = timenow3.getMinutes() * 60 + timenow3.getSeconds();
          nState = 4;
          break;
        case 4:
          Date timenow4 = new Date();
          System.out.print("State=stSendMessageResponse\n");
          try {
            Thread.sleep(100);
          }
          catch (InterruptedException e) {
            // nothing to do
          }
          tmnow = timenow4.getMinutes() * 60 + timenow4.getSeconds();
          switch (rjob.getGSMresponse()) {
            case 1:
              System.out.print("  GSM_OK \n");
              nState = 1;
              break;
            case 2:
              System.out.print("  GSM_ERR \n");
              nState = 5;
              break;
            default:
              System.out.print("  GSM_WAIT \n");
              if (tmnow - tmorg >= 3) {
                System.out.print("timeout");
                nState = 5;
              }

          }
          break;
        case 5:
          Date timenow5 = new Date();
          System.out.print("State=stSendMessageWaitIdle");
          try {
            Thread.sleep(100);
          }
          catch (InterruptedException e) {
            // nothing to do
          }
          nState = 3;
          break;
        case 6:
          Date timenow6 = new Date();
          System.out.print("State=stReadMessageRequest\n");
          //读取短消息
          rjob.ReadNew();
          tmorg = timenow6.getMinutes() * 60 + timenow6.getSeconds();
          nState = 7;
          break;
        case 7:
          Date timenow7 = new Date();
          System.out.print("State=stReadMessageResponse\n");
          try {
            Thread.sleep(100);
          }
          catch (InterruptedException e) {
            // nothing to do
          }
          tmnow = timenow7.getMinutes() * 60 + timenow7.getSeconds();
          nMsg = rjob.recesms.total;
          System.out.print("\n");
          System.out.print("nMsg=" + nMsg);
          System.out.print("\n");
          switch (rjob.getGSMresponse()) {
            case 1:
              System.out.print("  GSM_OK \n");
              if (nMsg > 0) {
                Vector cell1 = new Vector();
                String sms = new String();
                sms = rjob.recesms.DeQueue();

                System.out.print(sms);

                ///////////利用PDU处理函数处理这部分

                ///////////////////////////
                String time = rjob.getpduindex(sms);
                time1 = Integer.parseInt(time);
                pnum = rjob.getpduphone(sms, time1);
                //根据不同的代码用不同的函数
                if (rjob.fenxipdu(sms, time1).equals("en"))
                  sms = rjob.getenglish7pdu(sms, time1);
                else if (rjob.fenxipdu(sms, time1).equals("cn"))
                  sms = rjob.getcnpdu(sms, time1);
                  //////////////////////

                  /////////////////////
                  /*
                                          //////////////////////////////以前非PDU处理的部分
                                          String time=rjob.smsindex.DeQueue();
                                          time1=Integer.parseInt(time);
                                          pnum=rjob.getphonenum(sms,time1);
                                          sms=rjob.CnEnCode(sms,time1);
                                          ///////////////////////
                   */
                  //显示出来
                cell1.add(time);
                cell1.add(pnum);
                cell1.add(sms);
                rapp.frame.row.add(cell1);
                rapp.frame.tableModel.setDataVector(rapp.frame.row,
                    rapp.frame.tableHeadName);
                rapp.frame.table.setModel(rapp.frame.tableModel);
                //
                //send to the robot
                String strTmp, strReturn;
                strTmp = CommandParse.strParseCommand(sms);
                //System.out.println("\r\ntest"+strTmp);
                Frame1.showLogTAText("sms:" + sms + ":" + strTmp);

                Client.StartClient("127.0.0.1", 7458, strTmp);
                //return message
                strReturn = CommandParse.strParseReturnMsg(strTmp);
                rapp.frame.sendsms.Enqueue(strReturn);
                rapp.frame.sendphone.Enqueue(pnum);
                nDelete = 0;
                nState = 8;
              }
              else {
                nState = 1;
              }

              break;
            case 2:
              System.out.print("  GSM_ERR \n");
              nState = 1;
              break;
            default:
              System.out.print("  GSM_WAIT \n");
              if (tmnow - tmorg >= 3) {
                System.out.print("timeout");
                nState = 1;
              }

          }
          break;

        case 8:
          Date timenow8 = new Date();
          System.out.print("State=stDeleteMessageRequest\n");
          if (nDelete < nMsg) {
            //gsmDeleteMessage(param[nDelete].index);
            //memset(&buff, 0, sizeof(buff));

            rjob.DelSMS(time1);

            tmorg = timenow8.getMinutes() * 60 + timenow8.getSeconds();
            nState = 9;
          }
          else {
            nState = 1;
          }
          break;
        case 9:
          Date timenow9 = new Date();
          System.out.print("State=stDeleteMessageResponse\n");
          try {
            Thread.sleep(100);
          }
          catch (InterruptedException e) {
            // nothing to do
          }
          tmnow = timenow9.getMinutes() * 60 + timenow9.getSeconds();
          switch (rjob.getGSMresponse()) {
            case 1:
              System.out.print("  GSM_OK \n");
              nMsg--;
              nDelete++;
              nState = 1;

              break;
            case 2:
              System.out.print("  GSM_ERR \n");
              nState = 10;
              break;
            default:
              System.out.print("  GSM_WAIT \n");
              if (tmnow - tmorg >= 3) {
                System.out.print("timeout");
                nState = 1;
              }

          }
          break;
        case 10:
          Date timenow10 = new Date();
          System.out.print("State=stDeleteMessageWaitIdle\n");
          try {
            Thread.sleep(500);
          }
          catch (InterruptedException e) {
            // nothing to do
          }
          nState = 8;
          break;
      }
      if (rapp.frame.nState == 11) {
        nState = 11;
      }
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -