0

PC から携帯電話に SMS を送信できるプログラムを作成しています。オンライン ゲートウェイを使用して SMS を送信するか、ドングルを使用して SMS を送信するかは問題ではありません (ただし、送信者の元の番号は、ドングルを使用した場合にのみそこに表示されますよね?)。私が見つけたインターネットのほとんどの例は 2006 年から 2010 年に書かれており、それらはすべて JavaMail と Java Communication API を使用しており、現時点では通信 API はほとんどありません。おそらくオラクルはそれをあきらめました。

最新の稼働中のテクノロジーを探しています。こんな試みは初めてです。チュートリアルを見るのはとてもうれしいです。ありがとうございました

4

1 に答える 1

4

いくつかの試行錯誤を行った後、1 年前に次のコードを作成しましたが、正常に動作しています。GSM モデムを使用して SMS を送信します。GSM モデムを Comm ポートに接続する必要があります。このコードを実行するには、Comm.jar ライブラリが必要です。http://llk.media.mit.edu/projects/picdev/software/javaxcomm.zip からダウンロードできます

私のコードは、 AT Commandsを起動する単純なプログラム バージョンです。GSM モデムで AT コマンドを起動して SMS を送信するだけです。

import javax.comm.*;
import java.io.*;
import java.util.*;

public class SimpleWrite implements Runnable, SerialPortEventListener
{
    public void run()
    {}

    static Enumeration portList;
    static CommPortIdentifier portId;
    static String messageString = "";
    static char ch = '"';
    static String dest = ch + "111111111" + ch;  // 10 Digit Mobile Number.
    static InputStream inputStream;

    static SerialPort serialPort;
    static OutputStream outputStream;

    public void serialEvent(SerialPortEvent event)
    {
        switch (event.getEventType())
        {
        case SerialPortEvent.BI:
        case SerialPortEvent.OE:
        case SerialPortEvent.FE:
        case SerialPortEvent.PE:
        case SerialPortEvent.CD:
        case SerialPortEvent.CTS:
        case SerialPortEvent.DSR:
        case SerialPortEvent.RI:
        case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
            break;
        case SerialPortEvent.DATA_AVAILABLE:
        {

            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String line = "";
            try
            {

                while ( (line = reader.readLine()) != null)
                {
                    System.out.println(line);
                }
            }
            catch (IOException e)
            {
                System.err.println("Error while reading Port " + e);
            }
            break;

        }
        } //switch
    }

    public SimpleWrite(SerialPort serial)
    {
        try
        {
            inputStream = serial.getInputStream();
            try
            {
                serial.addEventListener(this);
            }
            catch (TooManyListenersException e)
            {
                System.out.println("Exception in Adding Listener" + e);
            }
            serial.notifyOnDataAvailable(true);

        }
        catch (Exception ex)
        {
            System.out.println("Exception in getting InputStream" + ex);
        }

    }

    public static void main(String[] args)
    {
        String line1 = "AT+CMGF=1\r\n";
        String line2 = "AT+CMGS=" + dest + "\r\n";
        String line3 = messageString + "\r\n";
        //String line1 = "AT+CREG=2";
        //String line2 = "AT+CGREG?";

        portList = CommPortIdentifier.getPortIdentifiers();
        while (portList.hasMoreElements())
        {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
            {
                if ( portId.getName().equals("COM11"))
                {
                    System.out.println("SMS Sending....Port Found");
                    try
                    {
                        serialPort = (SerialPort) portId.open("SimpleWriteApp", 2000);
                        SimpleWrite wr = new SimpleWrite(serialPort);

                    }
                    catch (PortInUseException e)
                    {
                        System.out.println("Port In Use " + e);
                    }
                    try
                    {
                        outputStream = serialPort.getOutputStream();
                    }
                    catch (IOException e)
                    {
                        System.out.println("Error writing to output stream " + e);
                    }
                    try
                    {
                        serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
                    }
                    catch (UnsupportedCommOperationException e)
                    {
                    }
                    try
                    {
                        outputStream.write(line1.getBytes());
                        outputStream.write(line1.getBytes());
                        outputStream.write(line2.getBytes());
                        outputStream.write(line3.getBytes());
                        outputStream.write(26);
                        outputStream.flush();
                    }
                    catch (Exception e)
                    {
                        System.out.println("Error writing message " + e);
                    }
                }
            }
        }
    }

    /** show text in the text window
     * @param Text text string to show on the display
     */
    public static void showText(String Text)
    {
        System.out.println(Text);
    }
}
于 2012-09-26T16:04:49.900 に答える