我正在开发一个Java应用程序,使用USB调制解调器发送短信(我的是华为E173)。我尝试了SMSLib,它的示例代码成功地发送了短信。但当它连接到互联网时,它就例外了
org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: javax.comm.PortInUseException: Port currently owned by Unknown Windows Application
at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:102)
at org.smslib.modem.AModemDriver.connect(AModemDriver.java:114)
at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:189)
at org.smslib.Service$1Starter.run(Service.java:277)
当手机连接到互联网时,有没有办法发送短信?我必须通过Java应用程序本身建立连接吗?如果必须,如何建立连接?
编辑:这是我发送短信的完整代码(从smslib.org下载,我更改了SMSC号码和发件人号码)
// SendMessage.java - Sample application.
//
// This application shows you the basic procedure for sending messages.
// You will find how to send synchronous and asynchronous messages.
//
// For asynchronous dispatch, the example application sets a callback
// notification, to see what's happened with messages.
package sms;
import org.smslib.AGateway;
import org.smslib.IOutboundMessageNotification;
import org.smslib.Library;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.modem.SerialModemGateway;
public class SendMessage
{
public void doIt() throws Exception
{
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());
SerialModemGateway gateway = new SerialModemGateway("modem.com3", "COM3", 115200, "Huawei", "");
gateway.setInbound(true);
gateway.setOutbound(true);
gateway.setSimPin("0000");
// Explicit SMSC address set is required for some modems.
// Below is for VODAFONE GREECE - be sure to set your own!
gateway.setSmscNumber("+947500001");
Service.getInstance().setOutboundMessageNotification(outboundNotification);
Service.getInstance().addGateway(gateway);
Service.getInstance().startService();
System.out.println();
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() + " dBm");
System.out.println(" Battery Level: " + gateway.getBatteryLevel() + "%");
System.out.println();
// Send a message synchronously.
OutboundMessage msg = new OutboundMessage("0094757599108", "Hello from SMSLib!");
Service.getInstance().sendMessage(msg);
System.out.println(msg);
// Or, send out a WAP SI message.
//OutboundWapSIMessage wapMsg = new OutboundWapSIMessage("306974000000", new URL("http://www.smslib.org/"), "Visit SMSLib now!");
//Service.getInstance().sendMessage(wapMsg);
//System.out.println(wapMsg);
// You can also queue some asynchronous messages to see how the callbacks
// are called...
//msg = new OutboundMessage("309999999999", "Wrong number!");
//srv.queueMessage(msg, gateway.getGatewayId());
//msg = new OutboundMessage("308888888888", "Wrong number!");
//srv.queueMessage(msg, gateway.getGatewayId());
System.out.println("Now Sleeping - Hit <enter> to terminate.");
System.in.read();
Service.getInstance().stopService();
}
public class OutboundNotification implements IOutboundMessageNotification
{
public void process(AGateway gateway, OutboundMessage msg)
{
System.out.println("Outbound handler called from Gateway: " + gateway.getGatewayId());
System.out.println(msg);
}
}
public static void main(String args[])
{
SendMessage app = new SendMessage();
try
{
app.doIt();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
如果调制解调器被用来“连接到互联网”,已经有一个电话正在进行中。然后你不能用它拨打第二个号码发送短信。可能的解决方案:
如果您试图调试通过调制解调器发送SMS的程序,那么选项1或2可能是唯一的解决方案。
最好的方法是什么?我读过,但大多数话题都过时了。大多数示例都使用“COM”端口,但我在COM连接(在设备管理器中)中找不到USB调制解调器,而不是在“网卡”中。
我正在用PHP7.1编写一个脚本,用华为E3531 usb调制解调器发送短信。没有文档记录,我很难找到解决方案。这是发送短信的脚本,但我收到一个错误100002。首先,我用curl恢复令牌和sessionid,然后再次使用curl发布短信 然而,我已经做了另一个脚本,让短信已经发送,它确实工作。以下是代码: 在这个链接上使用的三个步骤(通过命令行与华为E3131和debian系统上的HiLink发
我试图使用USB调制解调器发送短信(我有一个D-Link Usb调制解调器)。我刚刚找到SmsLib,但我不知道如何使用USB调制解调器。我找到的例子是串行调制解调器,我没有找到任何USB调制解调器的例子。我需要将usb端口映射为串行端口吗?使用什么?我的调制解调器由SmsLib支持。您对如何使用SmsLib配置USB调制解调器有任何想法吗? (我有一台MacBook)。
我有一个调制解调器中兴型号MF190,并希望通过在串行端口上的AT命令发送短信。我的问题是:当我发送AT命令时,调制解调器响应错误CMS error:305 他研究了很多关于错误的信息,他在信息中使用了一些无效字符,但我在信息中没有写任何错误。 检查: 有趣的是,如果我发送一条空消息,我就会收到短信(显然是空的) 有人去过那里,知道如何通过这种型号的调制解调器配置或发送短信?
尝试在Linux上使用USB调制解调器开发应用程序。使用带有CNMI=1,1,0,1,0设置的华为E220(还尝试了其他CNMI设置,但均无效),并在接收到的消息上获得新的消息指示,在接收到的状态传递消息上也获得新的消息指示。是否有其他方法可以配置设备以启用接收到的SMS警报?感谢windows机器,它工作正常。唯一的问题是linux。非常感谢。
我使用华为U盘调制解调器和下面的代码成功发送短信,但长度低于140(请参阅代码--)。 但现在我看到了非常大的短信。 所以我想知道commnds有什么问题,或者可能我的硬件太旧了,所以我无法发送大短信。 有什么线索吗?