做了一些尝试&错误,我在一年前创建了以下代码,它运行正常。它使用GSM Modem发送短信。您的GSM调制解调器应连接到您的通信端口。您需要Comm.jar库来运行此代码,您可以从http://llk.media.mit.edu/projects/picdev/software/javaxcomm.zip
下载它我的代码是触发AT命令的简单程序版本。它只是在GSM调制解调器上触发AT命令发送短信。
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);
}
我已尝试过该解决方案,但它没有返回Enumeration“portlist”中的任何端口。 而且我在这个链接中找不到任何DLL http://llk.media.mit.edu/projects/picdev/software/javaxcomm.zip 请建议我如何继续这个。什么是DLL的名称,以便我可以继续?