利用jSMSEngine开源包进行短信的收发

公司项目中要用到短信猫进行收发短信,在网上找到一个开源的jSMSEngine。经测试jSMSEngine
可以实现项目需求。

jSMSEngine
开源包可以利用GSM Modem或带有红外线、蓝牙、数据线的手机与电脑连通,收发短信。
相应的类库下载我已经打包好了

jSMSEngine开源项目主页
http://sourceforge.net/projects/jsmsengine/

相关类库下载

让我们先来配置开发环境环境。

1.    复制comm.jar、jSMSEngine.jar到jre\lib\ext文件夹下,或把开发包添加到开发环境中。
2.    复制javax.comm.properties到\jre\lib目录下。
3.    复制win32com.dll到\jre\bin目录下。


用如果是用Eclipse开发的话看看Install JRE里面的JRE路径,用那个就可以了。

如果不用开发工具的话jre就是你在系统环境里配置的JAVA_HOME 的路径。

以上工作是必须的,很重要。到这时环境已经准备好了。


在设备管理器下,看看手机占用的哪个com端口,更改程序里面的com端口和比特率两个参数,找一台带数据线的手机试试,最好不带内存卡的那种。

发送短信代码:

import java.util.LinkedList;

import org.jsmsengine.CIncomingMessage;
import org.jsmsengine.CMessage;
import org.jsmsengine.COutgoingMessage;
import org.jsmsengine.CService;

@SuppressWarnings("unchecked")
/****
 * 收发短信的服务类
 */
public class MsgService
{
	private static CService cs = null;

	public static void init(String port, Integer fm)
	{
		// 指定端口号和频率
		cs = new CService(port, fm);
	}

	/**
	 * 发送短信
	 * 
	 * @param phone
	 *            手机号
	 * @param info
	 *            短信内容
	 */
	public static void sendmsg(String phone, String info)
	{
		try
		{
			System.out.println("正在发送短信");
			// 初始化连接
			cs.initialize();
			// 设置jSMSEngine服务的缓存
			cs.setCacheDir(".\\");
			// 连接
			int status = cs.connect();
			// 连接成功(可以是GSM Modem、带有红外线、蓝牙、数据线的手机)
			if (status == CService.ERR_OK)
			{
				cs.setOperationMode(CService.MODE_PDU);
				cs.setSmscNumber("");
				COutgoingMessage msg = new COutgoingMessage(phone, info);
				msg.setMessageEncoding(CMessage.MESSAGE_ENCODING_UNICODE);
				if (cs.sendMessage(msg) == CService.ERR_OK)
				{
					System.out.println("给" + phone + "发送短信成功!");
				} else
				{
					System.out.println("给" + phone + "发送短信失败!");
				}
				// 断开连接
				cs.disconnect();
			} else
			{
				System.out.println("连接设备失败, 异常: " + status);
			}
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	/***
	 * 读取短信内容
	 */
	public static void readmsg()
	{
		//存入短信集合
		LinkedList msgList = new LinkedList();
		try
		{
			System.out.println("读取短信中。。。。");
			cs.initialize();
			cs.setCacheDir(".\\");
			// 连接设备
			int status = cs.connect(); 
			if (status == CService.ERR_OK)
			{
				cs.setOperationMode(CService.MODE_PDU);
				if (cs.readMessages(msgList, CIncomingMessage.CLASS_ALL) == CService.ERR_OK)
					for (int i = 0; i < msgList.size(); i++)
					{
						CIncomingMessage msg = (CIncomingMessage) msgList.get(i);
						System.out.println(msg);
						//输出短信文本
						System.out.println(msg.getText());
						//删除短信
						cs.deleteMessage(i);
					}
				// 断开连接
				cs.disconnect();
			} else
				System.out.println("设备连接失败:" + status);
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	public static void main(String[] args)
	{
		init("com4", 9600);
		sendmsg("15800000000", "这是一个测试程序");
		readmsg();
	}
}

ok,测试成功!

项目下载


你可能感兴趣的:(exception,String,测试,Integer,手机,encoding)