关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > MD600G的Internet无线传感器网络设计

MD600G的Internet无线传感器网络设计

作者:时间:2010-11-25来源:网络收藏

1.3 温度节点

  温度节点模块主要由温度DS18B20组成,并将其输出的温度数据送往单片机,然后单片机将这些数据进行相关处理,最后再送往后续的通信设备,并将温度数据进行数码管或液晶屏显示。这里采用了实时时钟电路DS1302来实现该系统的实时性。

2 软件设计

  基于MD600G和Internet的网的软件包括温度传感器节点的软件设计、MD600G与温度传感器节点的串口软件设计、服务器mSever端与Internet网的数据通信软件及mSever端温度数据可视化程序的设计等。

2.1 mSever端温度数据可视化程序设计

  利用Visual C++强大的编译器以及与数据库的处理能力,开发出基于Windows平台的32位数据可视化应用程序。图3是mSever端温度数据可视化程序设计的原理图。

按此在新窗口浏览图片
图3 可视化界面的设计原理图

  以下为可视化界面模块源码:

void CDemoView::OnInitialUpdate() {
  CView::OnInitialUpdate();
  CRect Rect;
  GetClientRect(Rect);
  m_Plot.Create(WS_CHILD|WS_VISIBLE,Rect,this,12000);
  m_Plot.SetSerie(0, PS_SOLID, RGB(255,0,0), 0.0, 40.0, Temperature);//窗口
  m_Plot.SetLegend(0, PS_SOLID, RGB(255,0,0), Temperature);//背景方框
  m_Plot.m_bAutoScrollX=TRUE;
  SetTimer(1,1000,NULL);//背景刷新时间
  canSize=TRUE;
}
void CDemoView::OnTimer(UINT nIDEvent) {
  static BOOL pros={FALSE};
  if(!pros) {
    pros=TRUE;
    CDemoDoc* pDoc=GetDocument();
    ASSERT_VALID(pDoc);
    y=pDoc->p.buffer;
    m_Plot.AddPoint(0,CTime::GetCurrentTime(),y);
    Invalidate();
    pros=FALSE;
  }
  CView::OnTimer(nIDEvent);
}
void CDemoView::OnSize(UINT nType, int cx, int cy) {
  CView::OnSize(nType, cx, cy);
  if(canSize) {
    CRect Rect;
    GetClientRect(Rect);
    m_Plot.MoveWindow(Rect);
  }
}
void CDASocket::OnReceive(int nErrorCode) { //接收数据端的程序
  char buff[64];
  int ret=0;
  ret=Receive(buff,64);//AfxMessageBox(OK);
  if(ret==ERROR)
  {TRACE(ERROR!);}
  else
  m_pDoc->Presscessding(buff);
  CAsyncSocket::OnReceive(nErrorCode);
}

  图4是用Visual C++开发的mSever端温度数据可视化显示的界面,图中显示的是1个节点的温度变化实时曲线。

按此在新窗口浏览图片
图4 服务器mSever端温度数据可视化显示界面

2.2 mSever端Web访问程序设计

  为了实现多个客户端可以同时访问数据中心服务器,规定客户端在打开服务器的Web页面时,首先提交客户端的IP地址,然后服务器端把客户端的IP地址收录入库,再将接收到的温度数据转发给指定的客户端。因此,当有多个客户端同时访问数据中心服务器时,服务器端只需要将各个客户端的IP地址收录入库,最后再循环不断地往各个客户端转发温度数据即可。

  当客户端断开与服务器端的连接时,将向服务器提交断开请求,从服务器端的IP地址库中释放掉该客户端的IP地址,从而实现了服务器端IP地址库的动态更新。



评论


相关推荐

技术专区

关闭