工程下載:
http://www.shnenglu.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
天下無雙 閱讀(3489)
評論(3) 編輯 收藏 引用