串口通信控件
在delphi7中利用mscomm控件串口通信编程
Application.ProcessMessages;
i := i + 1;
If i > 30000 Then
begin
showmessage('发送超时!');
break;
end;
Until bzw = true;
redata:=mscomm1.Input; 接收数据
restr:='';
for i:=0 to vararrayhighbound(redata,1) do
restr:=restr + inttohex(redata[i],2)+' ';
sendstr:='';
for i:=1 to 5 do
sendstr:=sendstr + senddata[i];
mscomm1.output:=sendstr; //发送数据
i:=0;
bzw:考人民邮电《DELPHI串口通信编程》
-其他例子均是网络搜索。
:在delphi7中利用mscomm控件编程
Mscomm是微软一个强大的串口通讯的控件,其强大,简单的特点今我们不舍,在delphi中我们也可以使用它。下面这些代码是针对发送和接收为16进制处理的。
var
senddata:array[1..10] of char;
end;
end;
mscomm1.PortOpen:=false;
flatmemo1.Text:=restr;
end;
//oncomm事件
procedure TForm1.MSComm1Comm(Sender: TObject);
vb串口通信控件-mscomm
vb串口通信控件-mscommMSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。
当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。
本文的两个例子均采用该方式。
另一种为查询方式,在用户程序中设计定时或不定时查询 MSComm控件的某些属性是否发生变化,从而确定相应处理。
在程序空闲时间较多时可以采用该方式。
常用属性和方法利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。
以下是MSComm控件的常用属性和方法:●Commport:设置或返回串口号。
●Settings:以字符串的形式设置或返回串口通信参数。
●Portopen:设置或返回串口状态。
●InputMode:设置或返回接收数据的类型。
●Inputlen:设置或返回一次从接收缓冲区中读取字节数。
●InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。
●InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。
●Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。
●OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。
●OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。
●Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。
●Rthreshold:该属性为一阀值。
当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。
用户可在OnComm事件处理程序中进行相应处理。
若Rthreshold属性设置为0,则不产生OnComm事件。
例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。
这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。
vb串口通讯usb通讯,很有用哦
OnComm:通信控件只提供了一个事件,该事件的触发可以对串口的通信事件及错误进行处理。通过对CommEvent 属性的判断可知当前的通信错误和事件,分别对每个CommEvent 值进行编程就完成了对各个错误和事件的处理。如:CommEvent = MSCOMM—EV—SEND 表示发送事件。这些信息可从VB 提供的常量文件CONSTANT. TXT中查出。
完成发送数据后的一系列操作。如:对刚发送的数据进行处理,当串口是和MODEM通信时,发送完数据后可进行拆除线路联接、挂机等操作。
RThreshold :设置并返回不触发OnComm事件时接收缓冲区被允许的最多字符数。当缓冲区的字符多于设置的值时,则触发OnComm 事件,并把CommEvent 设为MSCOMM—EV—RECEIVE,当RThreshold = 0 则禁止接收触发OnComm 事件,当RThreshold = 1 则接收缓冲区有一个或更多字符时就触发OnComm事件。利用这一属性,就可完成对串口接收数据的处理。
comm1. OutBufferSize = 512 ′设置发送缓冲区为512 字节 comm1. InBufferSize = 512 ′设置接收缓冲区为512 字节
comm1. SThreshold = 0 ′禁止发送事件
comm1. RThreshold = 1 ′每一个字符到接收缓冲区都触发接收事件 ′设置COM2
(2)属性
CommPort :设置通信控件与哪个串口相连接,设置并返回通信口号。 Setting :设置通信的信息格式,为字符型。顺序为:波特率、校验、数据位、停止位。
PortOpen :布尔型、开关通信口。
InputLen :从接收缓冲区读取字符个数。
用Activex实现串口通信
用Activex实现串口通信为实现Windows的串口通信可用API实现,但十分不便。
也可以用Active控件实现。
先在应用程序中插入Active控件Microsoft commcontronl(MSComm)。
SComm控件的属性MSComm控件的属性CommPort:设置串口号,类型 short :1-comm1 2-comm2.Settings:设置串口通讯参数,类型 CString :B-波特率 P-奇偶性(N-无校验,E-偶校验,O-奇验) D-字节有效位数S-停止位。
PortOpen:设置或返回串口状态,类型 BOOL:TURE-打开 FALSE-关闭。
InputMode:设置从接收缓冲区读取数据的格式,类型 long: 0-Text 1-Bin.Input:从接收缓冲区读取数据类型 VARIANT。
InBufferCount:接收缓冲区中的字节数,类型:short.InBufferSize:接收缓冲区的大小,类型:short.Output:向发送缓冲区写入数据,类型:VARIANT.OutBufferCount:发送缓冲区中的字节数,类型:short.OutBufferSize:发送缓冲区的大小,类型:short.InputLen:设置或返回Input读出的字节数,类型:short.CommEvent:串口事件,类型:short.程序示例串口初始化if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TURE); /*打开串口m_comm.SetSettings("4800,n,8,1"); /*串口参数设置m_comm.SetInputMode(0); /*设置TEXT缓冲区输入方式m_comm.SetRthresHold(1); /*每接收一个字符则激发OnComm()事件接收数据m_comm.SetInputLen(1); /*每次读取一个字符VARINAT V1=m_comm.GetInput(); /*读入字符m_V1=V1.bstrval;发送字符m_comm.SetOutput(COlevariant("Hello");/*发送“Hello"。
1C# SERIALPORT串口控件的使用
BaudRate
获取或设置串行波特率
BreakState
获取或设置中断信号状态
BytesToRead
获取接收缓冲区中数据的字节数
BytesToWrite
获取发送缓冲区中数据的字节数
CDHolding
获取端口的载波检测行的状态
CtsHolding
获取“可以发送”行的状态
DataBits
获取或设置每个字节的标准数据位长度
注意:用跳线使串口的第2、3针连接,可以在本地计算机上实现串口通信,所以,通过 串口的第2、3针的连接可以对程序进行检测。串口截面图如图13.2所示。
图13.2 串口截面图
实现过程
(1)新建一个项目,命名为 Ex13_01,默认窗体为 Form1。 (2)在 Form1窗体中,主要添加两个 Button 控件,分别用于执行发送数据和接受数据,添加 两个 TextBox 控件,用于输入发送数据和显示接收数据。 (3)主要程序代码。
DiscardNull
获取或设置一个值,该值指示 Null 字节在端口和接收缓冲区之 间传输时是否被忽略
DsrHolding
获取数据设置就绪 (DSR) 信号的状态
DtrEnable
获取或设置一个值,该值在串行通信过程中启用数据终端就绪 (DTR) 信号
Encoding
获取或设置传输前后文本转换的字节编码
的解决方式。
来源地:/jackeyrain/blog/item/f4e3ef1fa3272fcea68669c6.html
C# SerialPort 串口控件的使用 2010-10-27 11:07
现在大多数硬件设备均采用串口技术与计算机相连,因此串口的应用程序开发越来越 普遍。例如,在计算机没有安装网卡的情况下,将本机上的一些信息数据 传输到另一台计算 机上,那么利用串口通信就可以实现。运行本程序,在“发送数据”文本框中输入要传送的数 据,单击【发送】按钮,将传送的数据发送到所选择 的端口号中;单击【接收】按钮,传递 的数据被接收到“接收数据”文本框中。如图13.1所示。
VB6.0环境下利用Mscomm控件实现串行通信
VB6.0环境下利用Mscomm控件实现串行通信Use Mscomm Control Component to Implement Serial Communication under Visual Basic摘要: 本文简要介绍了VB6.0中Mscomm通信控件的属性和使用方法,并结合具体实例给出了基本的通信程序。
主题词:串行通信Visual Basic Mscomm .vbx控件Abstract: This paper briefly introduces the principle and method of Mscomm object of Visual basic 6.0, and with a real example basic program codes are given.Key Words:Serial Communication; Visual Basic; Mscomm .vbx control component随着计算机技术的飞速发展及其广泛应用,远程控制以及数据采集系统多采用上位机和下位机的主从工作方式,由于串行通信具有高效可靠、价格便宜,遵循统一的标准等特点,因而成为主要的通信手段。
微机的分析处理能力较强,有很好的人机界面和大容量的多种存储方式,所以上位机一般采用微机。
而单片机具有价格低,功能强,抗干扰能力好,温限宽和面向控制等特点,所以下位机采用单片机来构成主从式多机工作模式。
在需要对采集的数据进行分析处理或在远程需要对控制对象的控制过程进行统计或有条件控制时,采用数据库访问技术能有效地解决这类问题。
Visual Basic 6.0以其强大的功能、使用简单、能在短时间内开发出高效的通信程序而成为Windows系统开发的主要编程语言。
首先表现在VB可直接使用户自定义控件VBX或OCX文件;其次表现在VB可通过调用动态链接库(DLL,dynamic link library)来加快应用程序关键部分的执行速度。
C#串口通信:MSComm控件使用详解
C#串口通信:MSComm控件使用详解目次MSComm 控件两种处理通讯的方式CommPort 属性RThreshold 属性CTSHolding 属性SThreshold 属性CDHolding 属性DSRHolding 属性Settings 属性InputLen 属性EOFEnable 属性Handshake 常数OnComm 常数InputMode 常数错误消息MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi 等语言中均可使用。
Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD) 或Request To Send (RTS) 线上一个字符到达或一个变化发生时。
在这些情况下,可以利用MSComm 控件的OnComm 事件捕获并处理这些通讯事件。
OnComm 事件还可以检查和处理通讯错误。
所有通讯事件和通讯错误的列表,参阅CommEvent 属性。
在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。
这种方法的优点是程序响应及时,可靠性高。
每个MSComm 控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。
串口通信MSComm控件和SerialPort
一.概述输送带控制模块的核心技术是与PLC的串口通讯,在Visual Studio 6.0中编写串口通讯程序,一般都使用Microsoft Communication Control(简称MSComm)的通讯控件,只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。
但在技术广泛应用的今天,Visual S 没有将此控件加入控件库,所以人们采用了许多方法在Visual 来编写串口通讯程序:第一种方法是通过采用Visual Studio 6.0中原来的MSComm控件这是最简单的,最方便的方法,但需要注册;第二种方法是采用微软在.NET推出了一个串口控件,基于.NET的P/Invoke调用方法实现;第三种方法是自己用API写串口通信,虽然难度高,但可以方便实现自己想要的各种功能。
现在微软推出了最新版本的Visual Studio 2005开发工具,可以不再采用第三方控件的方法来设计串口通讯程序。
NET Framework 2.0类库包含了SerialPort类,方便地实现了所需要串口通讯的多种功能,为了使MSComm编程方法快速转换到以SerialPort类为核心的串口通讯的设计方法,这里着重讨论了Visual Studio 6.0的MSComm控件和SerialPort类设计方法的异同点。
二.SerialPort常用属性、方法和事件1.命名空间System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步I/O 和事件驱动的I/ O、对管脚和中断状态的访问以及对串行驱动程序属性的访问,所以在程序代码起始位置需加入Using Sys tem.IO.Ports。
2.串口的通讯参数串口通讯最常用的参数就是通讯端口号及通讯格式(波特率、数据位、停止位和校验位),在MSComm 中相关的属性是CommPort和Settings。
SerialPort类与MSComm有一些区别:✍通讯端口号[PortName]属性获取或设置通信端口,包括但不限于所有可用的COM 端口,请注意该属性返回类型为String,不是mPort的short类型。
VB串口通讯控件MSComm详解
VB串口通讯控件MSComm详解MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm 控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。
Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD) 或Request To Send (RTS) 线上一个字符到达或一个变化发生时。
在这些情况下,可以利用MSComm 控件的OnComm 事件捕获并处理这些通讯事件。
OnComm 事件还可以检查和处理通讯错误。
所有通讯事件和通讯错误的列表,参阅CommEvent 属性。
在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。
这种方法的优点是程序响应及时,可靠性高。
每个MSComm 控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。
1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
在程序的每个关键功能之后,可以通过检查CommEvent 属性的值来查询事件和错误。
如果应用程序较小,并且是自保持的,这种方法可能是更可取的。
例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
在VS(VC)2010中使用MSComm控件实现串口通信的详细步骤
// TODO: 在¨²此ä?添¬¨ª加¨®控?件t通ª¡§知a处ä|理¤¨ª程¨¬序¨°代䨲码? }
void CCommTestDlg::OnBnClickedButtonOpen() { // TODO: 在¨²此ä?添¬¨ª加¨®控?件t通ª¡§知a处ä|理¤¨ª程¨¬序¨°代䨲码? }
10. 添加关闭串口按钮的消息响应函数 void CCommTestDlg::OnBnClickedButtonClose() { // TODO: 在此添加控件通知处理程序代码 m_mscomm.put_PortOpen(FALSE);//关闭串口 AfxMessageBox(_T("串口 1 已关闭")); } 11. 添加发送按钮消息响应函数 void CCommTestDlg::OnBnClickedButtonSend() { // TODO: 在此添加控件通知处理程序代码 UpdateData(true); //读取编辑框内容 m_mscomm.put_Output(COleVariant(m_EditSend));//发送数据 m_EditSend.Empty(); //发送后清空输入框 UpdateData(false); //更新编辑框内容 } 12. 接收数据 void CCommTestDlg::OnCommMscomm1() { // TODO: 在此处添加消息处理程序代码 static unsigned int cnt=0; VARIANT variant_inp; COleSafeArray safearray_inp; long len,k; unsigned int data[1024]={0}; byte rxdata[1024]; //设置 BYTE 数组 CString strtemp; if(m_mscomm.get_CommEvent()==2) //值为 2 表示接收缓冲区内有字符 {
VaComm控件串口通信的研究与应用
Dei Na : 备名 称字 符串 ; v e me 设 c
Di c i : 否立 刻发数 ; rt t 是 e Wre
E ethr: 符触 发设 置 ; vn a 字 C s
E etr ry 事 件 优先级 ; v nPi i : ot T a o mE e t事 件开 启 控制 。其 中 : V C m vn : cB ek: 入停 止事 件 ; e ra 输
( V Co 1】a mm 组 件 属 性
Acv : f e 是否处 于激 活状 态 ;
A tOpn: 否 自动打 开 ; uo e 是
T a ada : 特 率 设 置 ; VB ure波 t
Wre et 写人 写缓 冲区 内全 部文本 。 iTx: t
( V B f r 件 属 性 2) a u e 组
P r m : 口 号 (~ 6 ; ot Nu 端 11 )
前 ,较 常 用 的 开 发 平 台 有 c+ bi e、 i a c+ 。 + ul r Vs l d u +
MS o C mm 串 口 控 件 是 Mirsf 司 提 供 的 在 简 化 coot公
Wid ws环 境 下 串 行 通 信 编 程 的 AcvX 控 件 , no i te MS o m 串 口控件 在 使 用时 需要 提 前 注册 ,且控 件 属 Cm 性 与触 发事 件较 为 简单 。T MS公 司推 出的 V C n 串 a o ml 口控 件有 效地 弥 补了 MS or 控 件 的上 述不 足 ,串 口 Cr ml 编程 时 不必 考虑 较 为 复杂 的 A I P 函数 l, 而大 大 提 高 从 3 】 了编 程效 率 。本 文 对 V Co m 串 口控 件进 行 了 深 入 的 a m
利用控件MSComm实现计算机的串口通信
机串并 口编程在传真 、 视频 和控 制等 。在 Widw 应用 程序 no s 的开发 中 , 常常需 要 面 临 与外 围数 据 源 设 备 通 信 的 问题 。一 般 多 是 利 用 控 件 MS o C mm设 计 相 应 的 串
∥} A X I C U E } F —N L D S
i df e A X— C MM E T L —H一 2 F B 4 — f! e nd( F S O T S D G i 一 2 2 16
6 C _ D5 8 0 _ 0 0 C F 8 A I L 9 2 l _ 7 E 0 E 4 3 7 C 1 NC UDE ) D
置并返 回波特率 、 奇偶校 验 、 据位 、 止位 ; o — 数 停 Pr t
Oe pn属性 , 能 : 置并 返 回通 讯 端 口的状 态 , 可 功 设 也
一
9 — 5
以打开 和关 闭端 口 ; pt I u 属性 , 能 : 接 收 缓 冲 区 n 功 从 内读 出数据 ; upt 性 , 能 : O tu 属 功 向传 输 缓 冲 区写 一 个字符 串 ] 。
cr e d t t C ar r ee ( D)或 rq etosn R S i c eu s t ed( T )线 上一
串行 通信 是 指 一 条 信 息 的 各 位 数 据 被 逐 位 按 顺序 传送 的通 信方 式 。 串行 通 信 的特 点 是 : 据 位 数 传送 按位 顺序 进行 , 最少 只需 要 一 根 传 输线 即 可完 成, 成本 低 、 送 速 度 慢 。 串行 通 信 的距 离 可 以从 传
目前 , 算 机 的 串 行 通 信 应 用 十 分 广 泛 , 计 串行 接 口已成 为 计 算 机 的必 须 部 件 和 接 口之 一 。计 算
VB6.0的MSComm通信控件应用举例
VB6.0的MSComm通信控件应用举例提要本文介绍了基于VB6.0的MSComm通信控件相关理论,并以一个实例演示了MSComm控件的主要属性。
关键词:串行通信;VB6.0;MSComm控件在当今这个科技飞速发展的时代,我们经常需要在计算机与其他设备之间进行通信,而串行通信作为一种灵活、方便、可靠的通信方式被广泛采用。
在开发串行通信程序的过程中,利用微软的MSComm通信控件相对比较简单,该控件具有丰富的与串行通信密切相关的属性及事件,提供了对串口的各种操作。
MSComm控件在VB中容易使用,在串口编程时也非常方便,程序员不必花时间去了解较为复杂的API函数。
一、用VB6.0进行串行通信程序的设计方法简介用visual basic6.0进行串行通信程序的设计有两种方式:(1)直接调用Windows API。
(2)使用通信组件。
该方式实际上是通过通信组件间接调用Windows API函数,其过程要比直接调用API要复杂,但在程序上容易实现。
使用MSComm控件时,实际上就是使用了API函数,API函数将被Comm.drv解释并传送给外围设备驱动程序,使用MSComm的用户只需要关心如何使用MSComm所提供的属性或事件,以驱动API函数的接口完成工作。
二、串行通信程序的执行过程MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
该控件提供了两种处理通信的方式:1、事件驱动通信。
事件驱动通信是处理串行端口交互作用的一种非常有效的方式。
在使用事件驱动通信时,每当有一个字符到达或端口状态发生改变,或发生错误时,MSComm控件将触发OnComm事件进行捕获,通过检查MSComm 控件的CommEvent属性获知所发生的事件或错误,从而采取相应的操作处理这些通信事件。
这种方法的优点是程序响应及时,可靠性高。
2、查询法。
该方法可以在程序的每个关键功能之后,通过检查CommEvent 属性的值来查询事件和错误。
毕业设计-VB中MSCOMM串行通信控件的使用方法
VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式级程序设计语言,可用于开发Windows 环境下的各类应用程序。
它简单易学、效率高,且功能强大可以与Windows 专业开发工具SDK相媲美。
在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发环境下功能强大、图形界面丰富的应用软件系统。
他的简单易学可以使我们快速实现自己想在Windows下的软件功能。
小则可以做计算器、上位机等符合自己需要的小软件;大则可以连接数据库做些管理系统,比如某公司的人事管理系统。
这里要说的是MSCOMM控件在VB中的使用方法。
MSComm 作为一个串行通讯控件为程序员串口通讯编程节省了很多时间。
在应用中加入一个MSComm控件非常简单。
在VB的常用控件里是没有MSCOMM控件的,我们可以通过工程部件勾取Microsoft comm control 6.0 来添加MSCOMM控件。
下面,让我们来了解其使用方法:1.串口通信基础知识一般悦来,计算机都有一个或多个串行端口,它们依次为com1、Com2、…,这些串口还提供了外部设备与PC进行数据传输和通信的通道。
这些串口在CPU和外设之间充当解释器的角色。
当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU,再进一步说,在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接收数据,当用通信控件或声明调用API函数时,它门由COMM. DRV解释并传递给设备驱动程序,作为一个VB程序员,要编写通信程序.只需知道通信控件提供给Windows通信AP1函数的接口即可.换句话说,只需设定和监视通信控件的属性和事件即可。
mscomm控件操作步骤
使用Mscomm串口控件之前应确保它已经在本机上安装且注册,VC串口通信技术网有文章介绍mscomm串口控件的注册方法,本站出售的资料“VC 串口通信资料集”也专门收到了此控件,不过在安装了VC后都会自动安装此控件,但是发布您的串口应用程序时就得考虑如何在目标计算上机上注册了,参考本站文章:串口控件MSCOMM的注册方法(使用MSCOMM串口控件程序的发布问题)。
Mscomm不仅是一个VC 串口控件,由于它是基于Activex的,所以也可以在VB、Deliph、C++ Builder等其它可以使用Activex控件的开发工具中使用,最重要的一点是它是微软官方的控件,所以有很多人在使用它。
下面介绍如何在VC6工程中使用mscomm串口控件。
1、建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest; 2、在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。
选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。
(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls 中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
C和串口通信方法SerialPort控件图文稿
C和串口通信方法S e r i a l P o r t控件文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]本例程主要讲解使用C#,实现与232串口通信。
达到采集串口数据,监控,可视化处理等。
一.概述在VisualStudio6.0中编写串口通讯程序,一般都使用MicrosoftCommunicationControl(简称MSComm)的通讯控件,只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。
但在技术广泛应用的今天,没有将此控件加入控件库,所以人们采用了许多方法在来编写串口通讯程序:第一种方法是通过采用VisualStudio6.0中原来的MSComm控件这是最简单的,最方便的方法,但需要注册;第二种方法是采用微软在.NET推出了一个串口控件,基于.NET的P/Invoke调用方法实现;第三种方法是自己用API写串口通信,虽然难度高,但可以方便实现自己想要的各种功能。
现在微软推出了最新版本的VisualStudio2005开发工具,可以不再采用第三方控件的方法来设计串口通讯程序。
NETFramework2.0类库包含了SerialPort类,方便地实现了所需要串口通讯的多种功能,为了使MSComm编程方法快速转换到以SerialPort类为核心的串口通讯的设计方法,本文着重讨论了VisualStudio6.0的MSComm控件和SerialPort类设计方法的异同点。
二.SerialPort常用属性、方法和事件1.命名空间同步I/O和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问,所以在程序代码起始位置需加入Using 2.串口的通讯参数串口通讯最常用的参数就是通讯端口号及通讯格式(波特率、数据位、停止位和校验位),在MSComm中相关的属性是CommPort和Settings。
SerialPort类与MSComm有一些区别:a.通讯端口号[PortName]属性获取或设置通信端口,包括但不限于所有可用的COM 端口,请注意该属性返回类型为String,不是mPort的short类型。
手把手教你labview串口通信(干货分享)
手把手教你labview串口通信我也是一个labview的初学者,这个例子介绍了一个最最简单的串口通信的上位机的例子。
单片机不断向串口发送数据。
上位机之显示串口发来的数据。
一.先在前面板添加一个VISA资源名称添加上之后前面板会出现在后面板会出现一.在后面板添加一个串口配置的控件接下来对对串口配置控件进行配置1.“启用终止符”-——-—-—-----配置布尔型变量“T”,就是取真.2.“终止符”--—-----———-我们不对其进行配置,选择默认终止符—-“\n”3。
’’超时'—--——-----为其配置10000的常量4。
资源名称与“VISA资源名称“控件相连接5。
波特率这里我们为其配置大小为“115200“的常量6。
其余各项不进行配置,默认系统设置上图为配置完成的结果二.接下来创建一个平铺式结构2.在平铺式顺序结构中添加一个延时控件ﻬ3.把串口配置控件的“错误输出“端、VISA资源名称输出端分别连接在平铺式顺序结构的两边上。
并给延时控件配置大小为100的常量。
如下图..三.1。
创建一个条件结构控件2.在条件结构控件中添加一个VISA读取控件3。
添加一个“VISA串口字节数“控件4。
将VISA串口字节数“控件”的“错误输入“端与上一环节中引出的”表示错误输出“的黄线连接。
5.将VISA串口字节数“控件”的“引用”端与上一环节中引出的代表VISA资源名称的线连接6. 将VISA串口字节数“控件”的“错误输出“端与“VISA 读取”控件的“错误输入"连接7.将VISA串口字节数“控件"的“引用输出“与“VISA 读取”控件的“VISA资源名称“的线连接。
..8。
字节数配置常量4,读者可根据自己数据大小任意配置。
四.1。
在条件结构外侧建立一个“VISA关闭“控件2.将VISA关闭“控件的错误输入、VISA资源名称端分别于“VISA读取”控件的对应端连接.3.建立一个简易错误处理器,将其错误输入端与串口关闭控件的错误输出端连接,如图,3.选择天剑结构控件“假”4。
MSCOMM控件的应用
MSCOMM 控件的应用出处:网络MSComm 控件为你的应用程序提供了串口通信的功能,它允许你通过串口来发送和接收数据。
MSComm 控件提供了以下的两种处理通讯的手段:事件驱动通讯是一个处理和串口交互强有力的方法。
在很多情况下,你想要一个事件发生的时间,例如:从CD(Carried Detect)或RTS(Request To Send)线到达一个字符或发生了改变。
在这种情况下,采用MSComm 控件的OnComm 事件来捕捉和处理这种通讯事件。
OnComm 事件也可以检测和处理通讯时发生的错误。
对于那些可能事件和通讯的错误,请参考CommEvent 属性。
你也可以通过检测CommEvent 属性的值来发现应用程序中的事件和出错。
每个MSComm 控件可以控制你和一个串口进行通讯。
如果需要通过应用程序访问更多的串口,必须使用更多的MSComm 控件。
端口地址和中断号可以由WINDOW S 中的控制面板来改变。
以下是MSComm 控件的主要属性:MSComm 控件属性input 属性说明:返回和设置从接收缓收区中得到的数据流。
在允许阶段该属性为只读。
不可更改语法:MSCommname.inputInput 属性、inputlen 属性和inputmode 属性是有关系的。
Inputlen 属性决定读取的字符个数。
当inputlen 属性为0时,用input 属性来读取数据时将讯取整个缓冲区中的数据。
Inputmode 属性是设置读取数据的类型。
当inputmode 属性被子设置为comin putmodetext 时,数据被读取并按照文本的形式存储在变量中;而当inputmode 属性设置为cominputmodebinary 时,则接收来的数据按照二进制形式存储在一个二进制数组中。
commevent 属性。
说明:返回最近的通讯事件和错误。
语法:mevent虽然oncomm事件在通讯错误和通讯事件发时都响应,但commevent属性为这些通讯事件和通讯错误保留出错数字码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
串口通信控件 Prepared on 22 November 2020附录A串行通信控件MSComm在VisualStudio(、VC++.NET、C#.NET)中编写串口通讯程序,一般都使用MicrosoftCommunicationControl(简称MSComm)的通讯控件,只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。
但在技术广泛应用的今天,VisualStudio没有将此控件加入控件库,所以人们采用了3种方法在VisualStudio中编写串口通讯程序:第一种方法是通过采用原来的MSComm控件,这是最简单的,最方便的方法,但需要注册(可以通过安装或VC++来实现);第二种方法是采用微软在.NET中推出的一个串口控件SerialPort,方便地实现所需要串口通讯的多种功能;第三种方法是用API函数进行串口通信,虽然难度高,但可以方便实现自己想要的各种功能。
一、MScomm控件的使用MSComm控件全称为MicrosoftCommunicationsControl,是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它既可以用来提供简单的串行端口通信功能,也可以用来创建功能完备的、事件驱动的高级通信工具。
MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在、VC++.NET、C#.NET等语言中均可使用。
使用它可以建立与串行端口的连接,通过串行端口连接到其它通信设备(例如调制解调器),发出命令,交换数据,以及监视和响应串行连接中发生的事件和错误。
利用它可以进行诸如拨打电话、监视串行端口的输入数据乃至创建功能完备的终端程序等。
1.MSComm控件处理通信的方式MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
它提供下列两种处理通信的方式:1)事件驱动方式该方式相当于一般程序设计中的中断方式。
当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。
它是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时程序会希望得到通知,例如,在串口接收缓冲区中有一个字符到达或一个变化发生时,程序都可以利用MSComm控件的OnComm事件捕获并处理这些通信事件;OnComm事件还可以检查和处理通信错误。
在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。
在程序设计中,可以在OnComm事件处理函数中加入自己的处理代码,一旦事件发生即可自动执行该段程序。
这种方法的优点是程序响应及时,可靠性高。
2)查询方式在程序的每个关键功能之后,在用户程序中设计定时或不定时的查询,通过检查CommEvent 属性的值来查询事件和错误,从而作出相应的处理。
在进行简单应用程序设计时可采用这种方法。
例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“OK ”响应。
查询方式的进行可用计时器Timer 或Do…Loop 程序实现。
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
2.MSComm 控件的引用开始一个项目的设计时,、VC++.NET 、C#.NET 的工具箱中会有许多默认的控件让设计者选用,这些原本就出现在工具箱中的控件是内置控件,它提供了一些基本的系统设计组件给设计者,不过,功能比较特别的控件就不会出现在其中,而用来设计通信功能的控件MSComm 就不在其中。
由于、VC++.NET 、C#.NET 的串行通信组件MSComm 并不会主动出现在工具箱里中,当我们需要MSComm 控件时,首先要把它加入到工具箱中。
让MSComm 控件出现在工具箱中的步骤如下:执行“工具”菜单下的“选择工具箱…”子菜单,在弹出的对话框中,选择“COM 组件”选项卡,选中“MicrosoftCommunicationControlversion6.0”复选框,如图A-1所示,单击“确定”按钮后,在工具箱“组件”栏中就出现了一个形似“电话”的图标,它就是MSComm 控件,如图A-2所示。
工具箱中有了MSComm 控件,就可以选择MSComm 控件的图标后将其加到程序窗体上,利用该控件PC 机就可以通过、VC++.NET 、C#.NET实现与串口设备的串口通信了。
如果打开的是以前的项目,项目中含有MSComm 控件的引用记录,则项目会自动去搜寻MSComm 控件,并将它载入,不需要以上的步骤。
每个使用的MSComm 控件对应着一个串行端口,如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。
3.MSComm 控件的常用属性 MSComm 控件的属性很多,这里介绍串口编程中经常用到的几个重要属性。
1)CommPort 属性语法:[=Value]作用:设置或返回通信端口号。
CommPort 属性值value 可以设置为1到16之间的任何整数值(缺省值为1)表示串口COM1,COM2...。
如果用PortOpen 属性打开一个并不存在的端口,MSComm 控件会产生错误68(设备无效)。
图A-1添加MSComm 控件 图A-2工具箱中的MSComm 控件注意:必须在打开端口之前设置CommPort属性。
例如:COM2上连接有一个调制解调器:=22)Input属性语法:作用:返回并删除接收缓冲区中的数据流。
InputLen属性确定被Input属性读取的字符数。
设置InputLen为0,则Input属性读取缓冲区中全部的内容。
例如:如果希望从接收缓冲区获取数据,并将其显示在一个文本框中,可以使用下面的代码:=该属性在设计时无效,在运行时为只读。
3)InputLen属性语法:[=value]作用:设置并返回Input属性从接收缓冲区读取的字符数。
Value是整型表达式,说明Input属性从接收缓冲区中读取的字符数。
说明:InputLen属性的缺省值是0。
设置InputLen为0时,使用Input将使MSComm 控件读取接收缓冲区中全部的内容。
若接收缓冲区中InputLen字符无效,Input属性返回一个零长度字符串("")。
在使用Input前,用户可以选择检查InBufferCount属性来确定缓冲区中是否已有需要数目的字符。
该属性在从输出格式为定长数据的机器读取数据时非常有用。
如果读取以定长的数据块的形式格式化了的数据时,则需要将该属性设置为合适的值。
例如:=10'当程序执行该指令时,只会读取10个字符。
4)InputMode属性语法:[=Value]作用:设置或返回接收数据的数据类型。
InputMode属性的Value值可以设置为如下常数:0-通过Input属性以文本方式取回传入的数据。
1-通过Input属性以二进制方式取回传入的数据。
例如:=1表示以二进制方式读取数据。
5)OutPut属性语法:[=Value]作用:向传输缓冲区写数据流。
Output属性可以传输文本数据或二进制数据。
用Output属性传输文本数据,必须定义一个包含一个字符串的Variant;发送二进制数据,必须传递一个包含字节数组的Variant到Output属性。
正常情况下,如果发送一个ANSI字符串到应用程序,可以以文本数据的形式发送;如果发送包含嵌入控制字符、Null字符等数据,要以二进制形式发送。
可用Output属性发送命令、文字字符串或Byte数组数据。
例如:="ATDT551-5555"'发送AT命令串="Thisisatextstring"'发送文本字符串该属性在设计时无效,在运行时为只读。
6)PortOpen属性语法:[=Value]作用:设置或返回通信端口的状态。
设置PortOpen属性为True即打开端口,设置为False则关闭端口,并清除接收和传输缓冲区。
当应用程序终止时,MSComm控件自动关闭串行端口。
在打开端口之前,确定CommPort属性设置为一个合法的端口。
如果CommPort属性设置为一个非法的端口,则当打开该端口时,MSComm控件产生错误68(设备无效)。
串行端口设备必须支持Settings属性当前的设置值。
如果Settings属性包含硬件不支持的通信设置值,硬件可能不会正常工作。
7)Settings属性语法:[=Value]作用:设置并返回通信参数。
值Value为String型,说明通信端口的设置值。
Settings属性可以用来指定波特率、奇偶校验、数据位数和停止位数。
奇偶校验设置为了进行数据校验,通常是不用的,并设置为“N”。
数据位数指定了代表一个数据块的比特数。
停止位指出了何时接收到一个完整数据块。
例如:="9600,N,8,1"'表示传输速率为9600bps,没有奇偶校验位,8位数据位,1位停止位。
注:1)起始位:在通信线上,没有数据传送时处于逻辑“1”状态。
当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。
起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。
因此,起始位所起的作用就是表示字符传送的开始。
2)数据位:当接收设备收到起始位后,紧接着就会收到数据位,数据位的个数可以是5、6、7或8位数据。
在字符数据传送的过程中,数据位从最低有效位开始传送。
3)奇偶校验位:数据位发送完之后,就可以发送奇偶校验位。
奇偶校验用于有限差错检验,通信双方在通信时约定一致的奇偶校验方式。
就数据传送而言,奇偶校验位是冗余位,但它表示数据的一种性质,这种性质用于检错,虽然有限但很容易实现。
4)停止位:在奇偶校验位或者数据位(无奇偶校验位时)之后是停止位。
它可以是1位、位或2位,停止位是一个字符数据的结束标志。
8)RThreshold属性语法:[=value]作用:OnComm事件发生之前,设置并返回接收缓冲区可接收的字符数。
Value是整型表达式,说明在产生OnComm事件之前要接收的字符数。
当接收字符后,若Rthreshold属性设置为0(缺省值)则不产生OnComm 事件;设置Rthreshold为1,接收缓冲区每收到一个字符都会使MSComm控件触发OnComm事件。
9)SThreshold属性语法:[=value]作用:OnComm事件发生之前,设置并返回发送缓冲区中允许的最小字符数。
Value是整形表达式,代表在OnComm事件产生之前在传输缓冲区中的最小字符数。
若设置SThreshold属性为0(缺省值),数据传输事件不会产生OnComm 事件;若设置Sthreshold属性为1,当传输缓冲区完全空时,MSComm控件产生OnComm事件。