MSComm控件的属性

MSComm控件的使用方法1-2 如果发送缓冲区中的字符比value 值小,则将CommEvent 属性设置为comEvSend,并产生OnComm 事件。这对小的自含程序可能比较常用。如果CommPort属性设置为无效的端口号,在你试图打开端口时,MSComm 控件将产生error68(Device unavailable)错误。如果你的硬件设备不支持Settings属性中的一些设置,则你的硬件工作或许不正确。当你使用奇偶校验位时,MSComm 控件将数据中所有设置(即“1”)的比特位相加,来检测结果的奇偶性(根据端口的奇偶设置)。 阅读详情

MSComm控件的属性
(必须要熟悉的几个——CommPort:设置并返回通信端口号;Setting:以字符串的形式设置并返回数据传输速率、奇偶校验、数据比特、停止比特;PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区定一个字符串)
1)CommPort属性
void SetCommPort(short nNewValue); short GetCommPort();
这一属性设置并返回连接的串行端口号,Windows将会利用该串口和外界通信。在设计时,nNewValue可以设置成从1~16的任何数(默认值为1)。但是如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。
注意:必须在打开端口之前设置CommPort属性。
2)Settings属性
void Settings(LPCTSTR lpszNewValue); String GetSettings();
该属性用于设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数。当端口打开时,如果value非法,则MSComm控件产生错误380(非法属性值)。其中lpszNewValue用字符串表示,由四个设置值组成,有如下的组成格式:
“BBBB,P,D,S”
BBBB为数据传输速率,P为奇偶校验,D为数据比特,S为停止比特。Value的默认值是:“9600,N,8,1”,数据传输速率合法值可以是110、300、600、1200、2400、4800、9600、14400、19200、28800、38400、56000、57600、115200、12800、25600。
奇偶校验值可以是设置为下表的任一值。
设定值 描述
E 偶校验(EVEN)
M 标号校验(MARK)
N 无校验(NONE)
O 奇校验(ODD)
S 空格校验(SPACE)
数据比特数可以是4、5、6、7、8。
停止比特数可以是1、1.5、2。
注意:只有当通信的双方的Settings属性值都一样时,通信连接才能生效。
3)Handshaking属性
这一属性用于设置或者返回硬件握手协议,也就是PC和通信设备之间为了控制流速而设定的内部协议。属性值可以设置为下表中的任一个。

设定值 值 描述
ComNone 0 默认值,无握手协议
comXOnXOff 1 XON/XOFF握手
ComRTS 2 RTS/CTS握手
comRtsXOnXOff 3 RTS/CTS和XON/XOFF握手皆可
4)RThreshold属性
void SetRThreshold(short nNewValue); short GetRThreshold();
在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,RThreshold属性设置并返回的要接收的字符数。这里nNewValue是short型参数,说明在产生OnComm事件之前要接收的字符数。
当接收字符后,若RThreshold属性设置为0(默认值)则不会产生OnComm事件。否则,该属性为一阈值,当接收缓冲区内字节个数达到或超过该值后就会产生OnComm事件,例如,设置RThreshold为1,接收缓冲区收到每一个字符都会使MSComm控件产生OnComm事件。
5)CTSHolding属性
void SetCTSHolding(BOOL bNewValue); BOOL GetCTSHolding();
其属性设定值如下表所示。
设定值 功能描述
TRUE CTS线为高电平
FALSE CTS线为低电平
该属性确定是否可通过查询CTS线的状态发送数据。CTS是调制解调器发送到相连计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。
如果CTS线为低电平(CTSHolding = FALSE)并且超时时,MSComm控件设置CommEvent属性为comEventCTSTO(Clear To Send Timeout)并产生OnComm事伯。CTS线用于RTS/CTS硬件握手。如果需要确定CTS线的状态,CTSHolding属性给出一种手工查询方法。
6)SThreshold属性
void SetSThreshold(short nNewValue); short GetSThreshold();
MSComm控件设置CommEvent属性为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字符数。这里nNewValue是short型数据,代表在OnComm事件产生之前在传输缓冲区中的最小字符数。
若设置Sthreshold属性为0(默认值),数据传输事件不会产生OnComm事件。若设置Sthreshold属性为0,当传输缓冲区完全空时,MSComm控件产生OnComm事件。如果在传输缓冲区的字符数小于value,CommEvent属性设置为comEvSend,并产生OnComm事件。comEvSend事件仅当字符数与Sthreshold交叉时被激活一次。例如,如果Sthreshold等于5,仅当在输出队列中字符数从5降到4时,comEvSend才发生。如果在输出队列中从没有比Sthreshold多的字符,comEvSend事件将绝不会发生。
7)InputMode属性
void SetInputMode(long nNewValue); long GetInputMode();
访属性用于设置或者返回传输数据的类型。其取值和基本含义如下表所示。
设定值 值 描述
ComInputModeText(缺省) 0 通过Input属性以文本方式取回数据
ComInputModeBinary 1 通过Input属性以二进制方式取回数据

8)InputLen属性
void SetInputLen(short nNewValue); short GetInputLen ();
该属性用于设置并返回Input属性从接收缓冲区读取的字符数。nNewValue是short型数值,说明Input属性从接收缓冲区中读取的字符数。
InputLen属性的默认值是0。当设置InputLen为0时,使用Input将使MSComm控件读取接收缓冲区中全部的内容。若接收缓冲区中InputLen字符无效,Input属性返回一个零长度字符串(“”)。在使用Input前,用户可以选择检查InBufferCount属性来确定缓冲区中是否已有需要数目的字符。该属性在从输出格式为定长数据的机器读取数据时非常有用。
9)InBuffersize属性
void SetBufferSize(short nNewValue); short GetInBufferSize();
InBuffersize属性用于设置或返回输入缓冲区的大小,默认值为1024字节。
10)InBufferCount属性
void SetInBufferCount(short nNewValue); short GetInBufferCount();
InBufferCount属性用于返回输入缓冲区内的等待读取的字节个数,可以通过该属性值为0来清除接收缓冲区。
11)Input属性
VARIANT GetInput();
Input属性表示从接收缓冲区移走一串字符,将缓冲区中收到的数据读入变量。属性值为VARIAN型变量。该属性在端口未打开时不可用,在运行时是只读的。
注意:当InputMode属性值 为0时(文本模式),变量中含String型数据。当InputMode属性值为1(二进制模式),变量中含Byte型数组数据。
12)PortOpen属性
void SetPortOpen(BOOL bNewValue); BOOL GetPortOpen();
PortOpen属性用于打开或者关闭端口。如果bNewValue设为TRUE,可以打开端口;设为FALSE时可以关闭端口。一般情况下在程序开始时打开端口,在程序结束时关闭端口。当应用程序终止时,MSComm控件将自动关闭串口。在打开端口前,确定CommPort属性调协为正确的端口号。而且,用户的串口设备必须支持Settings属性中的设置。如果硬件设备不支持Settings属性中的一些设置,则硬件工作或许不正确。
13)OutBuffersize属性
void SetOutBufferSize(short nNewValue);
OutBuffersize属性用于设置或者返回发送缓冲区的大小,值为整形表达式,表示传输缓冲区的字节数,默认值为512字节。对发送缓冲区设置得越大,应用程序可以使用的内存就越小。然而,如果发送缓冲区太小,缓冲区将会溢出,除非使用握手协议。
14)OutBufferCounter属性
void SetOutBufferSize(short nNewValue); short GetOutBufferSize();
OutBufferCounter属性用于返回发送缓冲区内等待发送的字节数,可以通过设置该属性为0来清空发送缓冲区。
15)Output属性
void SetOutput(const VARIANT & newValue);
Output属性用于向发送缓冲区写数据流。属性为VARIANT变量。该属性在端口未打开时不可用,在运行时只是写的。
注意:Output属性可以发送文本数据或二进制数据。传输文本数据时,应该将字符型 数据放入VARIANT变量中;传输二进制数据(即按字节传送)时,应将字节型数据放入VARIANT型变量中。如果通常给应用程序发送ANSI字符串,可以以文本方式发送。如果数据包含了内嵌控制字符、NULL字符等,必须将其作为二进制传递过去。
16)CommEvent属性
short GetCommEvent();
如果在通信过程中发生错误或事件,将会引发OnComm事件并且改变其属性值。CommEvent属性值反映错误或者事件类型,通信的设计中可以根据该属性值执行同的操作。该属性在端口未打开时不可用,在运行时是只读的。通信错误及通信事件的设定值分别如下两表所示。
通信错误设定值
设定值 值 描述
comEventBreak 1001 接收到中断信号
comEventCTSTO 1002 CTS超时
comEventDSRTO 1003 DSR超时
comEventFrame 1004 帧错误,硬件检测到一个帧出错,双方设置的格式不一致时,就会引发此错误
comEventOverrun 1006 端口超速。一个字符没有在下一个字符到达之前被硬件读取,该字符丢失
comEventCDTO 1007 数据检测超时
comEventRxOver 1008 接收缓冲区溢出
comEventRxParity 1009 奇偶校验错误
comEventTxFull 1010 传输缓冲区溢出,表明输出缓冲区已满,不能再将字符输出到缓冲区
comEventDCB 1011 检索端口、设备控制块(DCB)时的意外错误

