How to use LsComm
LsComm is a multiThread Com class that is written by me(Liu_sir).
Main idea of me is to write a Easy to Use Com class.
You can write a little Code and finish the Communication with high
Efficency,It is what I want to do.
there are three Receiving modes of LsComm:
1.ManualReceiveByQuery
2.ManualReceiveByConst
3.AutoReceiveBySignal
4.AutoReceiveByBreak
I have writen a Demo Program for the usage of the 4 types of mode;
there are some Examples:
1.ManualReceiveByQuery
#include "ComPort.h"
LsComm::CComPort m_ComPort;//LsComm is namespace in c++
m_ComPort.Open(2,LsComm::CComPort::AutoReceiveByquery);
//ReCeive Com Data:
DWORD InBufferCount;
byte pbuffer[2048];
InBufferCount = m_ComPort.GetInBufferCount();
if(InBufferCount>0)
{
m_ComPort.GetInput(pbuffer,InBufferCount);
}
//Write Com Data:
char a[10];
CString c;
for(int i=0;i<10;i++)
{
a[i]='b';
c+=a[i];
c+=" ";
}
this->m_ComPort.Output(a,sizeof(a));
2.ManualReceiveByConst(it is a ASsync mode)
#include "ComPort.h"
LsComm::CComPort m_ComPort;//LsComm is namespace in c++
m_ComPort.Open(2,LsComm::CComPort::AutoReceiveByConst);
//ReCeive Com Data:
DWORD InBufferCount=0;
byte pbuffer[2048];
InBufferCount=this->m_ComPort.GetInput(pbuffer,10,1000);
//above ,I want to Get 10 Bytes in 1 Second
//Certainly You Can modify these Params;for example
//InBufferCount=this->m_ComPort.GetInput(pbuffer,100,2000);
//InBufferCount return the real bytes in Com Receiving Buffer you have Got;
if(InBufferCount==0)
return;
CString c;
char a[4];
for(int i=0;i<(int)InBufferCount;i++)
{
::sprintf(a,"%2.2X",pbuffer[i]);
c+=a;
c+=" ";
}
c="接收(Receive):"+c;
//Write Com Data:
char a[10];
CString c;
for(int i=0;i<10;i++)
{
a[i]='b';
c+=a[i];
c+=" ";
}
this->m_ComPort.Output(a,sizeof(a));
/*before use the 3,4 mode,You must write a receive a Funcion witch will be called back
in Lscomm.
*/
void OnReceiveData(LPVOID pSender,void* pBuf,DWORD InBufferCount)
{
CString c;
byte a[100];
char b[4]="";
memcpy(a,pBuf,InBufferCount);
CLsCommDemoDlg* pDlg = (CLsCommDemoDlg*) pSender;
CListBox*pList =(CListBox*)pDlg->GetDlgItem(IDC_LIST1);
for(int i=0;i<(int)InBufferCount;i++)
{
::sprintf(b,"%2.2X",a[i]);
c+=" ";
c+=b;
}
c="接收(Receive):"+c;
pList->AddString(c);
}
3.AutoReceiveBySignal
#include "ComPort.h"
LsComm::CComPort m_ComPort;//LsComm is namespace in c++
m_ComPort.Open(2,LsComm::CComPort::AutoReceiveBySignal );
m_ComPort.SetReceiveFunc((FOnReceiveData)OnReceiveData,this);
m_ComPort.SetBreakHandleFunc(OnComBreak);
//ReCeive Com Data:
in OnReceiveData(LPVOID pSender,void* pBuf,DWORD InBufferCount) //above
//write data
the same as the first mode;
4.AutoReceiveByBreak
#include "ComPort.h"
LsComm::CComPort m_ComPort;//LsComm is namespace in c++
m_ComPort.Open(2,LsComm::CComPort::AutoReceiveByBreak );
m_ComPort.SetReceiveFunc((FOnReceiveData)OnReceiveData,this);
m_ComPort.SetBreakHandleFunc(OnComBreak);
//ReCeive Com Data:
in OnReceiveData(LPVOID pSender,void* pBuf,DWORD InBufferCount) //above
//write data
the same as the first mode;
You can add Break deal function in each mode but you can remove it if it is no use:
void OnComBreak(LPVOID pSender,DWORD dwMask,COMSTAT stat)
{
//deal with the break of com here
}
Extra:
I am a chinese,and My English is Poor.I am very sorry
I can,t write fluent illumination for you.
Special Thanks: for PJ Naughter ,He write a Excellent Com CLass:CSerialPort
witch I have used in my Program.
liu_sir 2003.5
没有合适的资源?快使用搜索试试~ 我知道了~
LsCommDemo(for vc6)演示了多线程串口类CComPort的使用
共49个文件
h:9个
cpp:8个
obj:8个
5星 · 超过95%的资源 需积分: 10 43 下载量 14 浏览量
2008-06-20
15:52:44
上传
评论
收藏 2.3MB RAR 举报
温馨提示
LsCommDemo(for vc6)演示了多线程串口类CComPort的使用-可以
资源推荐
资源详情
资源评论
收起资源包目录
LsCommDemo(for vc6)演示了多线程串口类CComPort的使用-可以080616.rar (49个子文件)
LsCommDemo(for vc6)演示了多线程串口类CComPort的使用-可以080616
LsCommDemo.ncb 97KB
LsCommDemoDlg.cpp 8KB
ComPropertyDlg.h 649B
StdAfx.cpp 139B
LsCommDemo.h 1KB
BtnST.h 8KB
LsCommDemo.aps 49KB
ComPort.h 5KB
ComPropertyDlg.cpp 4KB
BtnST.cpp 51KB
LsCommDemo.sln 920B
LsCommDemo.cpp 1KB
serialport.cpp 24KB
LsCommDemo.clw 2KB
BCMenu.h 16KB
Debug
vc60.pdb 388KB
BtnST.obj 79KB
ComPort.obj 41KB
LsCommDemo.res 29KB
vc60.idb 233KB
BCMenu.obj 303KB
LsCommDemo.exe 288KB
LsCommDemo.pdb 649KB
ComPropertyDlg.obj 26KB
StdAfx.obj 105KB
LsCommDemo.obj 14KB
LsCommDemo.ilk 740KB
serialport.obj 91KB
LsCommDemo.pch 5.29MB
LsCommDemoDlg.obj 46KB
ComPort.cpp 15KB
StdAfx.h 1KB
serialport.h 5KB
LsCommDemoDlg.h 2KB
Resource.h 1KB
LsCommDemo.plg 3KB
LsCommDemo.vcproj 5KB
LsCommDemo.suo 8KB
res
LsCommDemo.manifest 699B
Cancel1_32x32x16.ico 2KB
LsCommDemo.rc2 377B
LsCommDemo.ico 21KB
Ok3_32x32x256.ico 2KB
BCMenu.cpp 87KB
LsCommDemo.rc 7KB
LsCommDemo.dsw 543B
LsCommDemo.dsp 5KB
HowToUse.txt 4KB
LsCommDemo.opt 48KB
共 49 条
- 1
资源评论
- twtian012014-08-01资源很好可以学习下
- YY的手机2014-04-20底层实现 ,好用
- 酷阿金2012-10-18vc6下可以使用,学习中。。。
- gaoguohua12012-06-26vc6下可以使用
- anbaixiu2014-12-03不错的资源,可以使用,谢谢
orcd
- 粉丝: 85
- 资源: 194
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功