NB-IOT移植移動onenet基礎通信套件之Object_ID,實例ID,資源ID


1. 訪問是按照分層的,Object_ID/實例ID/資源ID,對應每一層ID的數據類型,目前是分為3層,一個實例下面可以有多個實例id,對下面的數據結構來說,如果是資源ID的話,類型只能是asBuffer,asBoolean,asInteger,asFloat,如果是實例ID的話,則是asChildren的類型,這個asChildren是個數據,包含實例ID下面所有的資源ID。

struct st_cis_data
{
    uint16_t             id;
    cis_datatype_t      type;
    struct
    {
        uint32_t    length;
        uint8_t*    buffer;
    }asBuffer;
    union
    {
        bool            asBoolean;
        int64_t         asInteger;
        double          asFloat;
        struct
        {
            uint32_t    count;
            struct st_cis_data* array;
        }asChildren;
        struct
        {
            cis_oid_t     objectId;
            cis_iid_t     instId;
        }asObjLink;
    } value;
} ;

2. 結構體,其中flag代表,后面的3個數據那個是有的,比如flag = 0x110,就是有object ID和實例ID,在大部分情況下,假如某個為0的話(假如實例ID為0),就是指該object ID下面所有的實例ID。

struct st_uri
{
    uint8_t      flag;           // indicates which segments are set
    cis_oid_t    objectId;
    cis_iid_t    instanceId;
    cis_rid_t    resourceId;
};

3. 按照上面的,我的代碼並沒有實現嗎,該指令是一個讀取請求消息,如果資源ID,resourceid =‘-1’,則該指令會攜帶count,代表需要讀取該instance下的所有資源,假設是工作服務器的讀操作,那么AT+MIPLREADRSP指令里面的值要怎么填寫,對AT來說就是字符串,那么指令需要去解析,但是目前根據文檔,就是說如果服務下發的是讀取實例下面的所有資源,那么這個指令將無法去上傳,只能一次一個資源。算了,先按照3級全部在的情況搞吧。

< valuetype >:發送的數據類型
發送的數據類型要求如下:
string =1,//字符串型
opaque=2,//不透明類型
integer=3,//整型
float=4,//浮點型
bool=5,//布爾型
<len>:讀取的數據長度
<value>:發送的數據值

4. 在此厘清楚object ID,實例ID,資源ID這三個的關系,object ID是分類,比如溫度傳感器,電池電量,就是兩個不同的object ID,然后有2個溫度傳感器,那么溫度傳感器A和溫度傳感器B就是2個實例,資源就是傳感器的數據和狀態等。object ID,實例ID這兩者有點像JAVA語言里面的類和對象。如下是國際組織定義好的object ID。

5. 如下是國際組織定義好的資源 ID。實例ID這個就是第幾個設備的編號,按數量就行,不需要定義的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM