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

📄 smssender.java

📁 Java短信猫收发短信编程:利用java串口通信功能
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package smssender;

import javax.swing.*;
import java.awt.*;
import javax.comm.*;
import java.util.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;

/**
 * <p>Title: short messaage sender and monitor.</p>
 * <p>Description: you can use this software to send short message directly,
 * and it can monitor and send short message in remote database
 * submted from web.</p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: school of computer, wuhan university</p>
 * @author: zhufubao.
 * Email: fbzhu@whu.edu.cn
 * @version 1.0
 */

public class SmsSender
    extends JFrame
    implements SerialPortEventListener, CommPortOwnershipListener {
  //JLabel jLabel1 = new JLabel();
  JLabel jLabel2 = new JLabel();
  JLabel jLabel3 = new JLabel();
  JLabel jLabel4 = new JLabel();
  JPanel jPanel1 = new JPanel();
  JPanel jPanel2 = new JPanel();
  BorderLayout borderLayout1 = new BorderLayout();
  JLabel jLabel5 = new JLabel();
  JComboBox jComboBox1 = new JComboBox();
  JLabel jLabel6 = new JLabel();
  JTextField jTextField1 = new JTextField();
  JPanel jPanel3 = new JPanel();
  JLabel jLabel7 = new JLabel();
  BorderLayout borderLayout2 = new BorderLayout();
  JPanel jPanel4 = new JPanel();
  JLabel jLabel8 = new JLabel();
  BorderLayout borderLayout3 = new BorderLayout();
  JLabel jLabel9 = new JLabel();
  JPanel jPanel5 = new JPanel();
  JButton jButton1 = new JButton();
  JButton jButton2 = new JButton();
  JButton jButton3 = new JButton();
  JButton jButton4 = new JButton();
  JLabel jLabel10 = new JLabel();
  JPanel jPanel6 = new JPanel();
  BorderLayout borderLayout4 = new BorderLayout();
  JPanel jPanel7 = new JPanel();
  BorderLayout borderLayout5 = new BorderLayout();
  CommPortIdentifier portId;
  SerialPort sPort;
  boolean isOpen;
  String sPortName;
  static OutputStream smsout;
  static InputStream smsin;
  JTextPane jTextPane1 = new JTextPane();
  JButton jButton5 = new JButton();
  smsThread st = null;
  JMenuBar jMenuBar1 = new JMenuBar();
  JMenu jMenu1 = new JMenu();
  JMenu jMenu2 = new JMenu();
  JMenuItem jMenuItem1 = new JMenuItem();
  JMenuItem jMenuItem2 = new JMenuItem();
  JMenuItem jMenuItem3 = new JMenuItem();
  JMenu jMenu3 = new JMenu();
  JMenuItem jMenuItem4 = new JMenuItem();
  JMenuItem jMenuItem5 = new JMenuItem();
  JMenuItem jMenuItem6 = new JMenuItem();
  JMenuItem jMenuItem7 = new JMenuItem();
  String curSmsIndex = "00"; //当前SIM卡上收到的短信总数

  public SmsSender() {
    try {
      jbInit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
    listPortChoices();
  }

  public static void main(String[] args) {
    SmsSender smsSender = new SmsSender();
    smsSender.setTitle("sms sender");
    smsSender.setSize(400, 300);
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = smsSender.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    smsSender.setLocation( (screenSize.width - frameSize.width) / 2,
                          (screenSize.height - frameSize.height) / 2);
    smsSender.setVisible(true);
  }

  private void jbInit() throws Exception {
    jLabel3.setToolTipText("");
    jLabel3.setText("武汉因科 (C) 2005");
    jLabel4.setText("      ");
    jPanel1.setLayout(borderLayout1);
    jLabel5.setHorizontalAlignment(SwingConstants.LEFT);
    jLabel5.setText("端口号");
    jLabel6.setHorizontalAlignment(SwingConstants.RIGHT);
    jLabel6.setText("电话号码");
    jLabel7.setRequestFocusEnabled(true);
    jLabel7.setText("  ");
    jPanel3.setLayout(borderLayout2);
    jLabel8.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel8.setText("短信内容");
    jPanel4.setLayout(borderLayout3);
    jLabel9.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel9.setText("已录入了");
    jButton1.setText("连接");
    jButton1.addActionListener(new SmsSender_jButton1_actionAdapter(this));
    jButton2.setEnabled(false);
    jButton2.setText("断开");
    jButton2.addActionListener(new SmsSender_jButton2_actionAdapter(this));
    jButton3.setEnabled(false);
    jButton3.setRequestFocusEnabled(true);
    jButton3.setText("发送");
    jButton3.addActionListener(new SmsSender_jButton3_actionAdapter(this));
    jButton4.setEnabled(false);
    jButton4.setText("监控");
    jButton4.addActionListener(new SmsSender_jButton4_actionAdapter(this));
    jLabel10.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel10.setText("0 字");
    jPanel2.setLayout(borderLayout4);
    jPanel7.setDebugGraphicsOptions(0);
    jPanel7.setLayout(borderLayout5);
    jTextField1.setBorder(BorderFactory.createEtchedBorder());
    jTextField1.setToolTipText("号码之间以逗号隔开");
    jTextField1.setText("");
    jTextField1.addKeyListener(new SmsSender_jTextField1_keyAdapter(this));
    jTextPane1.setBorder(BorderFactory.createEtchedBorder());
    jTextPane1.setToolTipText("短信内容不能超过70字");
    jTextPane1.setText("");
    jTextPane1.addKeyListener(new SmsSender_jTextPane1_keyAdapter(this));
    jButton5.setEnabled(false);
    jButton5.setText("关控");
    jButton5.addActionListener(new SmsSender_jButton5_actionAdapter(this));
    jMenu1.setText("串口操作");
    jMenu2.setText("短信操作");
    jMenuItem1.setText("连接");
    jMenuItem1.addActionListener(new SmsSender_jMenuItem1_actionAdapter(this));
    jMenuItem2.setEnabled(false);
    jMenuItem2.setText("断开");
    jMenuItem2.addActionListener(new SmsSender_jMenuItem2_actionAdapter(this));
    jMenuItem3.setEnabled(false);
    jMenuItem3.setText("发送短信");
    jMenuItem3.addActionListener(new SmsSender_jMenuItem3_actionAdapter(this));
    jMenu3.setText("远程监控");
    jMenuItem4.setEnabled(false);
    jMenuItem4.setDoubleBuffered(false);
    jMenuItem4.setText("显示所有短信");
    jMenuItem4.addActionListener(new SmsSender_jMenuItem4_actionAdapter(this));
    jMenuItem5.setEnabled(false);
    jMenuItem5.setText("清除所有短信");
    jMenuItem5.addActionListener(new SmsSender_jMenuItem5_actionAdapter(this));
    jMenuItem6.setEnabled(false);
    jMenuItem6.setText("开始监控");
    jMenuItem6.addActionListener(new SmsSender_jMenuItem6_actionAdapter(this));
    jMenuItem7.setEnabled(false);
    jMenuItem7.setText("停止监控");
    jMenuItem7.addActionListener(new SmsSender_jMenuItem7_actionAdapter(this));
    this.getContentPane().add(jMenuBar1, BorderLayout.NORTH);
    this.getContentPane().add(jLabel2, BorderLayout.WEST);
    this.getContentPane().add(jLabel3, BorderLayout.SOUTH);
    this.getContentPane().add(jLabel4, BorderLayout.EAST);
    this.getContentPane().add(jPanel1, BorderLayout.CENTER);
    jPanel1.add(jPanel2, BorderLayout.NORTH);
    jPanel2.add(jPanel6, BorderLayout.WEST);
    jPanel6.add(jLabel5, null);
    jPanel6.add(jComboBox1, null);
    jPanel2.add(jPanel7, BorderLayout.CENTER);
    jPanel7.add(jLabel6, BorderLayout.WEST);
    jPanel7.add(jTextField1, BorderLayout.CENTER);
    jPanel1.add(jPanel3, BorderLayout.CENTER);
    jPanel3.add(jLabel7, BorderLayout.NORTH);
    jPanel3.add(jPanel4, BorderLayout.WEST);
    jPanel4.add(jLabel8, BorderLayout.NORTH);
    jPanel4.add(jLabel9, BorderLayout.CENTER);
    jPanel4.add(jLabel10, BorderLayout.SOUTH);
    jPanel3.add(jPanel5, BorderLayout.SOUTH);
    jPanel5.add(jButton1, null);
    jPanel5.add(jButton2, null);
    jPanel5.add(jButton3, null);
    jPanel5.add(jButton4, null);
    jPanel5.add(jButton5, null);
    jPanel3.add(jTextPane1, BorderLayout.CENTER);
    jMenuBar1.add(jMenu1);
    jMenuBar1.add(jMenu2);
    jMenuBar1.add(jMenu3);
    jMenu1.add(jMenuItem1);
    jMenu1.add(jMenuItem2);
    jMenu2.add(jMenuItem3);
    jMenu2.add(jMenuItem4);
    jMenu2.add(jMenuItem5);
    jMenu3.add(jMenuItem6);
    jMenu3.add(jMenuItem7);
  }

  void listPortChoices() {
    CommPortIdentifier portId;
    Enumeration en = CommPortIdentifier.getPortIdentifiers();
    while (en.hasMoreElements()) {
      portId = (CommPortIdentifier) en.nextElement();
      if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
        jComboBox1.addItem(portId.getName());
      }
    }
    //jComboBox1.select(parameters.getPortName());
  }

  void jButton1_actionPerformed(ActionEvent e) {
    try {
      portId = CommPortIdentifier.getPortIdentifier( (String) jComboBox1.
          getSelectedItem());
    }
    catch (NoSuchPortException e1) {
      JOptionPane.showMessageDialog(null, e1.getMessage(), "error", 1);
    }
    try {
      sPort = (SerialPort) portId.open("SmsSender", 30000);
    }
    catch (PortInUseException e1) {
      JOptionPane.showMessageDialog(null, e1.getMessage(), "error", 1);
    }
    try {
      sPort.setSerialPortParams(115200, SerialPort.DATABITS_8,
                                SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
      sPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
    }
    catch (UnsupportedCommOperationException e1) {
      sPort.close();
      JOptionPane.showMessageDialog(null, e1.getMessage(), "error", 1);
    }
    try {
      smsout = sPort.getOutputStream();
      smsin = sPort.getInputStream();
    }
    catch (IOException e1) {
      sPort.close();
      JOptionPane.showMessageDialog(null, e1.getMessage(), "error", 1);
    }

    // Add this object as an event listener for the serial port.
    try {
      sPort.addEventListener(this);
    }
    catch (TooManyListenersException e1) {
      sPort.close();
      JOptionPane.showMessageDialog(null, e1.getMessage(), "error", 1);
    }

    // Set notifyOnDataAvailable to true to allow event driven input.
    sPort.notifyOnDataAvailable(true);

    // Set notifyOnBreakInterrup to allow event driven break handling.
    sPort.notifyOnBreakInterrupt(true);

    // Set receive timeout to allow breaking out of polling loop during
    // input handling.
    try {
      sPort.enableReceiveTimeout(30);
    }
    catch (UnsupportedCommOperationException e1) {
    }

    // Add ownership listener to allow ownership event handling.
    portId.addPortOwnershipListener(this);

    jButton1.setEnabled(false);
    jButton2.setEnabled(true);
    jButton3.setEnabled(true);
    jButton4.setEnabled(true);
    jMenuItem1.setEnabled(false);
    jMenuItem2.setEnabled(true);
    jMenuItem3.setEnabled(true);
    jMenuItem4.setEnabled(true);
    jMenuItem5.setEnabled(true);
    jMenuItem6.setEnabled(true);
    isOpen = true;
    jComboBox1.setEnabled(false);
    try {
      smsout.write("AT+CMGF=0\r".getBytes());
      Thread.sleep(1000);
      smsout.write("AT+CNMI=2,1\r".getBytes());
    }
    catch (Exception e1) {
      JOptionPane.showMessageDialog(this, e1.getMessage(), "error", 1);
    }
  }

  void jButton2_actionPerformed(ActionEvent e) {
    jButton1.setEnabled(true);
    jButton2.setEnabled(false);
    jButton3.setEnabled(false);
    jButton4.setEnabled(false);
    jButton5.setEnabled(false);
    jMenuItem1.setEnabled(true);
    jMenuItem2.setEnabled(false);
    jMenuItem3.setEnabled(false);
    jMenuItem4.setEnabled(false);
    jMenuItem5.setEnabled(false);
    jMenuItem7.setEnabled(false);

    jComboBox1.setEnabled(true);
    if (sPort != null) {
      sPort.close();
    }
    isOpen = false;
  }

  void jButton3_actionPerformed(ActionEvent e) {
    System.out.println("正在发送短信...");
    String dialNums = jTextField1.getText().trim();

⌨️ 快捷键说明

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