通信事件设定值
设定值 值 描述
comEvSend 1 发送事件。发送缓冲区的内容少于SThreshold指定的值
comEvReceive 2 接收事件。接收缓冲区内字符数达到RThreshold值,该事件在缓冲区内数据被移走前将持续产生,利用此事件可编写接收数据的过程
comEvCTS 3 CTS线变化
comEvDSR 4 DSR线变化
comEvCD 5 CD线变化
comEvRing 6 振铃检测
comEvEOF 7 文件结束。接收数据中出现文件结束(ASCII 码26)字符

17)DTREnable属性
void SetDTREnable(BOOL bNewValue); BOOL GetDTREnable();
DTREnable属性确定在通信时是否使用DTR线有效,DTR是计算机发送到调制解调器的信号,表明计算机在等待数据传输。
18)RTSEnable属性
void SetRTSEnable(BOOL bNewValue); BOOL GetRTSEnable();
RTSEnable属性确定是否使用RTS线有效。一般情况下,由计算机发送RTS信号到连接的调制解调器,请求允许发送数据。
19)EOFEnable属性
void SetEOFEnable(BOOL bNewValue); BOOL GetEOFEnable();
EOFEnable属性确定在输入过程中MSComm控件是否寻找文件结尾(EOF)字符。如果找到EOF字符,将停止输入并激活OnComm事件,此时CommEvent属性设置为comEvEOF,这里bNewValue为布尔表达式,确定当找到EOF字符时,OnComm事件是否被激活。当bNewValue的设置值TRUE时,EOF字符找到时OnComm事件被激活。否则当VALUE值设为FALSE(默认)时,EOF字符找到时OnComm事件不被激活。
注意:当EOFEnable属性设置为FALSE时,OnComm控件将不在输入流中寻找EOF字符。
20)CDHolding属性
void SetCDHolding(BOOL bNewValue); BOOL GetCDHolding();
通过查询CD线的状态确定当前是否有传输。CD是从调制解调器发送到相连计算机的一个信号,指示调制解调器正在联机。该属性在设计时无效,在运行时为只读。属性的设置值为:当bNewValue为TRUE时,CD线为高电平;当bNewValue为FALSE时,CD线为低电平。注意当CD线为高电平(CDHolding=TRUE)且超时时,MSComm控件设置CommEvent属性为comEventCDTO(CD超时错误),并产生OnComm事件。
注意:在主机应用程序中捕获一个丢失的传输是特别重要的,例如一个公告板,因为呼叫者可以随时挂起(放弃传输)。CD也被称为Receive Line Signal Detect(RLSD)。
21)DSRHolding属性
void SetDSRHolding(BOOL bNewValue); BOOL GetDSRHolding();
确定DSR线的状态。DSR信号由调制解调器发送到相连计算机,指示作好操作准备。该属性在设计时无效,在运行时为只读。DSRHolding属性返回为TRUE时,表示DSR线高,返回FALSE时,表示DSR线低。当DSR线为高电平时(DSRHolding=TRUE)超时时,MSComm控件设置CommEvent属性为comEventDSRTO(数据准备超时)并产生OnComm事件。当为DTE(Data Terminal Equipment)机器写DSR/DTR握手例程时该属性是分有用的。

