手持机项目总结

来源:互联网 发布:广发证券股票交易软件 编辑:程序博客网 时间:2024/04/19 14:27

     第一次接触手持机这东西,刚开始啥都不知道浪费了好几天,后来才发现很简单,和pc机上的开发是差不多的。

    这次总结希望能给那些像我一样刚接触手持机的兄弟姐妹一点帮助。

    我这项目是一个物联网的演示项目,分两部分,一部分是服务端,另一部分是客户端。

服务端我是用vc实现的,主要实现的是数据库的操作和信息显示。服务器的编程和我们平时弄一般的PC机程序是一样

客户端我是用C#实现的,只要把手持机用数据线连到PC机上就可以编程了, 功能可以用对RFID卡进行写数据,读数据,查看卡的个数,读取二维码。编译环境是vs2008,其中有对手持机的编程项目。

服务端和客户端的通信用socket实现。我实现的是多客户端对一服务端通信。

 

                 我具体说一下通信。因为是多对一通信,所以服务端用多线程实现。

创线程 :DWORD dwthreadID;
                  HANDLE Hnd;
                  Hnd = CreateThread(NULL, 0, ThreadLINK, (LPVOID)this, 0, &dwthreadID);

其中ThreadLINK是多线程实现函数。这函数一定是全局函数或者是类静态函数。

因为是多客户端,所以服务端监听部分实现多线程,之后再在接收数据上实现多线程,客户端和一对一通信一样,这样就OK了。

 

               最后项目中还实现了物体的实时定位,并在屏幕上显示轨迹。

轨迹是通过在OnPaint()实现的画图操作:

void CServerDlg::OnPaint()

{……

else
 {
  CDialog::OnPaint();
   //重绘图像
  PAINTSTRUCT ps;  
  CRect rt[n];
  CDC* pDC[n];
  for(int i=0; i<n; i++)
  {
   m_pDrawWnd[i]->GetClientRect(&rt[i]);  
   pDC[i]=m_pDrawWnd[i]->BeginPaint(&ps);
   DrawOnMen(i);
   pDC[i]->BitBlt(0, 0, rt[i].Width(), rt[i].Height(), &m_memDC[i], 0, 0, SRCCOPY);   
   m_pDrawWnd[i]->EndPaint(&ps);
  }

}

后在DrawOnMen()函数中的实现。

 

总结结论:手持机编程和PC机编程没什么大的区别。

原创粉丝点击