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控件两种处理通讯的方式 CommPort属性 RThreshold 属性 CTSHolding 属性 SThreshold 属性 CDHolding 属性 DSRHolding 属性 Settings 属性 InputLen 属性 ...
这是一个基于vs2010开发平台用MSCOMM控件与单片机通信实现温度显示的编程代码,里面的内容是和郭天祥51单片机c语言编程对应的18章...里面还附有在VS(VC)2010中使用MSComm控件实现串口通信的详细步骤(网上找的)
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 ...
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 代码分析 ...
3.2.7 在MSComm控件串口编程时遇到的其它问题说明 3.3在基于单文档(SDI)程序中应用MSComm控件 3.4应用MSComm控件控制多个串口实例 第4章 Windows API串口编程 4.1 Windows API串口编程概述 4.2 API串口...
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 代码分析 ...
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 代码分析 ...
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++集成开发环境简介、MSComm控件串口编程、Windows API串口编程、TAPI通信编程、串口实现双机互连、串口调试精灵、串口控制Modem设备、串口...
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 ...
内容包括在vb工程中调用activex控件和dll动态链接库等开发板卡数据采集与控制程序,在vb工程中利用mscomm控件、调用api函数等方法开发串口通信程序等。每种程序都提供了多个设计方法,每个设计都提供了线路图、详细...
内容包括在vb工程中调用activex控件和dll动态链接库等开发板卡数据采集与控制程序,在vb工程中利用mscomm控件、调用api函数等方法开发串口通信程序等。每种程序都提供了多个设计方法,每个设计都提供了线路图、详细...
串行接口的编程就是要通过程序的方式实现对UART寄存器的读写,并且相应...目前串行接口的程序设计大多采用两种方法,第一种方法是使用Active X控件MSComm;第二种方法是采用Windows API接口。本章分别介绍这两种方法。
运载火箭桌面联试系统主要...指出了利用ActiveX控件MSComm和WindowSAPI函数进行串行通信的主要步骤及注意事项;阐述了联试系统串口通信的结构设计、硬件配置及其编程要点,对串口通信的学习和使用者具有一定的借鉴作用。
实例14-2:利用MSComm控件进行串口数据传输。源代码在光盘中“\14\MSComm”目录下。 实例14-3:简单的WinInet应用程序。源代码在光盘中“\14\SimpleNet”目录下。 实例15-1:创建Access数据库。源代码在光盘的“\15...
实例14-2:利用MSComm控件进行串口数据传输。源代码在光盘中“\14\MSComm”目录下。 实例14-3:简单的WinInet应用程序。源代码在光盘中“\14\SimpleNet”目录下。 实例15-1:创建Access数据库。源代码在光盘的“\15...