📄 cregevent.java
字号:
package com.jzl.sirius.at.event;
import java.nio.ByteBuffer;
import com.jzl.sirius.at.ATConstants;
import com.jzl.sirius.at.util.StringMatch;
public class CREGEvent extends MutiableEvent {
private StringMatch startMatch = new StringMatch(ATConstants.CRLF + "+CREG:");
private StringMatch endMatch = new StringMatch(ATConstants.CRLF);
private boolean eventStarted = false;
private StringBuffer sb = new StringBuffer();
private int stat;
private String lac;
private String ci;
public void reset() {
super.reset();
eventStarted = false;
stat = -1;
lac = "";
ci = "";
sb = new StringBuffer();
}
public boolean match(char ch) {
eventStarted = startMatch.match(ch);
return eventStarted;
}
private void decodeResponse() {
int index = sb.indexOf(ATConstants.CRLF);
if (index == -1)
return;
try {
String str = sb.substring(0, index).trim();
String[] arry = str.split(",");
if (arry.length >= 1)
stat = Integer.parseInt(arry[0].trim());
if (arry.length >= 2)
lac = arry[1].substring(1, arry[1].length() - 1);
if (arry.length >= 3)
ci = arry[2].substring(1, arry[2].length() - 1);
}
catch(Exception ex) {
}
}
public boolean readResponse(ByteBuffer buffer) {
while(buffer.hasRemaining()){
char ch = (char)buffer.get();
if (eventStarted) {
sb.append(ch);
if (endMatch.match(ch)) {
// 事件结束,进行结果解析
decodeResponse();
finish();
return true;
}
}
else
match(ch);
}
return false;
}
public String getCi() {
return ci;
}
public String getLac() {
return lac;
}
public int getStat() {
return stat;
}
public Object clone() throws CloneNotSupportedException {
CREGEvent obj = (CREGEvent)super.clone();
obj.sb.append(sb);
obj.eventStarted = eventStarted;
obj.stat = stat;
obj.lac = lac;
obj.ci = ci;
return obj;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -