串口通信教程

2019-08-01 22:54

直接分析mscomm.h头文件就可以完备地获取这个控件的使用方法(主要是public类型的接口函数),下面我们摘取了头文件的主要代码并对其关键部分给出了注释:

#if !defined(AFX_MSCOMM_H__) #define AFX_MSCOMM_H__ #if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000

// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++

// NOTE: Do not modify the contents of this file. If this class is regenerated by // Microsoft Visual C++, your modifications will be overwritten.

///////////////////////////////////////////////////////////////////////////// // CMSComm wrapper class

class CMSComm : public CWnd {

protected:

DECLARE_DYNCREATE(CMSComm) public:

CLSID const& GetClsid() {

static CLSID const clsid = { 0x648a5600, 0x2c6e, 0x101b, { 0x82, 0xb6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14 } }; return clsid; }

virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect,

CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL)

{ return CreateControl(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 CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID, pPersist, bStorage, bstrLicKey); }

// Attributes public:

// Operations public:

void SetCDHolding(BOOL bNewValue); BOOL GetCDHolding();

void SetCommID(long nNewValue); long GetCommID();

void SetCommPort(short nNewValue); //设置端口号,如nNewValue =1表示COM1 short GetCommPort();

void SetCTSHolding(BOOL bNewValue); BOOL GetCTSHolding();

void SetDSRHolding(BOOL bNewValue); BOOL GetDSRHolding();

void SetDTREnable(BOOL bNewValue); BOOL GetDTREnable();

void SetHandshaking(long nNewValue); long GetHandshaking();

void SetInBufferSize(short nNewValue); short GetInBufferSize();

void SetInBufferCount(short nNewValue); short GetInBufferCount();

void SetBreak(BOOL bNewValue); BOOL GetBreak();

void SetInputLen(short nNewValue); short GetInputLen();

void SetNullDiscard(BOOL bNewValue); BOOL GetNullDiscard();

void SetOutBufferSize(short nNewValue); short GetOutBufferSize();

void SetOutBufferCount(short nNewValue); short GetOutBufferCount();

void SetParityReplace(LPCTSTR lpszNewValue); CString GetParityReplace();

void SetPortOpen(BOOL bNewValue);

//打开或关闭串口,TRUE:打开,FALSE:关闭 BOOL GetPortOpen();

//串口是否已打开,TRUE:打开,FALSE:关闭 void SetRThreshold(short nNewValue);

//如果设置为1,表示一接收到字符就发送2号事件 short GetRThreshold();

void SetRTSEnable(BOOL bNewValue); //硬件握手使能? BOOL GetRTSEnable();

void SetSettings(LPCTSTR lpszNewValue);

//Settings由4部分组成,其格式为:\,D,S\,即\波特率,是否奇偶校验,数据位 //个数,停止位\,如设置为:\ CString GetSettings();

void SetSThreshold(short nNewValue);

//如果保持缺省值0不变,则表示发送数据的过程中串口上不发生事件 short GetSThreshold();

void SetOutput(const VARIANT& newValue);

//一个非常重要的函数,用于写串口,注意其接收的输入参数为VARIANT类型对象, //我们需要将字符串转化为VARIANT类型对象 VARIANT GetOutput();

void SetInput(const VARIANT& newValue); VARIANT GetInput();

//一个非常重要的函数,用于读串口,注意其返回的是VARIANT类型对象,我们需要 //将其转化为字符串

void SetCommEvent(short nNewValue); short GetCommEvent();

//一个非常重要的函数,获得串口上刚发生的事件(\事件\可以理解为软件意义上的 //\消息\或硬件意义上的\中断\),事件的发送会导致OnComm消息的诞生! void SetEOFEnable(BOOL bNewValue); BOOL GetEOFEnable();

void SetInputMode(long nNewValue); long GetInputMode(); };

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif

分析上述源代码可知,基本上,MSComm的诸多接口可以分为如下几类:

(1)打开与设置串口接口函数;

(2)获得串口设置和串口状态接口函数;

(3)设置串口发送数据方式、缓冲区接口及发送数据接口函数;

(4)设置串口接收数据方式、缓冲区接口及接收数据接口函数;

(5)设置与获取串口上发生的事件接口函数。

2.例程

程序的功能和界面(如下图)都与本文连载三中《基于WIN32 API的串口编程》相同,不同的只是连

载三的串口通信以API实现,而本节的串口通信则以MSComm控件实现。

使用第1节的方法将控件添加入工程并添加mscomm.h和mscomm.cpp文件后,为了使用控件,我们

将控件拖入对话框内任意一个位置(运行时\电话\图标会隐藏),其操作如下图:

有趣而极富人性化的是我们可以直接右键单击这个\电话\,来设置串口的属性,如下图:

接着,我们需要为控件添加一个对应的成员变量m_mscom,其对应的变量类型为CMSComm,如下图:

这样就建立了m_mscom和IDC_MSCOMM1控件的相互映射:


串口通信教程.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Spring试题和答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: