通过GSM调制解调器收发短信

5

如何通过GSM调制解调器接收短信,以便在进一步处理中使用该短信并发送回复短信。 我对如何实现此功能没有特别的想法...... 我倾向于使用Java语言进行此项目,并且我正在使用Linux操作系统。

7个回答

5
你可能想要看一下SMSLib

SMSLib是一个程序员的库,用于通过GSM调制解调器或手机发送和接收短信。 SMSLib还支持一些批量短信运营商。


3
SMSLib不再维护。 - Toby 1 Kenobi

3

嗨,我正在使用RXTX库,代码如下!.. 对我来说它很好用,我搜索了很多内容才找到了正确的方法,终于找到了发送短信的关键! :D

                String mValue = "AT\r";// strating to communicate with port starts here!
    mOutputToPort.write(mValue.getBytes());
    mOutputToPort.flush();
    Thread.sleep(500);
    mInputFromPort.read(mBytesIn);
    value = new String(mBytesIn);
    System.out.println("Response from Serial Device: "+value);
                mValue = "AT+cmgf=1\r";
    mOutputToPort.write(mValue.getBytes());
                mOutputToPort.flush();
                mValue="at+cmgs=\" Mobile number\"\r";
                System.out.print(mValue);
                mOutputToPort.write(mValue.getBytes());
            mOutputToPort.flush();
            mValue="at+cmgs="\032";//calling ctrl+z
                System.out.print(mValue);
                mOutputToPort.write(mValue.getBytes());
            mOutputToPort.flush();
          mOutputToPort.close(); 
    mInputFromPort.close();

3
使用3G调制解调器发送短信,需要使用适当的AT命令。首先需要将调制解调器设置为文本模式:
AT+CMGF=1

然后,您发送您的消息:

AT+CMGS=<number><CR>
<message><CTRL-Z>

<CR> 为回车符(ASCII 13)时,<message> 是您想要发送的消息,<CTRL-Z> 是 ASCII 26,<number> 是您想要将消息发送到的号码。

要读取接收到的消息,请执行以下操作:

AT+CMGL=<stat><CR>

其中<stat>是以下之一:"ALL""REC UNREAD""REC READ"(带引号),分别表示所有消息,未读消息和已读消息。

要在Java中实现此功能,您需要使用Java通信API。这是一个简短的示例:http://java.sun.com/products/javacomm/reference/docs/API_users_guide_3.html


这正是我想表达的意思 :) +1 - davioooh
嘿...API的链接已经失效了...请你能否更新一下(因为它指向了一个特定的例子,说明AT的使用方法...)... - Jason Krs

2

请看 SMSJ:这是一个完全功能的库,可以使用GSM调制解调器或几个流行的网络服务发送和接收短信。


1

请查看Java SMSLib API

从网站上可以得知:"SMSLib是一个程序员的库,用于通过GSM调制解调器或手机发送和接收短信。SMSLib还支持一些批量短信运营商。"


0

您可以使用多种方法...

  • SMS Enabler
  • Java的SMS Lib
  • Ozeki短信网关

对于接收短信,最好和简单的解决方案是使用SMSenabler,它会立即将您的短信保存到文件或数据库中,您可以检索它。免费版本支持最多12个字符,如果您想发送短信,则可以使用Ozeki短信服务器网关。


0
你应该查看你的调制解调器手册。一些设备支持telnet连接,你可以通过命令行发送AT命令
如果是这种情况,你需要了解(有时对于每个设备都是特定的),并编写一个使用telnet与调制解调器通信的应用程序。 Apache Commons Net项目可能会有所帮助。
一些AT命令指南:

或者你可以尝试使用其他人建议的库。


“使用telnet的应用程序” - 这是一个常见的误解。Telnet是一种网络协议。它是一种相当简单的网络协议,而telnet客户端通常实现某种终端仿真器,因此客户端经常被滥用来执行其他任务。 - cha0site
@cha0site,可能我的解释不是“技术上准确”的,抱歉我的英语不好!我想说的是,你可以编写一个通过Telnet与调制解调器通信的应用程序... - davioooh
你说得没错,直到“通过 Telnet”这部分。Telnet 与与调制解调器通信无关。您需要使用某种串行端口接口(即使调制解调器使用 USB 连接 - 这些通常模拟串行端口)。 - cha0site

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接