`

(三)MSComm控件进行串口编程的基本步骤

阅读更多
1在建立的工程中插入MSComm控件
2添加MSComm控件ID的控制变量或对象
3对串口进行初始化,设置MSComm控件的属性
4添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码
5编写串口发送等其他代码
6关闭串口


个MSComm控件只能对应一个串口,如果应用程序需要访问多个串口,必须使用多个MSComm控件。

处理通信问题的方式:事件驱动方式(与中断原理类似,触发一个事件处理函数),查询方式。

MSComm控件的重要属性中的一部分
CommPort设置并返回通信端口号
Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen设置并返回通信端口的状态。可以用来打开和关闭端口
Input从接受缓冲区返回和删除字符串
Output向传输缓冲区写一个字符串
每个属性都通过Get/Set函数对来获取或设置控件的属性


属性简介

CommPort 
设置并返回端口号
void CMSComm::SetCommPort(short nNewValue)
short CMSComm::GetCommPort()

RThreshold 
在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,设置并返回要接收的字符数。达到设定值则触发OnComm。
void CMSComm::SetRThreshold(short nNewValue)
short CMSComm::GetRThreshold()


CTSHolding
确定是否可通过查询CTS线的状态发送数据。硬件握手的手工查询
void CMSComm::SetCTSHolding(BOOL bNewValue)
BOOL CMSComm::GetCTSHolding()

SThreshold 
在MSComm控件设置CommEvent属性为comEvSend并产生OnComm之前,设置并返回传输缓冲区中允许的最小字符数。
void CMSComm::SetSThreshold(short nNewValue)
short CMSComm::GetSTreshold()

Handshaking
设置或返回硬件握手状态,使用内部通信协议
void CMSComm::SetHandshaking(long nNewValue)
long CMSComm::GetHandshaking()

InputMode
设置或返回传输数据的类型
void CMSComm::SetInputMode(long nNewValue)
long CMSComm::GetInputMode()
DSRHolding
确定DSR线的状态。
void CMSComm::SetDSRHolding(BOOL bNewValue)
BOOL CMSComm::GetDSRHolding()

Settings
设置并返回波特率、奇偶校验、数据位、停止位参数
void CMSComm::SetSettings(LPCTSTR lpszNewValue)
CString CMSComm::GetSettings()
"BBBB,P,D,S"BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数
缺省值为"9600,N,8,1"

InputLen
设置并返回Input属性从接收缓冲区读取的字符数
void CMSComm::SetInputLen(short nNewValue)
short CMSComm::GetInputLen()
缺省值为0,使用Input将使MSComm控件读取接收缓冲区中的全部的内容。在使用Input前,可检查InBufferCount属性来确定缓冲区中是否已有需要数目的字符。此属性在从输出格式为定长数据的机器读取数据时非常有用。

InBufferSize
设置或返回输入缓冲区的大小
void CMSComm::SetInBufferSize(short nNewValue)
short CMSComm::GetInBufferSize()
默认为1024Byte

InBufferCount
设置或返回输入缓冲区内等待读取的字节个数
void CMSComm::SetInBufferCount(short nNewValue)
short CMSComm::GetInBufferCount()
当设置InBufferCount属性的值为0时,可以清空接收缓冲区(很有用的功能)

OutBufferSize
设置或返回发送缓冲区的大小
void CMSComm::SetOutBufferSize(short nNewValue)
short CMSComm::GetOutBufferSize()
默认为512字节。此值不能太小,否则缓冲区易溢出,但太大会不必要地占用内存。

OutBufferCount
返回发送缓冲区的字节数或者清空发送缓冲区
void CMSComm::SetOutBufferCount(short nNewValue)
short CMSComm::GetOutBufferCount()
设置值为0时清空发送缓冲区

InPut
从接收缓冲区内读出数据
VARIANT CMSComm::GetInPut()
返回为VARIANT型变量
当InPutMode为0时,检取数据为文本方式,变量中含有String型数据类型,当InPutMode为1时,检取数据为二进制方式,变量中含Byte数组型数据。

OutPut
向发送缓冲区写数据,或返回发送缓冲区当前的数据
void CMSComm::SetOutPut(const VARIANT&newValue)
VARIANT CMSComm::GetOutPut()

PortOpen
用于打开或关闭串口,或返回串口的开、关状态
void CMSComm::SetPortOpen(BOOL bNewValue)
BOOL CMSComm::GetPortOpen()
TURE打开串口,FALSE关闭串口,程序终止后,MSComm控件自动关闭串口

EOFEnable
确定在输入过程中MSComm控件是否寻找文件结尾EOF字符,如果找到EOF字符,将停止输入并激活OnComm事件,此时CommEvent属性设置为ComEvEOF
void CMSComm::SetEOFEnable(BOOL bNewValue)
BOOL CMSComm::GetEOFEnable()

DTREnalbe
设置或返回DTR线状态。
void CMSComm::SetDTREnable(BOOL bNewValue)
BOOL CMSComm::GetDTREnable()

RTSEnable
确定是否使RTS线有效
void CMSComm::SetRTSEnable(BOOL bNewValue)
BOOL CMSComm::GetRTSEnable()

Break
设置或清除中断信号的状态
void CMSComm::SetBreak(BOOL bNewValue)
BOOL CMSComm::GetBreak()

CommID
返回一个说明通信设备的句柄。
void CMSComm::SetCommID(long nNewValue)
long CMSComm::GetCommID()
该值与WindowsAPICreateFile函数返回的值一致。

NullDiscard
确定Null字符是否从端口传送到接收缓冲区
void CMSComm::SetNullDiscard(BOOL bNewValue)
BOOL CMSComm::GetNullDiscard()

OnComm事件和CommEvent属性
设置或返回无论何时当CommEvent属性的值变化时,就产生OnComm事件,标志发生了一个通信事件或一个错误。CommEvent属性值反映错误或者事件类型,通常在程序中的事件消息处理函数中对CommEvent事件进行处理。
void CMSComm::SetCommEvent(short nNewValue)
short CMSComm::GetCommEvent()
通常由函数GetCommEvent()得到当前事件值,再进行相应的处理。


分享到:
评论

相关推荐

    MSComm控件使用详解

    本文详细介绍了MSComm控件在串口编程中使用。 MSComm控件两种处理通讯的方式 CommPort属性 RThreshold 属性 CTSHolding 属性 SThreshold 属性 CDHolding 属性 DSRHolding 属性 Settings 属性 InputLen 属性 ...

    vs2010-MSCOMM控件与单片机通信实现温度显示

    这是一个基于vs2010开发平台用MSCOMM控件与单片机通信实现温度显示的编程代码,里面的内容是和郭天祥51单片机c语言编程对应的18章...里面还附有在VS(VC)2010中使用MSComm控件实现串口通信的详细步骤(网上找的)

    Visual C++_Turbo C 串口通信编程实践.(电子工业.龚建伟.熊光明) 第二版 电子版

    3.2.6 在MSComm控件串口编程时遇到的其他问题 63 3.3 在基于单文档(SDI)程序中应用MSComm控件 63 3.4 应用MSComm控件控制多个串口实例 69 3.5 串口与MODEM拨号应用简例 76 3.5.1 创建工程 76 3.5.2 代码分析 78 ...

    Visual C++/Turbo C串口通信编程实践及源代码-3

    3.2.6 在mscomm控件串口编程时遇到的其他问题 63 3.3 在基于单文档(sdi)程序中应用mscomm控件 63 3.4 应用mscomm控件控制多个串口实例 69 3.5 串口与modem拨号应用简例 76 3.5.1 创建工程 76 3.5.2 代码分析 ...

    visual C++_Turbo C串口通信编程实践

    3.2.7 在MSComm控件串口编程时遇到的其它问题说明 3.3在基于单文档(SDI)程序中应用MSComm控件 3.4应用MSComm控件控制多个串口实例 第4章 Windows API串口编程 4.1 Windows API串口编程概述 4.2 API串口...

    Visual C++/Turbo C串口通信编程实践 及源代码-1

    3.2.6 在mscomm控件串口编程时遇到的其他问题 63 3.3 在基于单文档(sdi)程序中应用mscomm控件 63 3.4 应用mscomm控件控制多个串口实例 69 3.5 串口与modem拨号应用简例 76 3.5.1 创建工程 76 3.5.2 代码分析 ...

    Visual C++/Turbo C串口通信编程实践及源代码-2

    3.2.6 在mscomm控件串口编程时遇到的其他问题 63 3.3 在基于单文档(sdi)程序中应用mscomm控件 63 3.4 应用mscomm控件控制多个串口实例 69 3.5 串口与modem拨号应用简例 76 3.5.1 创建工程 76 3.5.2 代码分析 ...

    Visual C++_Turbo C 串口通信编程实践.(电子工业.龚建伟.熊光明) 源码光盘

    3.2.6 在MSComm控件串口编程时遇到的其他问题 63 3.3 在基于单文档(SDI)程序中应用MSComm控件 63 3.4 应用MSComm控件控制多个串口实例 69 3.5 串口与MODEM拨号应用简例 76 3.5.1 创建工程 76 3.5.2 代码分析 78 ...

    Visual C++串口通信技术详解.(机械工业.李景峰.杨丽娜.潘恒)

    书中精选来自工程实践的应用范例,主要涵盖串口通信的理论基础、Visual c++集成开发环境简介、MSComm控件串口编程、Windows API串口编程、TAPI通信编程、串口实现双机互连、串口调试精灵、串口控制Modem设备、串口...

    Delphi串口及语音传真高级编程.(北航出版.温锦山.唐柱鹏)

     2.2.2 mscomm控件的安装  2.2.3 mscomm的主要属性和事件  2.2.4 mscomm32的使用例子  2.2.5 程控机计费系统的接收模块  2.3 tapi简介  2.3.1 关于tapi  2.3.2 tsp  2.3.3 ...

    Visual Basic 数据采集与串口通信测控应用实战(part1)

    内容包括在vb工程中调用activex控件和dll动态链接库等开发板卡数据采集与控制程序,在vb工程中利用mscomm控件、调用api函数等方法开发串口通信程序等。每种程序都提供了多个设计方法,每个设计都提供了线路图、详细...

    Visual Basic 数据采集与串口通信测控应用实战(part2)

    内容包括在vb工程中调用activex控件和dll动态链接库等开发板卡数据采集与控制程序,在vb工程中利用mscomm控件、调用api函数等方法开发串口通信程序等。每种程序都提供了多个设计方法,每个设计都提供了线路图、详细...

    串行通信接口程序设计

    串行接口的编程就是要通过程序的方式实现对UART寄存器的读写,并且相应...目前串行接口的程序设计大多采用两种方法,第一种方法是使用Active X控件MSComm;第二种方法是采用Windows API接口。本章分别介绍这两种方法。

    运载火箭桌面联试系统串口通信实现方法 (2003年)

    运载火箭桌面联试系统主要...指出了利用ActiveX控件MSComm和WindowSAPI函数进行串行通信的主要步骤及注意事项;阐述了联试系统串口通信的结构设计、硬件配置及其编程要点,对串口通信的学习和使用者具有一定的借鉴作用。

    Visual C++编程从基础到实践

    实例14-2:利用MSComm控件进行串口数据传输。源代码在光盘中“\14\MSComm”目录下。 实例14-3:简单的WinInet应用程序。源代码在光盘中“\14\SimpleNet”目录下。 实例15-1:创建Access数据库。源代码在光盘的“\15...

    Visual c++源代码

    实例14-2:利用MSComm控件进行串口数据传输。源代码在光盘中“\14\MSComm”目录下。 实例14-3:简单的WinInet应用程序。源代码在光盘中“\14\SimpleNet”目录下。 实例15-1:创建Access数据库。源代码在光盘的“\15...

Global site tag (gtag.js) - Google Analytics