📄 scmscomm.htm
字号:
<HTML><HEAD><TITLE>首页-串口通讯-基本知识-RS422引脚说明</TITLE>
<META content="Microsoft FrontPage 4.0" name=GENERATOR>
<meta name="keywords" content="roaringwind,roaringwind.best.163.com,啸峰工作室,龚建伟,串口调试助手,VC/C编程,移动机器人,matlab仿真">
<meta name="DESCRIPTION" content="串口、端口、网络通信技术,VC、C编程技术,轮式移动机器人控制相关技术,Matlab仿真及数据处理">
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<STYLE type=text/css>A:link {
COLOR: #006666; TEXT-DECORATION: none
}
A:visited {
COLOR: #006666; TEXT-DECORATION: none
}
A:active {
COLOR: #33cc00; TEXT-DECORATION: none
}
A:hover {
COLOR: #33cc00; TEXT-DECORATION: underline
}
BODY {
COLOR: #006666; FONT-FAMILY: 宋体; FONT-SIZE: 9pt
}
TABLE {
FONT-FAMILY: 宋体; FONT-SIZE: 9pt
}
.H1 {
FONT-SIZE: 9pt; LINE-HEIGHT: 9pt; align: center
}
TD {
FONT-FAMILY: "宋体", "Arial", "Times New Roman"; FONT-SIZE: 9pt
}
P {
FONT-FAMILY: "宋体", "Arial", "Times New Roman"; FONT-SIZE: 9pt
}
</STYLE>
<SCRIPT language=JavaScript>
<!--
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v3.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</SCRIPT>
<META content="Microsoft FrontPage 4.0" name=GENERATOR></HEAD>
<BODY leftMargin=0
topMargin=6 marginheight="0" marginwidth="0">
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 height=70 width=758 bgcolor="#33CCFF">
<TBODY>
<TR bgColor=#99cccc vAlign=center>
<TD align=middle height=60 width=151>
<p align="center"><a href="../index.htm"><img border="0" src="../picindex/roaringlogo.jpg" width="120" height="60"></a></p>
</TD>
<TD bgColor=#00CCFF height=60 width=475>
<p align="center"><img border="0" src="../picindex/coldfirexfs.gif" width="400" height="60">
<TD align=middle bgColor=#cbe4e4 height=60 width=132>
<DIV align=center>
<TABLE border=1
cellPadding=2 cellSpacing=2 height=60 width=68>
<TBODY>
<TR bgColor=#dfeeee>
<TD height=53 bgcolor="#33CCFF">
<DIV align=center>
<SCRIPT language=javascript>
<!---
today = new Date();
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
function initArray(){
this.length=initArray.arguments.length
for(var i=0;i<this.length;i++)
this[i+1]=initArray.arguments[i] }
var d=new initArray("<font color=red>星期天","星期一","星期二","星期三","星期四","星期五","<font color=GREEN>星期六");
document.write(today.getYear(),"年","<br>",today.getMonth()+1,"月",today.getDate(),"日</FONT>","<br>",d[today.getDay()+1]," "); //-->
</SCRIPT>
</DIV></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE>
<TABLE align=center background=../picindex/top.gif bgColor=#99cccc border=0
cellPadding=0 cellSpacing=0 height=22 width=758>
<TBODY>
<TR>
<TD height=23 width=25>
<DIV align=center></DIV></TD>
<TD height=23 width=74>
<DIV align=center>
<p align="center"><a href="../index.htm">首页</a></DIV></TD>
<TD height=23 width=18> </TD>
<TD height=23 width=73>
<p align="center"><a href="../article.htm" target="_blank">发表论文</a></TD>
<TD height=23 width=17> </TD>
<TD height=23 width=73>
<DIV align=center><a href="../myprogram.htm" target="_blank">自制软件</a></DIV></TD>
<TD height=23 width=17> </TD>
<TD height=23 width=74>
<DIV align=center><a href="../serialcomm.htm" target="_blank">串口通讯</a></DIV></TD>
<TD height=23 width=17> </TD>
<TD height=23 width=72>
<DIV align=center><a href="../vcandindex.htm" target="_blank">VC/C编程</a></DIV></TD>
<TD height=23 width=17> </TD>
<TD height=23 width=72>
<DIV align=center>网络通讯</DIV></TD>
<TD height=23 width=18> </TD>
<TD height=23 width=74>
<DIV align=center>机器人控制</DIV></TD>
<TD height=23 width=18> </TD>
<TD colSpan=2 height=23>
<DIV align=center><a href="../matlabindex.htm" target="_blank">MATLAB</a></DIV></TD>
<TD height=23 width=29> </TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0
width=758 height="443">
<TBODY>
<TR>
<TD align=middle bgColor=#cbe4e4 vAlign=top width=30 background="../picindex/bck_broad.gif" rowspan="2">
</TD>
<TD align=left vAlign=top
width=4 height="443" rowspan="2"> </TD>
<TD align=middle vAlign=top width=450 rowspan="2">
<TABLE border=0 cellPadding=1 cellSpacing=1 height=220 width=550>
<TBODY>
<tr>
<TD width=543>
<p align="center"><img border="0" src="../picindex/headline1.gif" width="480" height="3">
</TD>
</tr>
<tr>
<TD width=543>
<p align="center"><font size="4" color="#000000"> <b>MSComm控件使用详解</b></font></p>
<p align="left" style="margin-left: 0; margin-top: 8; margin-bottom: 8"><font color="#000000"><br>
龚建伟:这篇东西来不及好好整理,因有朋友经常提及,先放在这里,如果有必要,再详细理顺一下,更为详细的信息请去看MSDN。</font>
</p>
</TD>
</tr>
<tr>
<TD width="543">
<p align="center"><font color="#000000"><img border="0" src="../picindex/headline1.gif" width="480" height="3"></font></TD>
</tr>
<tr>
<TD width=100% valign="top" align="center">
<p align="left" style="margin-left: 0; margin-top: 8; margin-bottom: 8">
<font color="#000000">
<br>
摘要:本文详细介绍了MSComm控件在串口编程中使用。<br>
</font>
</p>
<p align="left" style="margin-left: 0; margin-top: 8; margin-bottom: 8"><font color="#000000">
<b><a name="目 次">目 次</a></b><br>
<a href="#1.MSComm控件两种处理通讯的方式">MSComm控件两种处理通讯的方式<br>
</a><a href="#CommPort属性">CommPort属性<br>
</a><a href="#RThreshold 属性">RThreshold 属性<br>
</a><a href="#CTSHolding 属性">CTSHolding 属性<br>
</a><a href="#SThreshold 属性">SThreshold 属性<br>
</a><a href="#CDHolding 属性">CDHolding 属性<br>
</a><a href="#DSRHolding 属性">DSRHolding 属性<br>
</a><a href="#Settings 属性">Settings 属性<br>
</a><a href="#InputLen 属性">InputLen 属性</a><br>
<a href="#EOFEnable 属性">EOFEnable 属性<br>
</a><br>
<a href="#Handshake 常数">Handshake 常数<br>
</a><a href="#OnComm 常数">OnComm 常数<br>
</a><a href="#错误消息">InputMode 常数<br>
错误消息<br>
</a><br>
<br>
MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。<font color="#040484" size="-1"> </font>Microsoft
Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。</font></p>
<p align="left" style="margin-left: 0; margin-top: 8; margin-bottom: 8"><a name="1.MSComm控件两种处理通讯的方式"><font color="#000000">1.MSComm控件两种处理通讯的方式</font></a></p>
<p align="left" style="margin-left: 0; margin-top: 8; margin-bottom: 8"><font color="#000000">MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 <br>
1.1 事件驱动方式</font></p>
<p align="left" style="margin-left: 0; margin-top: 8; margin-bottom: 8"><font color="#000000">事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。</font></p>
<p align="left" style="margin-left: 0; margin-top: 8; margin-bottom: 8"><font color="#000000">1.2
查询方式 </font></p>
<p align="left" style="margin-left: 0; margin-top: 8; margin-bottom: 8"><font color="#000000">查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 </font></p>
<p align="left" style="margin-left: 0; margin-top: 8; margin-bottom: 8"><font color="#000000">2.MSComm 控件的常用属性<br>
MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。<br>
CommPort 设置并返回通讯端口号。 <br>
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 <br>
PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 <br>
Input 从接收缓冲区返回和删除字符。 <br>
Output 向传输缓冲区写一个字符串。<br>
<br>
下面分别描述: <br>
<br>
<a name="CommPort属性"><b>CommPort属性</b></a> 设置并返回通讯端口号。<br>
语法 object.CommPort[value ] (value 一整型值,说明端口号。) <br>
说明 在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。但是如果用 PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效)。<br>
注意:必须在打开端口之前设置 CommPort 属性。<br>
<br>
<a name="RThreshold 属性"><b>RThreshold 属性</b></a>:在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -