public void doIt() throws Exception
{
Service srv;
OutboundMessage msg;
OutboundNotification outboundNotification = new OutboundNotification();
System.out.println("Example: Send message from a serial gsm modem.");
System.out.println(Library.getLibraryDescription());
System.out.println("Version: " + Library.getLibraryVersion());
srv = new Service();
//SerialModemGateway gateway = new SerialModemGateway("modem.com3", "COM3", 9600, "wavecom", "1111");
SerialModemGateway gateway = new SerialModemGateway("modem.com3", "COM3",9600, "wavecom", "1111");
gateway.setInbound(true);
gateway.setOutbound(true);
gateway.setSimPin("0000");
// gateway.setOutboundNotification(outboundNotification);
// srv.setOutboundNotification(outboundNotification);
srv.addGateway(gateway);
srv.startService();
System.out.println("Modem Information:");
System.out.println("Modem Information:");
System.out.println(" Manufacturer: " + gateway.getManufacturer());
System.out.println(" Model: " + gateway.getModel());
System.out.println(" Serial No: " + gateway.getSerialNo());
System.out.println(" SIM IMSI: " + gateway.getImsi());
System.out.println(" Signal Level: " + gateway.getSignalLevel() + "%");
System.out.println(" Battery Level: " + gateway.getBatteryLevel() + "%");
System.out.println();
// Send a message synchronously.
msg = new OutboundMessage("13910740415", "这个是用java发的中文短信!");//手机号码,和短信内容
msg.setEncoding(MessageEncodings.ENCUCS2);//这句话是发中文短信必须的
srv.sendMessage(msg);
System.out.println(msg);
System.out.println("Now Sleeping - Hit <enter> to terminate.");
System.in.read();
srv.stopService();
}
Eclipse里 工程已经把smslib-3.4.1.jar加到工程里了,但是还是提示错误:
Example: Send message from a serial gsm modem.
SMSLib: A Java API library for sending and receiving SMS via a GSM modem or other supported gateways.
This software is distributed under the terms of the Apache v2.0 License.
Web Site: http://smslib.org
Version: 3.4.1
0 [main] INFO smslib - SMSLib: A Java API library for sending and receiving SMS via a GSM modem or other supported gateways.
This software is distributed under the terms of the Apache v2.0 License.
Web Site: http://smslib.org
0 [main] INFO smslib - Version: 3.4.1
0 [main] INFO smslib - JRE Version: 1.5.0
0 [main] INFO smslib - JRE Impl Version: 1.5.0-b64
0 [main] INFO smslib - O/S: Windows XP / x86 / 5.1
31 [Thread-0] INFO smslib - GTW: modem.com3: Starting gateway, using Generic AT Handler.
31 [Thread-0] INFO smslib - GTW: modem.com3: Opening: COM3 @9600
Exception in thread "Thread-0" java.lang.ExceptionInInitializerError
at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:69)
at org.smslib.modem.AModemDriver.connect(AModemDriver.java:110)
at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:158)
at org.smslib.Service$1Starter.run(Service.java:239)
Caused by: java.lang.RuntimeException: CommPortIdentifier class not found
at org.smslib.helper.CommPortIdentifier.<clinit>(CommPortIdentifier.java:76)
... 4 more
=========================================请教,谢谢
SMSLib: A Java API library for sending and receiving SMS via a GSM modem or other supported gateways.
This software is distributed under the terms of the Apache v2.0 License.
Web Site: http://smslib.org
Version: 3.4.1
0 [main] INFO smslib - SMSLib: A Java API library for sending and receiving SMS via a GSM modem or other supported gateways.
This software is distributed under the terms of the Apache v2.0 License.
Web Site: http://smslib.org
0 [main] INFO smslib - Version: 3.4.1
0 [main] INFO smslib - JRE Version: 1.5.0
0 [main] INFO smslib - JRE Impl Version: 1.5.0-b64
0 [main] INFO smslib - O/S: Windows XP / x86 / 5.1
47 [Thread-0] INFO smslib - GTW: modem.com3: Starting gateway, using Generic AT Handler.
47 [Thread-0] INFO smslib - GTW: modem.com3: Opening: COM3 @9600
org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: javax.comm.NoSuchPortException
at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:99)
at org.smslib.modem.AModemDriver.connect(AModemDriver.java:110)
at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:158)
at org.smslib.Service$1Starter.run(Service.java:239)
15062 [pool-1-thread-1] WARN smslib - WatchDog: Gateway: modem.com3 restarting.
15062 [pool-1-thread-1] INFO smslib - GTW: modem.com3: Stopping gateway...
15062 [pool-1-thread-1] WARN smslib - WatchDog: error while shutting down Gateway: modem.com3
java.lang.NullPointerException
at org.smslib.scheduler.Scheduler.remove(Scheduler.java:84)
at org.smslib.modem.AModemDriver.disconnect(AModemDriver.java:236)
at org.smslib.modem.ModemGateway.stopGateway(ModemGateway.java:169)
at org.smslib.Service$WatchDog.process(Service.java:1386)
at org.smslib.scheduler.ASchedulerTask.run(ASchedulerTask.java:80)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
15093 [pool-1-thread-1] INFO smslib - GTW: modem.com3: Starting gateway, using Generic AT Handler.
15093 [pool-1-thread-1] INFO smslib - GTW: modem.com3: Opening: COM3 @9600
15093 [pool-1-thread-1] ERROR smslib - WatchDog: error while starting Gateway: modem.com3
org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: javax.comm.NoSuchPortException
at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:99)
at org.smslib.modem.AModemDriver.connect(AModemDriver.java:110)
at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:158)
at org.smslib.Service$WatchDog.process(Service.java:1395)
at org.smslib.scheduler.ASchedulerTask.run(ASchedulerTask.java:80)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
成功则打印出端口名 没成功什么都不打印
public static void main(String args[])
{
Enumeration en = CommPortIdentifier.getPortIdentifiers();
CommPortIdentifier portId;
while (en.hasMoreElements()) {
portId = (CommPortIdentifier) en.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
System.out.println(portId.getName());
System.out.println("=============");
}
}
}
1. 将win32com.dll放置在%JAVA_HOME%\jre\bin下
2. 将comm.jar放置在%JAVA_HOME%\jre\lib\ext下
3. 将javax.comm.properties放置在%JAVA_HOME%\jar\lib下
二、将Eclipse中java / installed jres 指定到和环境变量JAVA_HOME一样的路径,一般是JDK目录,而不是JRE目录。第二步往往容易忽略。