《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于VC6.0的無線傳感器網絡數據采集
基于VC6.0的無線傳感器網絡數據采集
來源:微型機與應用2012年第9期
陳良洲,熊宗接
(華中科技大學 機械學院儀器系,湖北 武漢 430074)
摘要: 介紹了以VC6.0為開發平臺,用無線單片機CC2530進行多節點多參數的低功耗數據采集系統。下位機設計了可靈活擴展的無線數據幀,并設計了采集控制命令,實現廣播模式和單目標地址控制兩種功能。上位機利用CSerialPort類對串口數據選擇性接收,提高了效率和穩定性,可保存和識別隨機分配的節點地址,并改進了CSerialPort類可實現十六進制數的發送。
Abstract:
Key words :

摘  要: 介紹了以VC6.0為開發平臺,用無線單片機CC2530進行多節點多參數的低功耗數據采集系統。下位機設計了可靈活擴展的無線數據幀,并設計了采集控制命令,實現廣播模式和單目標地址控制兩種功能。上位機利用CSerialPort類對串口數據選擇性接收,提高了效率和穩定性,可保存和識別隨機分配的節點地址,并改進了CSerialPort類可實現十六進制數的發送。
關鍵詞: 無線傳感器網絡;VC6.0;串口通信;CSerialPort類;數據幀

 無線傳感器網絡是由部署在監測區域內部或附近的大量廉價、具有通信、感測及計算能力的微型器節點通過自組織構成的“智能”測控網絡[1]。本系統下位機利用SHT11溫濕度傳感和美國TI公司的無線片上系統CC2530單片機構成終端傳感器節點,對溫室內的溫度和相對濕度及終端傳感器片上電壓三個參數進行實時測量,通過在環境內布置多個測量節點來獲取現場信息。在眾多集成可視化開發環境中,VisualC6.0是底層編程環境的最佳選擇,它提供了相當齊備的類和各種控件,編程界面友好。
1 系統下位機硬件組成
 系統下位機硬件組成如圖1示,由I2C總線的SHT11數字溫濕度傳感器連接CC2530芯片的VDD/3的ADC通道,經CC2530單片機采集處理后打包數據無線發送到與PC機連接的協調器節點。其中協調器節點與PC機通過串口轉USB線連接。

 下位機使用TI公司SensorDemo例程在IAR7.5集成開發環境下進行二次開發,在應用層對傳感器節點和協調器節點分別編寫程序,協調器節點接收傳感器節點的數據以數據幀格式串行發送到PC機[2]。
2 下位機數據幀設計
 下位機數據幀編程固定長度為20 B的數據,有些字節可變,有些字節是固定的。比如一個數據幀用十六進制表示為:FE 0F 46 87 DE 65 02 00 09 00 1B 20 00 00 38 33 00 00 00 9E。其中:FE是幀頭字節,46 87是雙字節數據,低字節在前,標識為8746為接收標志;9E是前面19個字節的“異或”運算值,為整個數據幀的CRC校驗位,可變;0F是固定值,表示除了幀開始和0F、46、87、9E 5個字節外的15個字節數;DE65是傳感器節點16 bit地址號65DE,是隨著數據來自不同節點變化;0002、0009也是固定的字節,表示數據包和有效數據位;1 B是節點溫度的整數部分,換算為十進制值為26℃,可變;20是節點片上電壓值(乘10倍值),換算為十進制值為3.2 V,可變;0000為父節點地址;38是節點相對濕度值,換算為十進制值為56%,可變;33是節點溫度的小數部分,換算為十進制值為(3×16+3)/256=0.199 2℃,可變;00 00 00是預留下來的3個字節給節點其他傳感器數據的傳送。
3 采集控制命令兩種模式實現
 在傳感器節點C文件中添加命令輸入集合COLLECTOR_CMD_ID,協調器節點C 添加同樣的命令輸出集。為協調器節點設計3 B的串口數據,前2個字節為目標地址,第3個字節為采集控制命令,如設置80為停止采集,40為開始采集命令。因為協調器地址是固定的0x0000十六進制數,其他傳感節點地址不可能是這個數,所以當發送前2個字節為0000時,可將此作為向全體傳感器節點廣播的命令的判斷,如果是具體單個節點地址,則只有相應節點接收控制命令,其中廣播命令發送的地址模式為0xFFFF。
