待解決問題

2022-08-10 15:06:22 字數 2954 閱讀 5514

1.將資料直接傳送給長位址的裝置,即長位址定址,實驗時未成功

但看原始碼應該是可以的,先記下有時間再看

zcl_samplesw.c

uint8 pvalue[8]=;

// uint8 pvalue[8]=;

zclsamplesw_dstaddr.addrmode = (afaddrmode_t)addr64bit;

zclsamplesw_dstaddr.endpoint = 13;

//zclsamplesw_dstaddr.addr.shortaddr=0xffff;

osal_memcpy(zclsamplesw_dstaddr.addr.extaddr,pvalue,8);

readcmd.numattr=2;

readcmd.attrid[0]=attrid_basic_zcl_version;

readcmd.attrid[1]=attrid_basic_manufacturer_name;

st= zcl_sendread( samplesw_endpoint, &zclsamplesw_dstaddr,

/*zcl_cluster_id_gen_on_off*/zcl_cluster_id_gen_basic, &readcmd,

zcl_frame_client_server_dir, false, 0 );

2.homeautomation中,zcl_samplesw.c

繫結之後,使用如下可以成功讀取到zcl_samplelight.c的屬性值

/* 

zclsamplesw_dstaddr.addrmode = (afaddrmode_t)addrbroadcast;

zclsamplesw_dstaddr.endpoint = 13;

zclsamplesw_dstaddr.addr.shortaddr=0xffff;

*/ readcmd.numattr=2;

readcmd.attrid[0]=attrid_basic_zcl_version;

readcmd.attrid[1]=attrid_basic_manufacturer_name;

st= zcl_sendread( samplesw_endpoint, &zclsamplesw_dstaddr,

/*zcl_cluster_id_gen_on_off*/zcl_cluster_id_gen_basic, &readcmd,

zcl_frame_client_server_dir, false, 0 );

但是如果把注釋取消,就不能成功讀取,具體是

對方可以收到訊息,可以進入到zafincomingdata函式,但是

void afincomingdata( aps_frameformat_t *aff, zaddrtype_t *srcaddress, uint16 srcpanid,

nlde_signal_t *sig, byte securityuse, uint32 timestamp )

else if ( aff->dstendpoint == af_broadcast_endpoint )

}else if ( (epdesc = affindendpointdesc( aff->dstendpoint )) )

while ( epdesc )//進入不了這個迴圈中,貌似epdesc有問題

}

原因找到:

雙方的端點的簡單描述符裡的clustlist裡需要都定義需要通訊的clusterid才行,並且雙方方向要互補。

sw定義的outclustlist:

const cid_t zclsamplesw_outclusterlist[zclsamplesw_max_outclusters] =

;light定義的inclusterlist:

const cid_t zclsamplelight_inclusterlist[zclsamplelight_max_inclusters] =

;雙方簡單描述符裡都有zcl_cluster_id_gen_basic,則可以通過指定位址方式進行clusterid是zcl_cluster_id_gen_basic的資料通訊。

在繫結的時候使用的是

zdp_enddevicebindreq( &dstaddr, nlme_getshortaddr(),

samplelight_endpoint,

zcl_ha_profile_id,

zclsamplelight_bindinglist, bindinginclusters,

/*0, null,   // no outgoing clusters to bind*/

zclsamplelight_bindinglist, bindinginclusters,

true );

雙方的bindinginclusters定義都如下:

static cid_t bindinginclusters[zclsamplelight_bindinglist] =

;則雙方可以通過繫結方式進行clusterid是

zcl_cluster_id_gen_basic或者

zcl_cluster_id_gen_on_off

的資料通訊

中斷函式中最好不要迴圈,也不要呼叫汗迴圈語句的函式,否則程式莫名其妙的出現問題,比如陣列資料均變成0

void test(void);

void test(void)

#pragma vector = t4_vector

__interrupt void as_ir_rec_t4_isr(void)

timif &= ~0x18;                        //清除timer4溢位中斷標記

ircon &= ~0x10;                       //清除timer4中斷標記

}}

待解決問題

問題1 2019 4 21 問題 用dword dwerror wsagetlasterror 這是什麼查錯誤方式?筆記本重灌系統後,以前能執行的程式中的ping程式不能執行了。檢視 建立套接字失敗。rawsock socket af inet,sock raw,ipproto icmp rawso...

待解決問題

2.解決 下拉問題 昨天的例子可以借鑑 20090724 計畫解決。3.解決grid和翻頁結合的問題。4.解決grid本身的一些設定問題,為什麼我弄出來的沒有滾動條,這個grid不能複製網格內的內容,這個比較噁心。5.解決通用查詢問題,如何根據from或者panel中的內容去生成條件完成查詢 200...

待解決問題?

1,linux核心在啟動過程中會尋找並載入根檔案系統,載入成功則進入linux shell,執行使用者程式。如果找不到合適的根檔案系統,則會出現kernel panic錯誤並停止。那麼問題來了,如何尋找和載入根檔案系統?3,在產品開發過程中,bootloader的擴充套件功能,如硬體檢測 檔案系統支...