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的擴充套件功能,如硬體檢測 檔案系統支...