⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cregevent.java

📁 自己实现的基于串口通讯发送短消息的低层协议JAVA代码
💻 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 + -