4 上位機程序設計
4.1 CSerialPort類加入程序

 CSerialPort類是remon spekreijse寫的一個免費的串口類,可在互聯網下載到其頭文件(h文件)和源程序(cpp文件),它可直接用于串口的讀寫操作。首先建立一個基于窗口的MFC應用程序,再將CSerialPort.h和CSerialPort.cpp兩個類文件復制到工程文件夾中,并用project-add to project-files命令將上述兩個文件加入工程[3]。
 因為CSerialPort類是第三方類,所以其串口消息響應函數不能由VC的classwizd自動生成,需通過手動增加消息響應函數的消息映射。在建立的窗口類頭文件下添加以下代碼:
 afx_msg LONG OnComm(WPARAM ch,LPARAM port);
 在窗口類ccp文件下進行串口接收一個字符的響息映射,只要串口中有一個字節就觸發這個事件,代碼如下:
 ON_MESSAGE(WM_COMM_RXCHAR,OnComm)
 最初的CSerialPort類的發送函數只有一種發送字符類型WriteToPort( char* string)。而考慮到上位機對下位機控制命令都是十六進制數傳送,且傳送數據的最終原理都是以二進制數傳遞的,所以增加一種可按字節數發送的函數類型WriteToPort(unsigned char*string,int n)。其中,string是發送的一個字節數據,n是要發送的字節數。代碼如下:
void CSerialPort::WriteToPort(unsigned char*string,int n)
 {
   assert(m_hComm != 0);
memset(m_szWriteBuffer,0,sizeof(m_szWriteBuffer));
    memcpy(m_szWriteBuffer,string,n);
    m_nWriteSize=n;
    //set event for write
    SetEvent(m_hWriteEvent);
}
 上位機軟件設計流程如圖2所示。

4.2 串口數據接收
 對接收的數據進行幀頭判斷,如果接收字節為FE則繼續接收,保存在無符號字符數組buf中,接收后面的字節保存在數組中,并對連續的18個字節進行“異或”運算。如果這個“異或”運算值與第20個字節的值相等,表示這20個字節為一個有效數據串,然后再將其中的源節點地址提取出來并保存,再分別對其中的參數值進行處理,根據節點地址寫入VC表格控件中的相應行。串口數據幀選擇性接收和多節點地址保存函數片段如下:
