亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cathandler.java

?? JAVA手機短信開發包
?? JAVA
字號:
//	jSMSEngine API.
//	An open-source API package for sending and receiving SMS via a GSM device.
//	Copyright (C) 2002-2006, Thanasis Delenikas, Athens/GREECE
//		Web Site: http://www.jsmsengine.org
//
//	jSMSEngine is a package which can be used in order to add SMS processing
//		capabilities in an application. jSMSEngine is written in Java. It allows you
//		to communicate with a compatible mobile phone or GSM Modem, and
//		send / receive SMS messages.
//
//	jSMSEngine is distributed under the LGPL license.
//
//	This library is free software; you can redistribute it and/or
//		modify it under the terms of the GNU Lesser General Public
//		License as published by the Free Software Foundation; either
//		version 2.1 of the License, or (at your option) any later version.
//	This library is distributed in the hope that it will be useful,
//		but WITHOUT ANY WARRANTY; without even the implied warranty of
//		MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//		Lesser General Public License for more details.
//	You should have received a copy of the GNU Lesser General Public
//		License along with this library; if not, write to the Free Software
//		Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//

package org.jsmsengine;

import java.util.logging.*;

/**
	This class contains all the AT commands which are used during communication
	of the API with the GSM device.<br><br>
	This is the generic handler. It should be compatible with all devices. However, "should" is
	a big word... Some GSM modems may need slightly different AT commands to work. In this
	case, subclassing of CATHandler() is required.<br><br>
	<strong>Note for those creating subclassed versions of CATHandler for their own modems:</strong><br>
	All methods that are marked as "<strong>***Critical method***</strong>" should be implemented, 
	otherwise the jSMSEngine API will not work. The Non-Critical may be left unimplemented - they should 
	not affect the normal jSMSEngine API operation.
*/
public class CATHandler
{
	protected CSerialDriver serialDriver;
	protected Logger log;

	public CATHandler(CSerialDriver serialDriver, Logger log)
	{
		this.serialDriver = serialDriver;
		this.log = log;
	}

	/**
		Sends a couple of "AT" commands in order to sync with modem.<br>
		Useful with auto-baud-detecting GSM devices.<br>
		<strong>***Critical method***</strong>
	*/
	public void sync() throws Exception
	{
		serialDriver.send("AT\r");
		serialDriver.getResponse();
		serialDriver.send("AT\r");
		serialDriver.getResponse();
	}

	/**
		This command should soft-reset the modem.<br>
		Soft-reset is not available for all GSM devices, and the operation is not 
		critical.<br>
		<strong>***Non-Critical method***</strong>
	*/
	public void reset() throws Exception
	{
		serialDriver.send("AT+CFUN=1\r");
		try { Thread.sleep(10000); } catch (Exception e) {}
		serialDriver.getResponse();
	}

	/**
		Sets Echo off.<br>
		<strong>***Critical method***</strong>
	*/
	public void echoOff() throws Exception
	{
		serialDriver.send("ATE0\r");
		serialDriver.getResponse();
	}

	/**
		Other initialization commands.<br>
		This is left empty, but you might need to add specific code for your specific modem.<br>
		<strong>***Non-Critical method***</strong>
	*/
	public void init() throws Exception
	{
	}

	/**
		Sends an "AT" command and waits for response.<br>
		<strong>***Critical method***</strong>

		@return  True if GSM device responded with "OK".
	*/
	public boolean isAlive() throws Exception
	{
		serialDriver.send("AT\r");
		return (serialDriver.getResponse().indexOf("OK\r") >= 0);
	}

	/**
		Requests status regarding PIN.<br>
		<strong>***Critical method***</strong>

		@return  True if GSM device is waiting for PIN to be entered.
	*/
	public boolean waitingForPin() throws Exception
	{
		serialDriver.send("AT+CPIN?\r");
		return (serialDriver.getResponse().indexOf("SIM PIN") >= 0);
	}

	/**
		Enters PIN.<br>
		<strong>***Critical method***</strong>

		@return  True if GSM device unlocked. False if PIN is wrong.
	*/
	public boolean enterPin(String pin) throws Exception
	{
		serialDriver.send(CUtils.substituteSymbol("AT+CPIN=\"{1}\"\r", "{1}", pin));
		Thread.sleep(5000);
		if (serialDriver.getResponse().indexOf("OK\r") >= 0)
		{
			try { Thread.sleep(10000); } catch (Exception e) {} 
			return true;
		}
		else return false;
	}

	/**
		Sets verbose mode for error reporting.<br>
		<strong>***Non-Critical method***</strong>

		@return  True if GSM device accepted the option.
	*/
	public boolean setVerboseErrors() throws Exception
	{
		serialDriver.send("AT+CMEE=1\r");
		return (serialDriver.getResponse().equalsIgnoreCase("OK\r"));
	}

