Zigbee在.Net Micro Framework系統中的應用

ZigbeeIEEE 802.15.4協議的代名詞。根據這個協議規定的技術是一種短距離、低功耗的無線通信技術。這一名稱來源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飛翔和嗡嗡”(zig)地抖動翅膀的舞蹈來與同伴傳遞花粉所在方位信息,也就是說蜜蜂依靠這樣的方式構成了群體中的通信網絡。其特點是近距離、低復雜度、自組織、低功耗、低數據速率、低成本。主要適合用于自動控制和遠程控制領域,可以嵌入各種設備。簡而言之,ZigBee就是一種便宜的,低功耗的近距離無線組網通訊技術。詳情請參見百度百科《Zigbee》。

.NET Micro Framework對存儲器和處理器的要求很低,開發人員可以在低功耗、低成本的ARM7ARM9BlackfinCortex-M3處理器上使用該框架(不需要MMU支持),所開發出來的軟件僅需要幾百KbytesRAMFlash/ROM存儲空間。而Windows Embedded CE的托管代碼環境需要約10~12Mbytes的存儲空間,基于.NET的應用編程設備只需要較少的存儲空間,降低了產品成本。詳情請參見《.Net Micro Framework 快速入門》。

兩者都是低復雜度,低功耗,低成本(.Net MF開源且免費)的解決方案,二者結合對構建物聯網無線方案來說,真是珠聯璧合。

目前Zigbee有如下兩種方案供最終用戶使用,一是Zigbee芯片(擴展閱讀《Zigbee芯片廠家對比),如Ti提供的芯片CC2420CC2430CC2530,其中CC2430CC2530片上集成了C8051內核,并提供了Zigbee協議棧,通過SPII2C或串口和CPU通信;二是Zigbee模塊,如周立功公司的ZICM2410模塊(美國CEL公司的MeshConnectTM模塊,集成語音編碼解碼器)和赫立訊公司的IP-Link1223模塊,模塊集成C8051內核,支持多路GPIO/AD,通過串口或SPI和外圍設備通信,使用雖然簡單,但價格較高,大概是前者的3~5倍。

目前.Net Micro Framework V4.0的源碼中已經提供了CC2420的驅動程序(源碼在\framework\core\drivers\802_15_4\stack\physical\cc2420),硬件通過SPI方式訪問CC2420芯片,在酒窖存儲監控中已有相關應用,有興趣的朋友可以參考一下。

芯片級方案由于沒有合適的開發板,所以暫且不作介紹,我今天僅介紹模塊級解決方案,其平臺是赫立訊公司的IP-Link1223模塊。

IP-Link1223模塊提供三種組網模式:線性網絡、全Mesh網絡、星型拓撲,其中全Mesh網絡最為常用。三種指令模式:AT指令模式、透傳模式、二進制模式,AT指令模式只能本地配置;透傳模式雖然好用,但是多點通信時并不靈活;二進制模式不僅本地可以配置,也可以透過網絡遠程配置,并且可以獲取路由表及相關鏈路通信質量。

軟件配置界面:

目前已經編寫出支持全部的二進制模式指令Helicomm_IPLink1223類,相關指令如下,詳細通信協議請參見赫立訊公司相關的說明文檔。

private static byte CMD_ReadADC = 0x81;????????????? //讀模擬通道值

??? private static byte CMD_ReadADC = 0x81;????????????? //讀模擬通道值

??? private static byte CMD_ReadRSSI = 0x82;???????????? //讀發射頻率

??? private static byte CMD_ReadTemperature = 0x83;????? //讀溫度

??? private static byte CMD_ReadSRegister = 0x86;??????? //讀S寄存器值

?? ?private static byte CMD_WriteSRegister = 0x87;?????? //寫S寄存器值

??? private static byte CMD_ReadMAC = 0x8B;????????????? //讀MAC地址

??? private static byte CMD_ReadVer = 0x8C;????????????? //讀內核版本

??? private static byte CMD_BatterySavingMode = 0x8D;??? //節電(停機)

??? private static byte CMD_Hibernation = 0x8E;????????? //休眠

