工程下载:
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
天下无双 阅读(3472)
评论(3) 编辑 收藏 引用