	/**
		Sets PDU operation.<br>
		<strong>***Critical method***</strong>

		@return  True if GSM device supports PDU operation.
	*/
	public boolean setPduMode() throws Exception
	{
		serialDriver.send("AT+CMGF=0\r");
		return (serialDriver.getResponse().equalsIgnoreCase("OK\r"));
	}

	/**
		Disable GSM device originated delivery notifications.<br>
		<strong>***Critical method***</strong>

		@return  True if GSM device disabled notifications.
	*/
	public boolean  disableIndications() throws Exception
	{
		serialDriver.send("AT+CNMI=0,0,0,0\r");
		return (serialDriver.getResponse().equalsIgnoreCase("OK\r"));
	}

	/**
		Returns the Manufacturer string.<br>
		<strong>***Critical method***</strong>

		@return  The Manufacturer string.
	*/
	public String getManufacturer() throws Exception
	{
		serialDriver.send("AT+CGMI\r");
		return serialDriver.getResponse();
	}

	/**
		Returns the Model string.<br>
		<strong>***Critical method***</strong>

		@return  The Model string.
	*/
	public String getModel() throws Exception
	{
		serialDriver.send("AT+CGMM\r");
		return serialDriver.getResponse();
	}

	/**
		Returns the GSM Device serial number.<br>
		<strong>***Critical method***</strong>

		@return  The GSM Device serial number.
	*/
	public String getSerialNo() throws Exception
	{
		serialDriver.send("AT+CGSN\r");
		return serialDriver.getResponse();
	}

	/**
		Returns the IMSI (International Mobile Subscriber Identity).<br>
		<strong>***Critical method***</strong>

		@return  The IMSI String.
	*/
	public String getImsi() throws Exception
	{
		serialDriver.send("AT+CIMI\r");
		return serialDriver.getResponse();
	}

	/**
		Returns the GSM device software version.<br>
		<strong>***Critical method***</strong>

		@return  The software version.
	*/
	public String getSwVersion() throws Exception
	{
		serialDriver.send("AT+CGMR\r");
		return serialDriver.getResponse();
	}

	/**
		Returns the battery level.<br>
		<strong>***Critical method***</strong>

		@return  The battery level.
	*/
	public String getBatteryLevel() throws Exception
	{
		serialDriver.send("AT+CBC\r");
		return serialDriver.getResponse();
	}

	/**
		Returns the signal level.<br>
		<strong>***Critical method***</strong>

		@return  The signal level.
	*/
	public String getSignalLevel() throws Exception
	{
		serialDriver.send("AT+CSQ\r");
		return serialDriver.getResponse();
	}

	/**
		Sets the preferred message storage to Memory.<br>
		<strong>***Non-Critical method***</strong>

		@return  True if operated succeded.
	*/
	public boolean setStorageMEM() throws Exception
	{
		serialDriver.send("AT+CPMS=\"ME\"\r");
		return (serialDriver.getResponse().equalsIgnoreCase("OK\r"));
	}

	/**
		Sets the preferred message storage to SIM.<br>
		<strong>***Non-Critical method***</strong>

		@return  True if operated succeded.
	*/
	public boolean setStorageSIM() throws Exception
	{
		serialDriver.send("AT+CPMS=\"SM\"\r");
		return (serialDriver.getResponse().equalsIgnoreCase("OK\r"));
	}

	/**
		Switches GSM device to command mode.<br>
		<strong>***Critical method***</strong>
	*/
	public void switchToCmdMode() throws Exception
	{
		serialDriver.send("+++");
		serialDriver.clearBuffer();
	}

	/**
		Keeps the GSM link open for sending multiple messages in less time.<br>
		Not critical. If this option is supported, message dispatch may be a little 
		faster.<br>
		<strong>***Non-Critical method***</strong>

		@return  True if operated succeded.
	*/
	public boolean keepGsmLinkOpen() throws Exception
	{
		serialDriver.send("AT+CMMS=1\r");
		return (serialDriver.getResponse().equalsIgnoreCase("OK\r"));
	}

