如何通过GSM调制解调器接收短信,以便在进一步处理中使用该短信并发送回复短信。 我对如何实现此功能没有特别的想法...... 我倾向于使用Java语言进行此项目,并且我正在使用Linux操作系统。
SMSLib是一个程序员的库,用于通过GSM调制解调器或手机发送和接收短信。 SMSLib还支持一些批量短信运营商。
嗨,我正在使用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();
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
请查看Java SMSLib API。
从网站上可以得知:"SMSLib是一个程序员的库,用于通过GSM调制解调器或手机发送和接收短信。SMSLib还支持一些批量短信运营商。"
您可以使用多种方法...
对于接收短信,最好和简单的解决方案是使用SMSenabler,它会立即将您的短信保存到文件或数据库中,您可以检索它。免费版本支持最多12个字符,如果您想发送短信,则可以使用Ozeki短信服务器网关。
或者你可以尝试使用其他人建议的库。