??? private static byte CMD_SoftReboot = 0x8F;?????????? //軟重啟

??? private static byte CMD_HardwareReboot = 0xC0;?????? //硬重啟

??? private static byte CMD_Reset = 0x90;??????????????? //恢復出廠設置

??? private static byte CMD_ReadRoute = 0x95;??????????? //讀取路由表

??? private static byte CMD_ReadBlacklist = 0x9C;??????? //讀取黑名單???

??? private static byte CMD_WriteBlacklist = 0x9D;?????? //寫黑名單??

??? private static byte CMD_TrackerRoute = 0xAA;???? ????//跟蹤路由??

??? private static byte CMD_TrackerLQIRoute = 0xBB;????? //帶信號強度的跟蹤路由

??? private static byte CMD_ReadIO = 0xAC;?????????????? //讀IO狀態

??? private static byte CMD_WriteIO = 0xAD;????????????? //寫IO狀態

??? private static byte CMD_ScanNeighbour = 0xBC;??????? //掃描鄰居列表

??? private static byte CMD_ReadDeviceType = 0xC3;?????? //獲得設備類型????

private static byte CMD_LocalHibernation = 0xB1;???? //本地休眠

??? private static byte CMD_LocalAwaikening = 0xB2;????? //本地喚醒

???

???

轉載于:https://www.cnblogs.com/yefanqiu/archive/2010/05/13/1734932.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379235.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379235.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379235.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ffmpeg-AVFrame分配內存問題

目錄:1、格式:交錯式2、格式:平坦式3、總結:1、格式:交錯式 LRLRRLRLRLRLRLRLRLR 2、格式:平坦式 LLLLLLRRRRRR 3、總結: 兩種方式的內存排列在AVFrame中分配是有區別的 交錯式在一個buf…

stl中map函數_map :: empty()函數以及C ++ STL中的Example

stl中map函數C STL映射:: empty() (C STL map::empty()) It is built-in function in C STL and used to check whether the map container is empty or not i.e whether its size is 0 or not? 它是C STL中的內置函數,用于檢查地圖容器是否為空,即其…

C#使用Dotfuscator混淆代碼以及加密

C#編寫的代碼如果不進行一定程度的混淆和加密,那么是非常容易被反編譯進行破解的,特別是對于一些商業用途的C#軟件來說,因為盯著的人多,更是極易被攻破。使用Dotfuscator可以實現混淆代碼、變量名修改、字符串加密等功能。 這里介…

操作列表(三)

1,for循環(for 變量名 in 列表名:) phone [iphone 8, xiaomi10pro, huaweiv30pro, honor20, jianguopro]#定義一個列表phone for tel in phone:print("手機的類型為:" tel.title())#當然這里的每個元素也可以調用title()等一些方法 print(&…

C#特性之通俗演義

首先要說的是,可能一些剛接觸C#的朋友常常容易把屬性(Property)跟特性(Attribute)弄混淆,其實這是兩種不同的東西。屬性就是面向對象思想里所說的封裝在類里面的數據字段,其形式為: …

棧應用_計算按運算符優先級分布的算式(代碼、分析、匯編)

目錄&#xff1a;代碼&#xff1a;分析&#xff1a;匯編&#xff1a;代碼&#xff1a; LinkList.h LinkList.c LinkStack.h LinkStack.c 棧-線性表 main.c #include <stdio.h> #include "LinkStack.h"//該程序用棧來計算算式 /*比如&#xff1a;1*56/(5-3)…

php globals_PHP $ GLOBALS(超級全局變量),帶有示例

php globalsPHP $全球 (PHP $GLOBALS) PHP $GLOBALS is the only superglobal that does not begin with an underscore (_). It is an array that stores all the global scope variables. PHP $ GLOBALS是唯一不以下劃線( _ )開頭的超全局變量。 它是一個存儲所有全局范圍變量…

安裝部署項目(轉自)

