龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC学习:Windows CE下的串口通讯类

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
串行通讯是目前计算机、通信和控制领域最基本的通信方式。在CSDN的“嵌入式开发/WINCE”社区中,经常有人提问该到哪找串口通讯类,其实这个问题我自己也问过。:)而一般的回答是给

  串行通讯是目前计算机、通信和控制领域最基本的通信方式。在CSDN的“嵌入式开发/WINCE”社区中,经常有人提问该到哪找串口通讯类,其实这个问题我自己也问过。:)而一般的回答是给你提供一个Pocket PC 2002的SDK例子程序。但到底SDK的程序和MFC的结构有很大的不同,对于想用MFC编写通信程序的人来说也不是很便利。
  
  另一方面,由于Windows CE是一个基于Unicode的操作系统,并且Windows CE不支持Windows下常用的串行通信重叠I/O方式(OVERLAPPED),因此编写Windows CE下的串口通讯类有一些与桌面Windows不同的地方。
  
  以下是我从SDK程序改写而来的MFC类,希望能和致力于WINCE开发的朋友多多交流,由于本人才疏学浅,程序中有许多不完善的地方,请大家指正。我的程序是基于“主动发送请求,被动接收响应”的假设,因此我只设置了一个接收数据的线程。如果有朋友能提供有独立发送数据和接收数据线程的类,我将十分感激。我的E_mail:zhenxizhou@elong.com。
  
  感谢“嵌入式开发/WINCE”社区为我提供SDK例子的朋友,感谢CSDN上所有热心的朋友,祝愿中国的软硬件水平能早日挤身世界一流。
  
  头文件Serial.h
  
  // Serial.h: interface for the CSerial class.
  
  //
  
  /////////////////////////////
  
  #if !defined(AFX_SERIAL_H__59575586_AAA9_4FEF_B2A7_E089553698EF__INCLUDED_)
  
  #define AFX_SERIAL_H__59575586_AAA9_4FEF_B2A7_E089553698EF__INCLUDED_
  
  #if _MSC_VER > 1000
  
  #pragma once
  
  #endif // _MSC_VER > 1000
  
  DWORD WINAPI ReadPortThread(LPVOID lpvoid); //读数据线程
  
  class CSerial
  
  {
  
  public:
  
  BOOL InitCommTimeouts(); //设置超时参数
  
  BOOL InitDCB(); //配置串口

  BOOL m_bConnected;
  
  BOOL ClosePort(HANDLE hCommPort); //关闭串口
  
  DWORD WritePort(TCHAR *buf,DWORD dwBytesToWrite); //写数据
  
  BOOL OpenPort(LPTSTR lpszPortName); //打开串口
  
  CSerial();
  
  HANDLE hReadThread;
  
  virtual ~CSerial();
  
  };
  
  #endif // !defined(AFX_SERIAL_H__59575586_AAA9_4FEF_B2A7_E089553698EF__INCLUDED_)
  
  源文件:Serial.cpp
  
  // Serial.cpp: implementation of the CSerial class.
  
  //
  
  /////////////////
  

精彩图集

赞助商链接