LONG CMYSerialPortDlg::OnComm(WPARAM ch,LPARAM port)
{ static char checksum=0;  //校驗和初值
  static char checksum1=0; //校驗和獲取值
  static int count=0;    //接收字符數
  static unsigned char buf[21];
 static unsigned char SAddrL[5];//源地址低字節
static unsigned char SAddrH[5];//源地址高字節
 static int i=0;         //源節點個數
  if(ch= =0xFE)  
  { count=0;
    buf[count]=ch;
  }
  else
  {count++;
   buf[count]=ch;
   if(count==1)
       checksum=buf[count];
   else if(count<19)
      checksum^=buf[count];//ch
    else if(count= =19)
     {checksum1=buf[count];
     if(checksum1= =checksum)
     { //源節點地址存放
 if(i==0)
         {SAddrL[0]=buf[4];SAddrH[0]=buf[5];i++;}
 if(i==1)
{if((buf[4]==SAddrL[0])&&(buf[5]==SAddrH[0]));
else{i++;SAddrL[1]=buf[4];SAddrH[1]=buf[5];}  
}
 if(i==2)        
     … …
     UpdateData(0);return 0;
     }
4.3 串口命令的發送
 在應用程序的發送數據編輯框中輸入3 B的十六進制數據,而且要讓發送函數明白這是3 B的數據,而不是默認地把這些十六進制數當作6個單獨的字符來處理。在窗口CPP文件中加入“字符轉十六進制數”的函數String2Hex(m_strSend,hexdata),其返回值為轉化后的十六進制數的個數,在此即是要發送的命令字節數(該函數原型來自參考文獻[4])。發送命令函數如下:
void CMYSerialPortDlg::OnSend()
{UpdateData(1);  //更新參數數據
CByteArray   hexdata;
int   len=String2Hex(m_strSend,hexdata);  
unsigned char *str;
str=(unsigned char*)malloc(sizeof(char)*len);
 for(int j=0;j <len; j++)
   {  str[j]=hexdata[j];      
   }
 m_spSerialPort.WriteToPort(str,3);
//m_spSerialPort是在窗口中定義的CSerialPort類成員變量
}
 程序運行結果如圖3示。

 

 

 本文設計的無線傳感器網絡數據采集系統能夠實現多節點多參數的數據實時采集,并對測量的數據進行波形和表格顯示及存儲。設計的串口接收中斷程序可應用到其他串口數據采集系統中,發送命令實現了對所有節點和個別節點采集過程的控制,在后期還運用了計數求模的方法,可通過上位機發送改變除數來改變節點的采集時間間隔,整個程序可移植性強。
參考文獻
[1] 孫利民,李建中,陳渝,等.無線傳感器網絡[M].北京:清華大學出版社,2005.
[2] 深圳飛比電子科技公司.Z-STACK SensorDemo實驗. [EB/OL].[2011-10-13].http://wenku.baidu.com/view/dfe9d82ee2bd960590c6770c.html.
[3] 潘石柱,于仲安.VC實現串行通信的三種途徑[J].電子工程師.2002,28(9).
[4] 龔建偉.串口調試助手源程序及編程詳細過程.[EB/OL].(2001-06-20)[2010-12-21].http://hi.baidu.com/laoyang1018/ blog/item/641491ef565756fece1b3ecc.html.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美多人爱爱视频网站| 午夜精品视频网站| 国产精品一区二区三区乱码| 国产精品亚洲美女av网站| 欧美成人r级一区二区三区| 久久午夜视频| 国产精品护士白丝一区av| 亚洲国内在线| 久久中文精品| 亚洲精品中文字幕女同| 国产伦精品一区二区| 欧美三级特黄| 国产精品国产三级国产aⅴ无密码| 国产欧美一区在线| 久久精品国产96久久久香蕉| 欧美精品七区| 巨胸喷奶水www久久久免费动漫| 久久超碰97中文字幕| 在线精品视频在线观看高清| 国产在线播放一区二区三区| 欧美第一黄网免费网站| 国内精品久久久久久久影视蜜臀| 欧美日韩国产色综合一二三四| 亚洲一区视频| 最新69国产成人精品视频免费| 国产午夜精品理论片a级大结局| 午夜精品一区二区在线观看| 一本久久综合亚洲鲁鲁五月天| 久久一区免费| 欧美精品v国产精品v日韩精品| 国产亚洲精品资源在线26u| 国产精品久久久久天堂| 好看的亚洲午夜视频在线| 国产欧美日韩另类一区| 免费在线看一区| 亚洲精品亚洲人成人网| 欧美专区日韩专区| 欧美三级不卡| 国产精品久久久久毛片软件| 欧美精品一区二区三区很污很色的| 欧美大片一区二区| 亚洲欧美国产视频| 久久免费精品日本久久中文字幕| 欧美人牲a欧美精品| 久久久欧美精品sm网站| 中文亚洲视频在线| 国产精品成人一区二区网站软件| 亚洲精品久久久久中文字幕欢迎你| 亚洲一区网站| 亚洲国产精品ⅴa在线观看| 欧美在线视屏| 欧美高清日韩| 在线亚洲精品| 欧美高清日韩| 国内在线观看一区二区三区| 国产精品久久久一区麻豆最新章节| 久久高清免费观看| 一区二区在线观看视频在线观看| 欧美一区二区在线视频| 欧美一区成人| 一区精品在线| 99精品99| 新片速递亚洲合集欧美合集| 国产性天天综合网| 性欧美大战久久久久久久免费观看| 亚洲精品少妇网址| 久久精品91久久久久久再现| 久久精品成人一区二区三区蜜臀| 99re66热这里只有精品3直播| 国产精品v日韩精品| 欧美日韩 国产精品| 久久久青草青青国产亚洲免观| 国产日韩欧美不卡在线| 欧美大片在线看| 亚洲女同精品视频| 欧美一二三区精品| 久久亚洲精品一区二区| 久久久蜜桃一区二区人| 一本色道久久综合亚洲二区三区| 国产主播喷水一区二区| 亚洲欧美网站| 亚洲综合色视频| 欧美本精品男人aⅴ天堂| 性久久久久久久久| 欧美成人精品高清在线播放| 国产麻豆精品久久一二三| 美女视频黄免费的久久| 日韩视频欧美视频| 久久精品女人| 欧美资源在线| 国产亚洲网站| 欧美日韩亚洲高清| 欧美亚洲成人网| 欧美精品色网| 国产精品高清免费在线观看| 久久综合影视| 亚洲国内高清视频| 日韩亚洲欧美成人一区| 亚洲少妇最新在线视频| 久久亚洲精品一区二区| 欧美日韩国产另类不卡| 国产欧美精品国产国产专区| 国产一区二区三区自拍| 国产主播一区| 欧美午夜免费影院| 久久激五月天综合精品| 国产日韩亚洲欧美精品| 亚洲成人资源| 亚洲神马久久| 亚洲欧美国产三级| 国产一区二区三区四区三区四| 一区二区三区**美女毛片| 久久久久久久999精品视频| 一区二区三区在线不卡| 老司机午夜精品视频| 一区二区亚洲精品| 国产亚洲在线观看| 99精品国产热久久91蜜凸| 一区国产精品| 洋洋av久久久久久久一区| 欧美精品不卡| 国产精品黄页免费高清在线观看| 免费精品99久久国产综合精品| 激情成人在线视频| 欧美亚州一区二区三区| 欧美午夜片在线观看| 亚洲毛片在线| 在线综合+亚洲+欧美中文字幕| 国产精品黄色在线观看| 国产精品社区| 激情久久综合| 欧美日产一区二区三区在线观看| 国产综合欧美| 亚洲精品一区在线| 亚洲高清二区| 国模吧视频一区| 欧美日韩一二区| 欧美日韩在线播放三区四区| 久久精品一区四区| 西瓜成人精品人成网站| 亚洲欧美日韩一区在线观看| 国产综合在线视频| 黄色另类av| 亚洲国产成人porn| 美国成人直播| 亚洲成人在线观看视频| 美脚丝袜一区二区三区在线观看| 亚洲视频在线观看三级| 国产日本欧美一区二区三区| 亚洲私人影院在线观看| 国产欧美在线观看| 在线免费观看视频一区| 亚洲专区免费| 国产视频亚洲精品| 亚洲男女自偷自拍图片另类| 国产亚洲va综合人人澡精品| 亚洲开发第一视频在线播放| 国产精品日韩电影| 欧美激情一区在线| 国产精品国产三级国产aⅴ无密码| 国产日韩一区二区三区| 亚洲第一成人在线| 免费欧美网站| 久久精品日韩一区二区三区| 欧美日韩免费区域视频在线观看| 另类人畜视频在线| 欧美国产在线视频| 欧美影院在线| 国产精品美女一区二区| 欧美日韩成人在线观看| 国产欧美精品久久| 午夜亚洲性色福利视频| 精品成人一区二区三区四区| 久久精品国产亚洲高清剧情介绍| 欧美大片在线观看一区| 欧美/亚洲一区| 国产欧美日韩一区二区三区在线| 久久黄色影院| 欧美一区二区黄色| 午夜精品一区二区三区在线| 国产综合自拍| 在线成人免费观看| 欧美视频中文字幕在线| 欧美在线91| 狠狠操狠狠色综合网| 欧美在线影院在线视频| 一区二区三区高清在线观看| 国产一区二区视频在线观看| 久久久九九九九| 老司机免费视频一区二区| 亚洲二区精品| 国产精品久久久久久久久免费| 欧美天天影院| 蜜臀91精品一区二区三区| 国产精品日韩欧美一区二区| 久久亚洲精品欧美| 狠狠狠色丁香婷婷综合久久五月| 国产精品国内视频| 国产精品一区二区你懂得| 亚洲一区二区三区午夜| 91久久国产精品91久久性色| 蜜桃av久久久亚洲精品| 欧美美女操人视频| 欧美日韩在线第一页| 伊人春色精品| 日韩一级精品| 亚洲综合视频网| 欧美色精品天天在线观看视频| 国产日本欧洲亚洲| 亚洲国产精品电影在线观看| 国产视频一区欧美| 国产精品任我爽爆在线播放| 亚洲国产高清aⅴ视频| 午夜伦欧美伦电影理论片| 在线成人av| 亚洲少妇一区| 久久久噜噜噜久久久| 久久精品青青大伊人av| 午夜在线a亚洲v天堂网2018| 欧美亚洲一区二区在线| 亚洲国产精品精华液2区45| 亚洲国产高清一区| 亚洲一区二区综合| 国产九九精品| 欧美激情黄色片| 久久综合999| 美女国内精品自产拍在线播放| 午夜国产精品影院在线观看| 国产亚洲视频在线观看| 欧美日韩第一区| 国产真实乱偷精品视频免| 欧美亚州在线观看| 亚洲精一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频| 老色鬼精品视频在线观看播放| 国产亚洲欧美一区| 在线欧美日韩精品| 国产视频久久久久久久| 午夜精品美女自拍福到在线| 日韩亚洲一区在线播放| 欧美日韩在线综合| 欧美日韩专区| 国产情人综合久久777777| 狠狠色伊人亚洲综合网站色| 国产视频久久久久| 久久综合久久88| 久久久亚洲成人| 欧美国产乱视频| 亚洲天堂免费在线观看视频| 欧美女激情福利| 999在线观看精品免费不卡网站| 亚洲制服丝袜在线| 日韩视频在线观看国产| 国产精品日日做人人爱| 亚洲国产导航| 久久久av毛片精品| 亚洲欧洲日韩在线| 国产九色精品成人porny| 一区二区不卡在线视频 午夜欧美不卡'| 欧美日韩精品免费看| 国产日韩高清一区二区三区在线| 国产片一区二区| 亚洲激精日韩激精欧美精品| 欧美成人a∨高清免费观看| 欧美 日韩 国产精品免费观看| 久久激情五月激情| 亚洲电影在线看| 99香蕉国产精品偷在线观看| 9久草视频在线视频精品| 久久久噜久噜久久综合| 欧美黄色一区二区| 欧美国产综合视频| 亚洲区第一页| 国产日产欧美精品| 亚洲在线一区二区三区| 欧美成人三级在线| 午夜综合激情| 国产欧美一区二区三区视频| 亚洲一区二区在| 欧美日韩成人在线播放| 亚洲国产精品久久久久婷婷884| 亚洲一区二区四区| 欧美一区二区三区免费在线看| 中国日韩欧美久久久久久久久| 国产一区视频在线看| 国产精品久久午夜夜伦鲁鲁| 午夜精品在线视频| 性色一区二区三区| 韩国女主播一区二区三区| 国产亚洲精品成人av久久ww| 国产精品久久久久秋霞鲁丝| 国产亚洲欧美日韩在线一区| 国产精品揄拍500视频| 一本大道久久精品懂色aⅴ| 欧美成人黑人xx视频免费观看| 影音先锋在线一区| 国产精品剧情在线亚洲| 黄色精品免费| 美女999久久久精品视频| 亚洲欧洲日韩女同| 久久久91精品| 亚洲永久字幕| 在线免费观看日本一区| 久久国产精品亚洲77777| 在线观看欧美激情| 亚洲黄网站在线观看| 欧美午夜片在线观看| 麻豆精品一区二区av白丝在线| 欧美日韩日本国产亚洲在线| 欧美激情综合| 国产偷国产偷精品高清尤物| 欧美男人的天堂| 韩国av一区二区| 久久精品国产99精品国产亚洲性色| 亚洲欧美精品在线| 日韩一级大片| 欧美一进一出视频| 国产精品日日做人人爱| 一本色道久久综合一区| 久久不射2019中文字幕| 国产精品嫩草影院一区二区| 国产精自产拍久久久久久| 女生裸体视频一区二区三区| 欧美日本亚洲视频| 日韩亚洲不卡在线| 国产精品老女人精品视频| 午夜精品久久久久久久99水蜜桃| 99国产精品久久|