	/**
		Sends a message.<br>
		In case of errors, it rerties up to three times to complete the operation 
		before it returns failure.<br>
		<strong>***Critical method***</strong>

		@return  True if operated succeded.
	*/
	public boolean sendMessage(int size, String pdu) throws Exception
	{
		int responseRetries, errorRetries;
		String response;
		boolean sent;

		errorRetries = 0;
		while (true)
		{
			responseRetries = 0;
			serialDriver.send(CUtils.substituteSymbol("AT+CMGS=\"{1}\"\r", "\"{1}\"", "" + size));
			Thread.sleep(100);
			while (!serialDriver.dataAvailable())
			{
				responseRetries ++;
				if (responseRetries == 4) throw new NoResponseException();
				log.log(Level.SEVERE, "ATHandler().SendMessage(): Still waiting for response (I) (" + responseRetries + ")...");
				Thread.sleep(5000);
			}
			responseRetries = 0;
			serialDriver.clearBuffer();
			serialDriver.send(pdu);
			serialDriver.send((char) 26);
			response = serialDriver.getResponse();
			while (response.length() == 0)
			{
				responseRetries ++;
				if (responseRetries == 4)  throw new NoResponseException();
				log.log(Level.SEVERE, "ATHandler().SendMessage(): Still waiting for response (II) (" + responseRetries + ")...");
				response = serialDriver.getResponse();
			}
			if (response.indexOf("OK\r") >= 0)
			{
				sent = true;
				break;
			}
			else if (response.indexOf("CMS ERROR:") >= 0)
			{
				errorRetries ++;
				if (errorRetries == 4)
				{
					log.log(Level.SEVERE, "GSM CMS Errors: Quit retrying, message lost...");
					sent = false;
					break;
				}
				else log.log(Level.SEVERE, "GSM CMS Errors: Possible collision, retrying...");
			}
			else sent = false;
		}
		return sent;
	}

	/**
		Returns the list of messages.<br>
		<strong>***Critical method***</strong>

		@return  True if operated succeded.
	*/
	public String listMessages(int messageClass) throws Exception
	{
		String command;

		switch (messageClass)
		{
			case CIncomingMessage.CLASS_ALL:
				serialDriver.send("AT+CMGL=4\r");
				break;
			case CIncomingMessage.CLASS_REC_UNREAD:
				serialDriver.send("AT+CMGL=0\r");
				break;
			case CIncomingMessage.CLASS_REC_READ:
				serialDriver.send("AT+CMGL=1\r");
				break;
			case CIncomingMessage.CLASS_STO_UNSENT:
				serialDriver.send("AT+CMGL=2\r");
				break;
			case CIncomingMessage.CLASS_STO_SENT:
				serialDriver.send("AT+CMGL=3\r");
				break;
		}
		return serialDriver.getResponse();
	}