作者:blindpoint
主页:www.blindpoint.net

MFC串口通信(二)——使用MSComm控件实现串口通信   由于项目需要,最近在写一个简单的串口通信,基于MFC框架,写完之后特此回顾记录一下学习的过程: 串口通信主体框架 (1) 初始化界面(自动获取全部可用串口) (2) 打开串口 (读取串口号,初始化串口参数(波特率、校验位、数据位等),若串口已经打开则关闭串口) (3) 发送数据 (更新控件状态,进入MSComm事件驱动函数,读缓冲区,数据转换,更新编辑框成员函数,更新编辑框内容) (4) ... 阅读详情

相关推荐

MSComm串口通信-MSComm-控件详解

串口通讯

yygyyygy1233的博客 1702

MSComm控件属性大揭秘

MSComm控件的属性(必须要熟悉的几个——CommPort:设置并返回通信端口号;Setting:以字符串的形式设置并返回数据传输速率、奇偶校验、数据比特、停止比特;PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区定一个字符串)1)CommPort属性void SetCommPort(short nNewValu

foxphoenix的专栏 1498

MSComm 控件的Input 属性及InputMode 属性探究

MSComm 控件的Input 属性及InputMode 属性探究最近对MSComm 控件的Input 属性研究得出一些观点,提供给各位关心串口通信的爱好者。当设置MSComm 控件的InputMode 属性为comInputModeText时,串口是按返回接收到的ASCII码在MSComm 控件转换成Unicode码。以下代码可揭示上述结论:Option Explicit  

zdingyun的专栏 2万+

VS2019 MFC MSComm 串口通信例程基于MSComm控件

Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。 要使用ActiveX控件MSComm,程序员必须将其添加入工程。.........

lzc881012的博客 9890

《MSComm控件小结》

一:在Visual C++ 6.0集成开发环境下,可以通过三种方法实现串口通信: 1)运用MFC函数进行编程实现串口通信 2)运用MSComm控件进行编程实现串口通信 3)运用VC++运行库函数实现串口通信 在这三种方法中,MSComm—( Microsoft Communication Control )控件因使用简便而广受应用,它是Microsoft公司出品的一种ActiveX 控件。控

u011332687的专栏 3658

Win10下VB6.0开发之串口通信基础(一)控件属性篇

前言:VB串口通信的方法一般有两种:一是通过Windows的通信API进行通信;另一种是通过VB的标准控件MSComm来实现。这篇文章要讲的是上位机如何通过VB的串口控件MSComm和下位机进行串口通信的过程。 以下是给VB初学者推荐的两本书籍: 《Visual+Basic+6.0基础教程》 《Visual_Basic与RS-232串行通信控制》 其中,《Visual+Basic+6.0基础教...

qq_36749906的博客 6011

MSCOMM控件的属性

MSCOMM控件的属性l        CommPort :设置或返回端口代号。VB中有16个端口限制。MSComm1.CommPort=1        ‘使用Com1端口l        Setting :设置初始化参数。以字符串形式设置或传回连接速度,奇偶校验,数据位,停止位等4个参数。如“9600,N,8,1”,奇为O,偶为E。      MSComm1.Setting=”

打印/传真嵌入式开发--张志龙的专栏 2622

MSComm控件介绍

在MFC中进行串口通讯最简单的方法莫过于在对话框中使用MSComm控件了,MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem).还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工 、事件驱动的、高效实用的通信程序。 一、用MSComm控件通信 1.串口通信基础知识 一般悦来,计

cxq_1993的专栏 796

MSCOMM32控件的基本属性

  MSCOMM32控件的基本属性    MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程

北斗星上的尘 的专栏 2049

VC6.0 MFC MSComm串口控件详解

此文档详细介绍了VC6.0 MFC下MSComm串口控件的属性,对于用MFC写串口助手之类的程序有一定帮助

避开这些坑!RK3588安卓系统内置输入法的正确姿势(含.mk文件修改指南)