1 新建安裝部署項目 打開VS&#xff0c;點擊新建項目&#xff0c;選擇&#xff1a;其他項目類型->安裝與部署->安裝向導(安裝項目也一樣)&#xff0c;然后點擊確定。 2 安裝向導 關閉后打開安裝向導&#xff0c;點擊下一步&#xff0c;或者直接點擊完成。 3 開始制作…

java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver

更改jdk&#xff0c;版本過高的緣故&#xff0c;更改jdk為1.7版本

kotlin 查找id_Kotlin程序查找給定范圍內的素數

kotlin 查找idA prime number is a natural number that is greater than 1 and cannot be formed by multiplying two smaller natural numbers. 質數是大于1的自然數&#xff0c;不能通過將兩個較小的自然數相乘而形成。 Given a range start and end, we have to print al…

socket代碼

客戶端:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> int main(int argc,char *argv[]) {int sockfd,numbytes;char buf[100];struct sockaddr_in th…

棧應用_將算式轉成按運算符優先級分布(代碼、分析、匯編)

目錄&#xff1a;代碼&#xff1a;分析&#xff1a;匯編&#xff1a;代碼&#xff1a; LinkList.h LinkList.c LinkStack.h LinkStack.c 棧-線性表 main.c #include <stdio.h> #include "LinkStack.h"/* 該程序將 正常的算式 轉換成按照運算符優先分布的算式…

課堂筆記(一)

1&#xff0c;怎樣查詢函數的用法 help(函數名) 2&#xff0c;表達式float(0b1100010101)float(0o1425)float(0x315)的結果是什么&#xff0c;并說明原因 True 浮點類型的數用二進制八進制十六進制的不同表達 3&#xff0c;oct()方法 轉換八進制輸出 4&#xff0c;hex()方…

Struts2.0標簽使用之s:checkboxlist/

jsp代碼如下&#xff1a; <s:form action"receive.action" method"post"> <s:checkboxlist id"user" name"cheuser" list"#request.userlist" listKey"id" listValue"name" lab…

[轉]深入淺出Java設計模式之備忘錄模式

本文轉自&#xff1a;http://dev.yesky.com/450/2070450.shtml 一、引子   俗話說&#xff1a;世上難買后悔藥。所以凡事講究個“三思而后行”&#xff0c;但總常見有人做“痛心疾首”狀&#xff1a;當初我要是……。如果真的有《大話西游》中能時光倒流的“月光寶盒”&#…

遞歸問題(代碼、分析、匯編)

目錄&#xff1a;代碼&#xff1a;分析&#xff1a;匯編&#xff1a;代碼&#xff1a; main.c #include <stdio.h>//該程序使用遞歸將字符串從后往前依次輸出void reverse(char* s) {if( (s ! NULL) && (*s ! \0) ){reverse(s 1);printf("%c", *s);…

Java LocalDate類| ofYearDay()方法與示例

LocalDate類的YearDay()方法 (LocalDate Class ofYearDay() method) ofYearDay() method is available in java.time package. ofYearDay()方法在java.time包中可用。 ofYearDay() method is used to create an instance of LocalDate object that holds the value from the ye…

ASP.NET C#讀寫Cookie的方法!

Cookie (HttpCookie的實例)提供了一種在 Web 應用程序中存儲用戶特定信息的方法。例如&#xff0c;當用戶訪問您的站點時&#xff0c;您可以使用 Cookie 存儲用戶首選項或其他信息。當該用戶再次訪問您的網站時&#xff0c;應用程序便可以檢索以前存儲的信息。 創建Cookie方法…

遞歸-裴波那契數列(代碼、分析、匯編)

目錄&#xff1a;代碼&#xff1a;分析&#xff1a;匯編&#xff1a;代碼&#xff1a; main.c #include <stdio.h>//該程序輸出裴波那契數列 int fibonacci(int n) {if( n > 1 ){return fibonacci(n-1) fibonacci(n-2);//注意&#xff1a;這里調用是一直調用左邊函…

javascript 事件委派

javascript 模擬用戶操作 <a href"javascript:;" onClick"javascript:alert(131231);" id"abc">asdfasdf</a> <script> if(document.all) { document.getElementById(abc).fireEvent(onclick); } else { var evt document.cr…