posts - 45,  comments - 232,  trackbacks - 0

工程下载: http://www.cppblog.com/Files/dyj057/SerialPortLib.rar
最近封装了一个串口类,与大家分享,该类的主要特点是:能实现数据的异步接收;无须MFC的支持;只能在VS2003编译通过,但只要做少量修改就可以在VC6.0中使用.使用起来非常简单,主要代码如下:

 1 #include "stdafx.h"
 2 #include "comm_exception.h"
 3 #include "SerialPort.h"
 4 #include "serialportobservertest.h"
 5 
 6 using namespace  C2217::StdLib;
 7 using namespace
 IBMS;
 8 

 9 int _tmain(int argc, _TCHAR*  argv[])
10 
{
11     try

12      {    
13         //声明一个串口观察者

14          CSerialPortObserverTest portObserver;
15         //声明串口1

16         CSerialPort port(1 );
17         //注册串口的观察者

18         port.AtachPortObserver(& portObserver);
19         //打开串口

20          port.Open();
21         byte data[100= {0
};
22 

23         port.Send(data,sizeof (data));
24 
    }
25     catch(comm_exception &
e)
26 
    {
27 
        SET_CATCH_POS(e);
28         std::cout <<
 e;
29 
    }
30 

31     return 0 ;
32 
}
33 

   串口数据的接收在

void  CSerialPortObserverTest::OnSerialPortReceive(CSerialPort  * pSerialPort,  byte   * pData, size_t nDataLen)
{
 cout 
<<  pSerialPort -> GetName().c_str()  <<   " Received Data:  " <<
endl;
 
 
for (size_t i = 0 ; i <  nDataLen ; ++
i )
 {
  cout 
<<  pData[i]  <<   "   "
 ;
 }

 cout 
<<
endl;
}

   完成,你也可以不使用观察者,直接重写void CSerialPort::OnReceiveData(byte *pData, size_t nDataLen)可以获得更好的执行效率。去掉观察者对象list.

   有什么问题邮件联系:dyj057@gmail.com

posted on 2005-12-22 17:53 天下无双 阅读(3448) 评论(3)  编辑 收藏 引用

FeedBack:
# re: C++中实现串口操作类
2005-12-22 18:34 | 小明
我看你的程序使用了一个叫IbmsSerialPort.dll的dll来完成通讯

而这个IbmsSerialPort.dll首先使用CreateFile,然后使用GetCommState等等一系列communications resource function来完成端口通讯

ok,学到了一些东西

  回复  更多评论
  
# re: C++中实现串口操作类
2006-03-01 10:44 | msn:a.zlp@163.com
CreateFile对串口操作是独占的,其他的应用程序就不能打开,怎么实现观察者的角色呢?想请教楼主!msn:a.zlp@163.com  回复  更多评论
  
# re: C++中实现串口操作类
2006-03-01 12:00 | 天下无双
这个简单,当你发送数据的时候,也发送一份到观察者.接收到数据的时候,也转一份到观察者。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



常用链接

留言簿(15)

随笔分类

随笔档案

相册

我的其它领域Blog

搜索

  •  

积分与排名

  • 积分 - 202702
  • 排名 - 129

最新评论

阅读排行榜

评论排行榜