📄 smssender.java
字号:
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 + -