最终目标:在Linux下提供一个稳定可靠的Java短信发送服务器。
第一阶段:在Win32平台下编码并测试;
第二阶段:在Linux平台下部署并测试;
目录:
相关资源:(Java Communication包)
Win32串口编程前期准备
Win32短信Modem的测试步骤和AT指令:
Linux串口编程前期准备
列出系统所有串口、并口,来找到短信Modem所使用的串口名字
测试串口速率
Win32/Linux下串口编程的差异
Win32/Linux下串口编程(屏蔽平台差异)
Win32/Linux下加载Java串口驱动
-------------------------
相关资源:(Java Communication包)
comm3.0_u1_linux.zip
http://www.sun.com/download/products.xml?id=43208d3d comm2.0.3.zip (for solaris)
javacomm20-win32.zip
http://mdubuc.freeshell.org/Jolt/javacomm20-win32.zip rxtx-2.1-7-bins.zip
http://www.frii.com/~jarvi/rxtx 支持Windows/MacOS/Solaris/Linux四个平台
注:在java中,利用Java Communication包可以操作串口,但官方的包在3.0之后就支持Linux和Solaris平台了,Windows平台的只支持到98年出的2.0版本,不过在XP下还能使用,google一下就可以下载到。当然,也可以用开源的Rxtx实现串口通信
Win32串口编程前期准备
1,unzip javacomm20-win32.zip 到c:/下
2,copy c:/commapi/win32com.dll c:/jdk1.4.2/bin
3,copy c:/commapi/javax.comm.properties c:/jdk1.1.6/lib
4,copy c:/commapi/comm.jar c:/jdk1.1.6/lib
5,set CLASSPATH=c:/jdk1.1.6/lib/comm.jar;%classpath%
6,如果使用USB口的GSM-Modem,则还需要安装,USB-to-Serial的驱动:
http://www.jingweigps.com/xzzx.htm (经纬星航)
Win32短信Modem的测试步骤和AT指令:
1,安装USB驱动:(http://www.jingweigps.com/xzzx.htm 经纬星航 USB接口 GSM/GPRS MODEM驱动程序 )
2,打开设备管理器,看看是使用了哪个COM口(显示USB-to-Serial的为COM15),右键选择属性,查看速率为115200
3,使用Windows的超级终端,连接COM15,设定速率115200,其他缺省;
4,以TEXT模式测试发送短信
- at
-
at+cmgf=1
- at+cmgs=138xxxxxxxx
- test<ctrl-z>
Linux串口编程前期准备
1,unzip comm3.0_u1_linux.zip 到/home/appusr/JavaComm下
2,cp /home/appusr/JavaComm/libLinuxSerialParallel.so /usr/lib
3,cp /home/appusr/JavaComm/javax.comm.properties /usr/java/j2sdk1.4.2_11/lib
4,cp /home/appusr/JavaComm/comm_linux.jar /usr/java/j2sdk1.4.2_11/lib
5,set CLASSPATH=.:/home/appusr/JavaComm/comm_linux.jar:$CLASSPATH
6,export LANG=zh_CN.GBK #设置中文,否则针对短信进行UCS2编码不正确。
注1:如果没有ROOT权限,可以直接执行如下命令:
- exportLD_LIBRARY_PATH=/home/appusr/JavaComm:$LD_LIBRARY_PATH
-
exportCLASSPATH=.:javacomm_linux.jar:commons-logging-1.0.4.jar:log4j-1.2.8.jar:junit-3.8.1.jar:mpsp_bs2.jar
- exportLANG=zh_CN.GBK
注2:针对javax.comm.properties的搜索顺序如下:
- 1.Currentdirectory.
-
2.Eachdirectoryin${java.classpath}(ie.$CLASSPATHor-classpathsetting).
-
3.<JDK>/lib.
-
4.<JDK>/jre/lib
列出系统所有串口、并口,来找到短信Modem所使用的串口名字
- publicstaticvoidshowCommPorts(){
-
CommPortIdentifierportID=null;
-
Listport1Vector=newVector(32);
-
Listport2Vector=newVector(32);
- Enumerationports=CommPortIdentifier.getPortIdentifiers();
-
while(ports.hasMoreElements()){
- portID=(CommPortIdentifier)ports.nextElement();
-
-
switch(portID.getPortType()){
-
caseCommPortIdentifier.PORT_SERIAL:port1Vector.add(portID.getName());break;
-
caseCommPortIdentifier.PORT_PARALLEL:port2Vector.add(portID.getName());break;
-
default:break;
- }
- }
-
debug("PORT_SERIAL="+port1Vector);
-
debug("PORT_PARALLEL="+port2Vector);
- }
串口编程速率测试:使用AT指令测试串口速率,高速不一定兼容低速(发送命令,返回OK则表示握手成功)
- publicstaticvoidtest_rates()throwsException{
-
int[]rates={2400,4800,9600,19200,115200,230400,460800,921600,};
-
Com2Smscomm=newCom2Sms();
-
comm.set_comm_rate(9600);
-
comm.comm_open(5000);
-
for(inti=0;i<rates.length;i++){
-
try{
- comm.set_comm_rate(rates[i]);
- comm.at_hello();
-
log.info("SUCCforrate:"+rates[i]);
-
}catch(Exceptione){
-
log.warn("FAILforrate:"+rates[i]);
- }
-
sleepMSec(1000,"set_comm_rate:"+rates[i]);
- }
-
comm.comm_close(5000);
- }
Win32/Linux下串口编程的差异
1,加载的驱动名字不同(com.sun.comm.Win32Driver | com.sun.comm.LinuxDriver)
2,Win32需要单独加载动态库:System.loadLibrary("win32com")
3,所使用的串口名字不同(COM15 | /dev/ttyS0),后者可能还需要root权限。
4,速率可能不一样;
Win32/Linux下串口编程(屏蔽平台差异)
- Com2Smscomm=newCom2Sms();
-
comm.set_comm("COM16",115200);
-
Win32/Linux下加载Java串口驱动
- publicstaticbooleaninitDriver(){
-
booleanb=initDriver_linux();
-
if(!b)initDriver_win32();
-
/if(!b)initDriver_solaris();
-
returnb;
- }
-
protectedstaticbooleaninitDriver_win32(){
-
try{
-
System.loadLibrary("win32com");
-
debug("loadLibrary()...win32com.dll");
-
StringdriverName="com.sun.comm.Win32Driver";
- CommDriverdriver=(CommDriver)Class.forName(driverName).newInstance();
- driver.initialize();
-
debug("initDriver()..."+driverName);
-
returntrue;
-
}catch(Throwablee){
-
-
log.warn("initDriver()"+e);
-
returnfalse;
- }
- }
-
protectedstaticbooleaninitDriver_linux(){
-
try{
-
StringdriverName="com.sun.comm.LinuxDriver";
- CommDriverdriver=(CommDriver)Class.forName(driverName).newInstance();
- driver.initialize();
-
debug("initDriver()..."+driverName);
-
returntrue;
-
}catch(Throwablee){
-
-
log.warn("initDriver()"+e);
-
returnfalse;
- }
- }
下一步工作(20070813):
1,定义独立的服务器,提供http对外接口。(已完成)
2,提供任务队列处理,控制发送流量。(已完成)
3,对WapPush的支持。(已完成)
4,对OMADRM中DRC的支持。(和3一样);
5,测试3和4的超长短信(完成)
6,测试普通文本的超长短信(未完)。
相关推荐
13751069146 Saro Modem 短信测试.txt Java Comm API编程指南.doc Javax.comm简介.doc KEIL中如何用虚拟串口调试串口程序.doc Message PDU编码规则.doc QHDQ-29DDDAD3A0.LOG SMSLib串口通信.doc 串口常用参数.doc ...
本资源为串口modem短信发送的相关资料,可以看看.
Modem /串口通信编程 vc 网络Modem /串口通信编程 vc 网络Modem /串口通信编程 vc 网络Modem /串口通信编程 vc 网络Modem /串口通信编程 vc 网络
利用Delphi串口编程及GSM Modem实现短信收发
1.关于java串口通信用到的以上第3点里所属东西,一定要放对位置,否则会出现异常。 网上有很多关于以上所述东西的配置说明,但好像都没讲清楚。现把的经验分享: 1.comm.jar 直接导入到你的开发环境中就可以,这个没...
NULL 博文链接:https://125343158.iteye.com/blog/438451
使用modem实现的来电显示程序,可以用参考串口编程
用于串口猫的资料 用于基于串口的MODEM开发资料
短信开发包 gsm modem JAVA调用短信开发接口.zip 控制台SMS--测试通过(只支持发送信息)
Java控制CDMA MODEM完成短信息收发pdf,Java控制CDMA MODEM完成短信息收发
短信内容的存储类 /*** * CommonSms 短信用于全局变量 */ public class CommonSms{ /** id */ private int id; /**短信内容*/ private String smstext; /**短信发送方*/ private String sender;//短信...
C# PDU短信解码例程 GSM短信猫编程 gsm modem.docxC# PDU短信解码例程 GSM短信猫编程 gsm modem.docx
GSM MODEM 利用手机卡发送短信,用此开可以开发短信验证码。利用手机卡作为短信平台来达到自动化,智能等功能。这个示例是一种比较稳定的短信猫开发程序,免费版本的,您可以以此来再进行二次开发。硬件以及二次开发...
详细介绍了短信猫二次开发的过程,并有一个简单的例子。包好了smslib-3.3.3.jar的下载,log4j-1.2.13.jar 的资源。java 短信开发的好例子,不能错过呀,呵呵!!!
[202]串口实现与Modem的连接,VC用对话框实现.zip上位机开发VC串口学习资料源码下载[202]串口实现与Modem的连接,VC用对话框实现.zip上位机开发VC串口学习资料源码下载[202]串口实现与Modem的连接,VC用对话框实现.zip...
10.1.4 用串口收发SMS短信编程的一些讨论 283 10.2 计算机与Rabbit 2000嵌入式系统通信编程实例 286 10.2.1 Rabbit 2000微处理器介绍 286 10.2.2 动态C(Dynamic C)语言介绍 287 10.2.3 某车载无线调度系统实例介绍...
包含java, c# dephi和vb60
利用短信MODEM实现图书馆预约到书提醒 期刊 论文 毕业设计 毕设 图书馆 绝对好东西
基于GSM Modem终端短信系统研究与实现,马慧,,本文讨论了企业中的短信系统运用,采用工业级的GSM Modem设备,利用.Net框架技术,设计开发了一个企业短信系统。详细讨论了串口操作��