- 浏览: 1270956 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (608)
- 数据结构 (2)
- AJAX (3)
- 设计模式 (3)
- java (117)
- js (14)
- css (9)
- jsp (10)
- 杂文 (49)
- htmlparser (6)
- 数据库 (29)
- 算法 (14)
- 数据挖掘 (11)
- 电脑杂症 (12)
- 网络爬虫 (7)
- 应用服务器 (9)
- PHP (2)
- C# (14)
- 测试 (3)
- WEB高性能开发 (3)
- swt (1)
- 搜索引擎 (16)
- HttpClient (4)
- Lite (1)
- EXT (1)
- python (1)
- lucene (4)
- sphinx (9)
- Xapian (0)
- linux (44)
- 问题归类 (1)
- Android (6)
- ubuntu (7)
- SEO (18)
- 数学 (0)
- 农业资讯 (12)
- 游戏 (3)
- nginx (1)
- TeamViewer (1)
- swing (1)
- Web前 端 (1)
- 主页 (0)
- 阿萨德发首发身份 (0)
- 软件设计师 (0)
- hibernate (5)
- spring3.0 (5)
- elastic (1)
- SSH (3)
- ff (0)
- oracle 10g (9)
- 神经网络 (1)
- struts2.0 (2)
- maven (1)
- nexus (1)
- 辅助工具 (3)
- Shiro (1)
- 联通项目 (0)
- 2014年专业选择 (0)
- freemarker (1)
- struts1.2 (8)
- adfasdfasfasf (0)
- TortoiseSVN (1)
- jstl (1)
- jquery (1)
- eclipse plugin (0)
- 游戏外挂 (1)
- 推广 (0)
- 按键精灵 (1)
- ibatis3.0 (1)
最新评论
-
水野哲也:
不不不, 这个您真错了!其实是你引用的那个jsp和本身的jsp ...
解析关于jsp页面指令冲突问题contentType="text/html;charset=UTF-8" -
caobo_cb:
import xx.cn.weibo.Util;
[ java版]新浪微博之ruquest_token篇 -
caobo_cb:
你好 Util包没有
[ java版]新浪微博之ruquest_token篇 -
小桔子:
你好!我遇到个问题 max_allowed_packet值总是 ...
mysql查询占用内存,优化的技巧 -
donghustone:
谢谢大神!
用JSmooth制作java jar文件的可执行exe文件教程(图文)
领导要求在开发的系统中添加发送短信的功能,但又不想使用人家的短信服务器(想省钱,哈哈),只好自己开发。上网找了很久,最好找到了一个不错的发送短信的jar包——jsmsengine。它是一个开源的东东,你可以访问http://jsmsengine.sourceforge.net/ 来了解更详细的信息。下面就是我在使用的过程中遇到的一些问题,在这里与大家一起分享。
将jsmsengine_1_2_6-B1下载并解压,可以看到相关的jar包、源码、文档、例子以及一个简单的SMS服务器程序。闲话少说,赶紧在eclipse中新建一个项目将源码和例子引进来,然后又向同事借了个支持AT指令的手机(LG8390),连接到串口上。运行SendMessage.java
//下面是解压后自带的SendMessage.java的原文件
class SendMessage
{
public static void main(String[] args)
{
int status;
// Create jSMSEngine service.
CService srv = new CService("com1", 9600);
System.out.println();
System.out.println("SendMessage(): sample application.");
System.out.println(" Using " + srv._name + " " + srv._version);
System.out.println();
try
{
// Initialize service.
srv.initialize();
// Set the cache directory.
srv.setCacheDir(".\\");
// Set the phonebook.
// srv.setPhoneBook("../misc/phonebook.xml");
// Connect to GSM device.
status = srv.connect();
// Did we connect ok?
if (status == CService.ERR_OK)
{
// Set the operation mode to PDU - default is ASCII.
srv.setOperationMode(CService.MODE_PDU);
// Set the SMSC number (set to default).
srv.setSmscNumber("");
// Print out GSM device info...
System.out.println("Mobile Device Information: ");
System.out.println(" Manufacturer : " + srv.getDeviceInfo().getManufacturer());
System.out.println(" Model : " + srv.getDeviceInfo().getModel());
System.out.println(" Serial No : " + srv.getDeviceInfo().getSerialNo());
System.out.println(" IMSI : " + srv.getDeviceInfo().getImsi());
System.out.println(" S/W Version : " + srv.getDeviceInfo().getSwVersion());
System.out.println(" Battery Level : " + srv.getDeviceInfo().getBatteryLevel() + "%");
System.out.println(" Signal Level : " + srv.getDeviceInfo().getSignalLevel() + "%");
// Create a COutgoingMessage object and dispatch it.
// *** Please update the phone number with one of your choice ***
COutgoingMessage msg = new COutgoingMessage("此处为你要发送的手机号", "Message from jSMSEngine API.");
// Character set is 7bit by default - lets make it UNICODE :)
// We can do this, because we are in PDU mode (look at line 63). When in ASCII mode,
// this does not make ANY difference...
msg.setMessageEncoding(CMessage.MESSAGE_ENCODING_UNICODE);
if (srv.sendMessage(msg) == CService.ERR_OK) System.out.println("Message Sent!");
else System.out.println("Message Failed!");
// Disconnect from GSM device.
srv.disconnect();
}
else System.out.println("Connection to mobile failed, error: " + status);
}
catch (Exception e)
{
e.printStackTrace();
}
System.exit(0);
}
}
程序,出现如下错误:
Error loading win32com: java.lang.UnsatisfiedLinkError: no win32com in java.library.path
Connection to mobile failed, error: -11
根据错误提示,引用的一个java在windowns下访问串口的必备动态链接库——win32com.dll,找到这个东东后把它拷贝到JDK安装目录下的bin文件夹下。
这次我没有急于运行程序,首先确定串口是否好用,我打开了系统自带的“超级终端”,然后输入‘at’并回车,程序响应如下:
这说明串口与手机连通正常,并且手机已经可以响应AT指令。
再次重新运行,等了一会,结果是“Connection to mobile failed, error: -11”。失望,仔细看看程序,首先感觉波特率“9600”是否有问题,不管它,先改了再说,我将它改成“19200”,这次再运行,出现了让人兴奋的结果:
SendMessage(): sample application.
Using jSMSEngine API 1.2.6 (B1)
ME:
OK
ME:
OK
ME:
OK
ME:
OK
ME:
OK
ME:
LG Electronics Inc.
OK
ME:
LG-G7100 GSM Mobile Station
OK
ME:
352626000138277
OK
ME:
460000705108624
OK
ME:
Revision: (Date: Feb 19 2004, Time: 00:54:52)
OK
ME:
+CBC: 0,0
OK
ME:
+CSQ: 20,0
OK
ME:
OK
ME:
OK
Mobile Device Information:
Manufacturer : LG Electronics Inc.
Model : LG-G7100 GSM Mobile Station
Serial No : 352626000138277
IMSI : 460000705108624
S/W Version : Revision: (Date: Feb 19 2004, Time: 00:54:52)
Battery Level : 0%
Signal Level : 0%
ME:
OK
ME:
ERROR
ME:
+CMGS: 22
OK
Message Sent!
这个结果令人高兴,正在高兴之余,我就问同事(短信接收人!)是否收到,回答是令人沮丧的——没有。我打开发送短信用的手机,打开发件箱,看到里面有一条为发短信,没有接收人,而且短信内容是一堆乱码。直觉告诉我,这就是刚刚发送的那条短信。但这是怎么回事呢,为什么是乱码?连试了几次都是这样。
没有办法,设置了断点,准备一步步调试,调试过程中没有发现什么问题,我正在纳闷的时候,同事说“收到了短信了”。我赛,高兴啊,直接再运行一遍,结果还是乱码,对方没有收到。只有再调试一遍,一步步执行,调试结束后,同事又说“收到了”。考,折磨我呢,代码一点也没有改动,调试就可以收到,直接运行就收不到。(忍住,没有砸机器)。
冷静下来,仔细想想,是不是执行时间上的问题(现在已经是‘有病乱投医’了),我仔细跟踪了执行过程,在CService.java文件的sendMessage方法中注意到如下代码断:
。。。。。。。。。
serialDriver.send(CUtils.substituteSymbol(CATCommands.AT_SEND_MESSAGE, "\"{1}\"", "" + j));
while (serialDriver.dataAvailable()) serialDriver.skipBytes(1);
serialDriver.send(pdu);
serialDriver.send((char) 26);
response = serialDriver.getResponse();
。。。。。。。。。
黄色标注的部分引起了我的注意,我感觉可能是这个地方出现了问题,我将代码改成如下:
。。。。。。。。
serialDriver.send(CUtils.substituteSymbol(CATCommands.AT_SEND_MESSAGE, "\"{1}\"", "" + j));
/** 这是后添加的内容 */
Thread.sleep(500);
/** 这是后添加的内容 */
while (serialDriver.dataAvailable()) serialDriver.skipBytes(1);
serialDriver.send(pdu);
serialDriver.send((char) 26);
response = serialDriver.getResponse();
。。。。。。。。。
再次直接运行,成功了,没有出现乱码现象,而且对方收到内容了。终于搞定了。
以上就是我使用jsmsengine过程中遇到的问题和解决办法,虽然现在能够发送短信了,但是为什么会出现这个问题我还不甚了解。在这里写出来与大家分享,希望能够相互交流一下。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/java_gay/archive/2005/06/22/400381.aspx
发表评论
-
tomcat was unable to start within 45 seconds
2013-11-11 15:59 834原因一: -
Apache Commons Lang
2013-10-15 12:10 3162ArrayUtils public class Tes ... -
htmlunit form
2013-06-25 11:13 920Form提交 对于WEB应用,有着大量的表单,所以Html ... -
QQ微博登录步骤
2013-05-28 12:14 0QQ微博登录步骤: 1、验证帐号时,会访问一个地址。如下: ... -
jsoup
2013-05-22 23:37 1139import org.jsoup.Jsoup; import ... -
java 加密解密
2013-05-21 23:00 837import java.security.InvalidKey ... -
freemarket 对象应用篇(一)
2013-05-19 18:18 1036freemarket应用. 1.1:创建web工程testF ... -
中文数字转阿拉伯数字
2012-11-30 14:24 1792/** * @author loiy * ... -
标记:伪原创标题思路
2012-01-11 16:34 1284采用填词的办法进行伪 ... -
用JSmooth制作java jar文件的可执行exe文件教程(图文)
2012-01-05 01:09 8177下载完程序之后,运行 jsmoothgen.exe 1.进入“ ... -
多线程 Java.util.ConcurrentModificationException异常
2011-12-29 13:43 1522Iterator<Entry<String,B ... -
java 反序列化 抛出EOFException
2011-12-19 17:21 2250抛出这样的异常,一般情况下,是因为业务逻辑的问题。 如: 在没 ... -
一键安装双击运行——Java安装程序制作
2011-12-09 02:39 1328对于Java桌面应用来说,比较烦琐的就是安装部署问题,如:客户 ... -
只针对中英文混合分词的中文分词器
2011-12-02 17:28 4867该版本说明 1、只针对中英文混合分词 需要一些中文和英文连在 ... -
Java开源运行分析工具
2011-11-15 15:10 1881FProfiler FProfiler是一个非常快的Java ... -
cwss 按照指定的字符进行切词
2011-11-15 09:37 1192cwss 按照指定的字符进行切词 在 Utility.SEPE ... -
cwss bug 修复
2011-11-07 09:50 888修复的BUG有如下: 1、当只有中文、字母和数字,没有任何其他 ... -
java 怎么读取细胞词库scel
2011-10-24 14:28 3108private void sogou(String pa ... -
今天遇到一个奇怪的问题
2011-04-28 11:55 1185想实现一个用户访问页面,得到用户的外网地址 在公司上。程序是没 ... -
在myeclipse6.5下统一全部JSP编码更改
2011-04-07 14:47 1463在平时我们新建一个JSP页面默认编码是"ISO885 ...
相关推荐
**标题解析:** "使用jsmsengine开发短信息发送软件" 这个标题暗示我们要探讨的是一个名为"jsmsengine"的库或工具,它被用于构建能够发送短信的应用程序。这通常涉及到通过编程接口(API)与移动运营商的网关进行...
**使用jSMSEngine发送短信息**,首先需要理解其核心概念和组件。通常,jSMSEngine会包含以下部分: 1. **SMS Provider**: 这是与短信网关进行交互的接口,用于发送和接收短信。开发者需要配置提供商的相关参数,如...
9. **examples**:示例代码目录,开发者可以参考这些例子学习如何使用jSMSEngine来实现基本的短信功能,如发送、接收短信或者设置短信中心号码。 10. **串行通信**:由于jSMSEngine很可能依赖于串行通信,所以理解...
描述中提到的“SMS dll GSM/GPRS MODEM短消息DLL软件 example”进一步确认了这个压缩包是用来演示如何使用GSM/GPRS调制解调器通过DLL接口发送和接收短信。GSM/GPRS modem是一种允许计算机通过移动网络发送和接收数据...
3. **消息队列**:为了处理大量并发的短信请求,JSMSEngine 实现了消息队列机制,可以有效地缓冲和管理待发送的消息,确保系统的稳定性和高效性。 4. **日志记录与错误处理**:JSMSEngine 支持详细的日志记录,便于...
"sms短信息平台 短信息发送与接收"的主题涵盖了构建一个能够发送和接收短信的系统的核心技术点。下面我们将深入探讨这个领域的关键知识点。 1. **短信API和提供商**: - SMS服务通常通过第三方短信API提供商来实现...
在深入讨论通过串口使用AT指令发送短消息之前,我们需要先了解SMS(Short Message Service,短信服务)的相关规范。ESTI(欧洲电信标准化协会)制定的规范主要包括GSM 03.38、GSM 03.40和GSM 07.05。GSM 03.38和GSM ...
通常,短信发送和接收涉及到通过手机网络运营商的短消息服务中心(SMSC)进行通信。在C#中,这通常是通过使用短信协议,如简短消息传输协议(SMPP)或HTTP/HTTPS接口来实现的。这些协议允许程序与服务提供商的短信...
手机短信息SMS开发—编码、解码 手机短信息(SMS)开发中,编码和解码是两个重要的概念。编码是将ASCII码转换为GSM字符集,以便在手机上正确显示短信息,而解码则是将GSM字符集转换回ASCII码,以便在计算机上正确...
短消息的生成是指用户输入短消息内容,短消息的发送是指短消息从移动站发送到短消息中心,短消息的接收是指短消息从短消息中心发送到移动站,短消息的确认是指移动站确认短消息的接收。 6. SMS应用:SMS在移动支付...
本文主要探讨的是SMS短消息的PDU(Protocol Data Unit,协议数据单元)编码与解码的详细信息,结合西门子TC35T用户手册中的GF-1000 GSM MODEM短消息收发实例,深入理解这一过程。 1. SMS短消息控制终端 TC35i模块是...
本篇文章将详细介绍如何使用Delphi编程语言来开发一个简单的手机短信息发送程序。 #### 技术背景 大多数现代手机都支持GSM AT指令集,这是一种类似于Modem控制的指令集,由诺基亚、爱立信、摩托罗拉和HP等厂商共同...
在IT行业中,短消息服务(SMS)是一种广泛用于通信的技术,尤其在移动应用程序和企业级系统中。在Java环境中开发SMS功能,可以实现各种应用场景,如验证码发送、通知提醒等。"sms_java.rar"这个压缩包文件似乎包含了...
在Web服务器上发送SMS(短消息服务)是网络应用程序中常见的功能,特别是在用户验证、通知服务和客户服务场景中。在ASP.NET环境中实现这一功能,我们可以利用各种库和服务API来完成。下面将详细介绍如何在ASP.NET中...
【sms短消息发送系统】是一个基于Delphi编程语言开发的应用程序,主要功能是实现短信的发送。Delphi是一款强大的Windows应用程序开发工具,以其快速编译和高性能而闻名,尤其适合开发桌面应用。在这个系统中,我们...
标题中的“SMS发送工具,支持将文本文件通过SMS发送”是指一种软件应用,它能够帮助用户将文本文件的内容转换为短信并发送出去。这个工具在许多场景下都非常实用,比如在没有网络连接或者网络不稳定的情况下,需要...