深入浅出VC++串口编程之基于控件

深入浅出VC++串口编程之基于控件,第1张

深入浅出VC++串口编程之基于控件,第2张

MSComm控件

visual ++为我们提供了一个简单易用的ActiveX控件,Microsoft communication s Control(MSComm),来支持应用程序对串口的访问。在应用程序中插入MSComm控件后,可以方便地通过计算机串口发送和接收数据。

要使用ActiveX控件MSComm,程序员必须通过以下方式将其添加到项目中:

(1)单击主菜单“项目”的子菜单“添加到项目”的“组件和控件”选项;

(2)在弹出的“组件和控件库”对话框中,选择“注册的ActiveX控件”文件夹中的“Microsoft Communications Control,Version 6.0”选项。

单击“插入”按钮,MSComm控件将被添加到项目中。同时,CMSComm的相关文件mscomm.h和mscomm.cpp也被添加到Project的头文件和源文件中。当然,程序员可以自己修改文件名。

通过直接分析mscomm.h头文件,我们可以完整的获得这个控件(主要是public类型的接口函数)的用法。这里,我们提取头文件的主要代码,并对其关键部分进行注释:

#如果!defined(AFX _ MSCOMM _ H _ _)
# define AFX _ MSCOMM _ H _ _
# if _ MSC _ VER > 1000
# pragma once
# endif/_ MSC _ VER > 1000
//机器生成的IDispatch包装类由Microsoft Visual C++创建

//注意:不要修改这个文件的内容。如果此类是由
// Microsoft Visual C++重新生成的,您的修改将被覆盖。

////////////////////////////////////////////////////////////////////////
//CMS comm包装类

class CMS comm:public CWnd
{
protected:
DECLARE _ DYNCREATE(CMS comm)
public:
CLSID const & GetClsid()
{
static CLSID const CLSID = { 0x 648 a 5600,0x2c6e,0x101b,{ 0x82,0xb6,0x0,0x0,0x0,0x0,0x0,0x14 } }
返回clsid
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,DWORD dwStyle,
const RECT& RECT,
CWnd* pParentWnd,UINT nID,
ccreate context * p context = NULL)
{ return Create control(GetClsid(),lpszWindowName,dwStyle,rect,pParentWnd,nID);}

BOOL Create(LPCTSTR lpszWindowName,DWORD dwStyle,
const RECT& RECT,CWnd* pParentWnd,UINT nID,
CFile* pPersist = NULL,BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return Create control(GetClsid(),lpszWindowName,dwStyle,rect,pParentWnd,nID,
pPersist,bStorage,bstrlicke}

//属性
public:

//Operations
public:
void setcd holding(BOOL bNewValue);
BOOL getcd holding();
void SetCommID(long nnew value);
long get commid();
void SetCommPort(short nnew value);
//设置端口号,如对于COM1
short GetCommPort(),nnew value = 1;
void SetCTSHolding(BOOL bNewValue);
BOOL GetCTSHolding();
void SetDSRHolding(BOOL bNewValue);
BOOL GetDSRHolding();
void SetDTREnable(BOOL bNewValue);
BOOL GetDTREnable();
void set handshaking(long nnew value);
long get handshaking();
void SetInBufferSize(短nnew value);
short GetInBufferSize();
void SetInBufferCount(短nnew value);
short GetInBufferCount();
void set break(BOOL bNewValue);
BOOL get break();
void SetInputLen(short nnew value);
short GetInputLen();
void SetNullDiscard(BOOL bNewValue);
BOOL GetNullDiscard();
void SetOutBufferSize(短nnew value);
short GetOutBufferSize();
void SetOutBufferCount(short nnew value);
short GetOutBufferCount();
void setparity replace(LPCTSTR lpszNewValue);
CString getparity place();
void SetPortOpen(BOOL bNewValue);
//打开或关闭串口,TRUE: open,FALSE:close
BOOL GetPortOpen();
//串口是否打开,TRUE: open,FALSE:close
void set rthreshold(short nnew value);
//如果设置为1,表示一收到字符就发送2号事件
short GetRThreshold();
void SetRTSEnable(BOOL bNewValue);
//硬件握手已启用?
BOOL GetRTSEnable();
void set settings(LPCTSTR lpszNewValue);
//Settings由四部分组成,其格式为:“BBBB,P,D,S”,即“波特率,奇偶校验,数据位//数,停止位”,如:“9600,n,8,1”
cstring get Settings()。
void sets threshold(short nnew value);
//如果默认值0保持不变,则表示数据传输过程中串口不发生
short GetSThreshold()事件;
void set output(const VARIANT & new value);
//一个很重要的函数,用来写串口。注意,它接收的输入参数是变量类型对象。
//我们需要将字符串转换成VARIANT类型对象
VARIANT get output();
void set input(const VARIANT & new value);
VARIANT GetInput();
//一个很重要的函数,用来读取串口。注意,它返回的是VARIANT对象,我们需要
//将其转换成string
void set comment(short nnew value);
short GetCommEvent();
//一个很重要的函数,用来获取串口上刚刚发生的事件(“事件”可以理解为软件意义上的
/“消息”或者硬件意义上的“中断”)。事件的发送将导致OnComm消息的诞生!
void SetEOFEnable(BOOL bNewValue);
BOOL GetEOFEnable();
void set input mode(long nnew value);
long GetInputMode();
};

//{ { AFX _ INSERT _ LOCATION } }
//Microsoft Visual c++将在前一行之前插入附加声明。
#endif

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 深入浅出VC++串口编程之基于控件

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情