本文详细解析了在RK3588安卓系统定制中预置第三方输入法的完整流程与关键避坑指南。重点涵盖APK签名、Android.mk文件编写、系统默认输入法配置(使用adb ime list命令获取服务名)以及SeLinux策略适配等核心步骤,并指出RK3566/RK3568等兄弟平台的通用性与差异点,帮助开发者实现稳定、深度的系统集成。

tgb34567890的博客 437

MSComm控件的属性和事件

1、MSComm控件的属性和事件 (1)CommPort:用于设置并返回连接的串口号,Windows将使用该串口和外界通信。 (2)Settings:用于设置并返回数据传输的通信参数。例如设置值为“9600,n,8,<?xml:namespace prefix = st1 />1”时,表示数据传输速率为9600bit/s,没有奇偶校验,数据位是...

lixuezhi的专栏 1284

Xilinx FPGA MultiBoot实战:7Series与UltraScale的SPI Fallback配置详解

本文深入解析了Xilinx FPGA的MultiBoot(多启动)与Fallback(回退)功能,针对7系列与UltraScale/UltraScale+系列,提供了从约束文件编写、看门狗集成到镜像烧录的完整实战配置指南。文章重点对比了两个系列在SPI Fallback配置上的关键差异与注意事项,旨在帮助工程师构建高可靠、永不宕机的FPGA系统。

weixin_29197051的博客 547

mscomm控件的属性讲解(转贴)

MSCOMM32控件的基本属性    MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的A

guoguo1982的专栏 845

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

Time_1023的博客 1873

OPC UA 协议详解

OPC UA(统一架构)是新一代工业自动化标准通信协议,替代传统OPC Classic,具有跨平台、高安全性、标准化等优势。基于TCP协议,支持全平台部署,采用面向对象架构组织数据,提供实时读写、事件订阅、历史数据访问等功能。作为工业4.0核心协议,适用于智能制造、数字孪生等场景,能实现多品牌设备统一接入。相比Modbus和MQTT,OPC UA协议更规范安全但复杂度较高,是大型工业集群互联的主流选择。

eastyuxiao的专栏 727

MSComm的属性介绍及其内部处理机制

1.CSerialPort类和MSComm该怎么选择 这里首先要澄清一个疑问:为什么已经有了CSerialPort类,我们还要去研究MSComm控件?这是因为CSerialPort类有局限(非MODEM应用),要对MODEM进行控制,还需要对类进行改写。而MSComm控件是微软提供的,功能相对来说更完善,而且还可以对中文进行处理,所以熟悉MSComm是非常必要滴! 2.MSComm控件

沈春旭的博客 9483

OpenHarmony实战开发-如何实现文件分布式同步编辑

在分布式文件场景中,分布式设备管理包含了分布式设备搜索、分布式设备列表弹窗、远端设备拉起三部分。首先在分布式组网内搜索设备,然后把设备展示到分布式设备列表弹窗中,最后根据用户的选择拉起远端设备。两台设备组网的分布式场景是工作中常常需要的。这样的分布式场景有助于加快工作效率,减少工作中的冗余,本例将为大家介绍如何实现上述功能。​ (2)订阅分布式数据变化:通过this.distributedObject.on(‘status’, this.statusCallback)监听分布式数据对象的变更。

2401_82546228的博客 752

MSComm控件使用详解

     MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程

1286

上位机 寻边器 通讯实战

寻边器通讯接口实现 本文介绍了上位机与盖泽(Gazer)和JEL品牌寻边器的通讯接口实现方案。主要内容包括: 接口定义:创建了IAlignerOperation接口,定义了获取状态、控制运动、真空吸附等核心功能。 具体实现: 盖泽寻边器(GazerAlignerCjh):通过串口通讯,实现了回零、校准、移动位置等操作 JEL寻边器(JelAligner):同样基于串口通讯,包含错误处理、状态查询等功能 工厂模式:通过AlignerFactory工厂类根据设备品牌创建对应的实现对象。 设备加载:展示了如何在系

StevenChen的博客 377

dify upload存在SSRF漏洞

Dify 是一个用于构建 AI 应用程序的开源平台。

nnn2188185的博客 1479
上一篇: MSComm控件属性大揭秘
下一篇: .net如何实现页面间的参数传递
foxphoenix
博客等级 码龄24年 6粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值