	/**
		Deletes a message from GSM device memory.<br>
		<strong>***Critical method***</strong>

		@return  True if operated succeded.
	*/
	public boolean deleteMessage(int memIndex) throws Exception
	{
		serialDriver.send(CUtils.substituteSymbol("AT+CMGD={1}\r", "{1}", "" + memIndex));
		return (serialDriver.getResponse().equalsIgnoreCase("OK\r"));
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩一区二区| 精品国产免费久久| 69堂精品视频| 久久人人爽爽爽人久久久| 欧美国产禁国产网站cc| 樱花草国产18久久久久| 精品一区二区三区的国产在线播放| 成人一区二区三区| 欧美午夜精品理论片a级按摩| 精品国产免费久久| 亚洲图片欧美一区| 国产精品一二二区| 欧美视频一区在线| 国产人成一区二区三区影院| 亚洲图片欧美视频| 狠狠色狠狠色综合日日91app| 91免费小视频| 26uuu国产一区二区三区| 亚洲一区二区综合| 国产成人超碰人人澡人人澡| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| www国产成人免费观看视频 深夜成人网| 亚洲精品成人悠悠色影视| 久久99久久99| 欧美三级电影网站| 中文一区在线播放| 久久国产精品99精品国产| 在线亚洲高清视频| 国产欧美1区2区3区| 免费亚洲电影在线| 色婷婷精品久久二区二区蜜臂av| 久久久午夜电影| 日本一道高清亚洲日美韩| 色综合婷婷久久| 久久日韩精品一区二区五区| 日韩电影在线观看电影| 成人免费的视频| 欧美成人一区二区三区片免费| 亚洲影视在线播放| 成人黄色片在线观看| 欧美一级片免费看| 亚洲成在线观看| 99久久婷婷国产精品综合| 精品粉嫩超白一线天av| 天天综合日日夜夜精品| 91色porny蝌蚪| 国产精品理伦片| 国产成人av电影在线| 日韩三级中文字幕| 天天综合天天综合色| 欧美性色欧美a在线播放| 综合自拍亚洲综合图不卡区| 国产不卡高清在线观看视频| 精品国产91久久久久久久妲己| 日本vs亚洲vs韩国一区三区二区 | 精品国产乱码久久久久久闺蜜| 亚洲一区二区三区不卡国产欧美| 波波电影院一区二区三区| 久久久亚洲精品石原莉奈| 国产综合成人久久大片91| 日韩视频一区二区三区在线播放| 日韩在线a电影| 欧美精品久久99久久在免费线| 亚洲午夜久久久久久久久电影院 | 亚洲欧洲综合另类| 国产1区2区3区精品美女| 久久这里都是精品| 久久99国产精品免费网站| 欧美一级在线观看| 久久97超碰国产精品超碰| 欧美大片一区二区| 老司机一区二区| 亚洲精品一区二区三区香蕉| 精品一区二区在线播放| 精品成人一区二区| 国产乱子轮精品视频| 欧美国产激情二区三区| 成人app网站| 悠悠色在线精品| 欧美日韩国产在线观看| 日韩一区精品字幕| 日韩欧美不卡在线观看视频| 国产一区二区三区四区五区美女| 国产亚洲欧美一区在线观看| 国产成人免费高清| 成人免费视频在线观看| 91福利在线播放| 日韩二区三区四区| 久久综合给合久久狠狠狠97色69| 国产一区二区三区在线看麻豆| 久久精品水蜜桃av综合天堂| 成人精品亚洲人成在线| 自拍偷拍亚洲激情| 欧美绝品在线观看成人午夜影视| 日韩精品91亚洲二区在线观看| 欧美一区二区久久| 国产成人免费网站| 一区二区三区国产豹纹内裤在线| 欧美日韩高清一区二区不卡| 久久超碰97人人做人人爱| 国产日产欧美一区| 日本丶国产丶欧美色综合| 日韩高清在线不卡| 久久久久久久久久看片| 91在线看国产| 婷婷综合五月天| 久久久午夜精品理论片中文字幕| 99精品视频一区二区| 日韩成人一区二区| 国产片一区二区| 欧美日韩一区二区在线观看 | 国产亚洲精品资源在线26u| 99在线视频精品| 日韩—二三区免费观看av| 中文字幕欧美激情一区| 欧美日韩午夜精品| 国产在线看一区| 亚洲主播在线播放| 久久久久久久电影| 欧美亚洲国产一区二区三区| 国产一区福利在线| 亚洲国产va精品久久久不卡综合| 久久精品亚洲乱码伦伦中文 | 日产国产高清一区二区三区| 欧美高清在线一区二区| 制服丝袜中文字幕一区| 岛国精品在线观看| 日韩中文字幕av电影| 亚洲欧洲成人自拍| 日韩欧美一区二区视频| 色悠悠久久综合| 激情欧美日韩一区二区| 伊人婷婷欧美激情| 久久久久久久综合| 欧美日韩国产美女| 97超碰欧美中文字幕| 麻豆成人免费电影| 亚洲一二三四久久| 中文字幕精品一区二区三区精品| 8x福利精品第一导航| 91伊人久久大香线蕉| 国内精品国产三级国产a久久| 亚洲一区二区欧美| 国产精品卡一卡二卡三| 26uuuu精品一区二区| 亚洲欧美aⅴ...| 欧美人妇做爰xxxⅹ性高电影| 国产在线国偷精品免费看| 香蕉久久夜色精品国产使用方法| 国产精品美女久久久久aⅴ| 欧美一区二区国产| 欧美婷婷六月丁香综合色| 成人精品视频一区二区三区| 久久成人综合网| 日本强好片久久久久久aaa| 亚洲在线成人精品| 亚洲手机成人高清视频| 国产精品视频一二三| 亚洲精品一区二区三区香蕉| 欧美一区二区视频在线观看| 色视频一区二区| jizz一区二区| 不卡区在线中文字幕| 国产不卡高清在线观看视频| 久草精品在线观看| 奇米精品一区二区三区四区| 午夜视频在线观看一区二区| 一区二区三区毛片| 亚洲人成亚洲人成在线观看图片| 国产精品三级久久久久三级| 国产日产欧美精品一区二区三区| 精品国产1区二区| 久久综合给合久久狠狠狠97色69| 欧美刺激午夜性久久久久久久| 日韩亚洲欧美成人一区| 欧美大片在线观看| 精品盗摄一区二区三区| 精品国产不卡一区二区三区| 日韩三级高清在线| 欧美不卡在线视频| 欧美xxxxxxxxx| 精品少妇一区二区三区日产乱码| 日韩欧美成人午夜| 26uuu精品一区二区| 久久精品日产第一区二区三区高清版| 精品女同一区二区| 精品三级在线看| 国产日韩亚洲欧美综合| 中文在线一区二区| 亚洲四区在线观看| 亚洲影院久久精品| 日韩国产精品久久久久久亚洲| 免费人成精品欧美精品 | 91精品福利在线一区二区三区| 欧美欧美欧美欧美| 日韩美女视频一区二区在线观看| 日韩午夜激情av| 久久精品男人的天堂| 国产精品久久一卡二卡| 一区二区三区欧美|